scip-query 0.19.3 → 0.19.4

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 (268) hide show
  1. package/README.md +1 -1
  2. package/dist/augment-vue-worker.js +1 -1
  3. package/dist/{chunk-LSJDKJIB.js → chunk-25LPM4DG.js} +2 -2
  4. package/dist/chunk-2CTX5CMX.js +4 -0
  5. package/dist/chunk-2Y373BDD.js +2 -0
  6. package/dist/{chunk-24ET4VLC.js → chunk-2YU7I3QO.js} +2 -2
  7. package/dist/{chunk-QNO3QIMN.js → chunk-3MJ5YA4Y.js} +2 -2
  8. package/dist/{chunk-B26UX7ZD.js → chunk-3SVWW4PN.js} +2 -2
  9. package/dist/{chunk-WWCZCH7W.js → chunk-4333ETTV.js} +2 -2
  10. package/dist/{chunk-6EWBPAA3.js → chunk-4RSI5EMG.js} +2 -2
  11. package/dist/{chunk-CIYUFF24.js → chunk-4SALD7RU.js} +2 -2
  12. package/dist/{chunk-XWE7PZQH.js → chunk-4T3LTWUS.js} +2 -2
  13. package/dist/{chunk-34MLC6UI.js → chunk-4XTA5OMB.js} +2 -2
  14. package/dist/chunk-52ZYCAEO.js +2 -0
  15. package/dist/{chunk-SJ6XSCG7.js → chunk-54HA4ZXH.js} +2 -2
  16. package/dist/{chunk-J4MYRIYT.js → chunk-64RFXJT5.js} +2 -2
  17. package/dist/{chunk-FUFNRZFJ.js → chunk-6E7UTQY7.js} +2 -2
  18. package/dist/{chunk-PNESKY2Z.js → chunk-6NSFJYRC.js} +2 -2
  19. package/dist/{chunk-AOSFSYEA.js → chunk-7B3UPBVA.js} +2 -2
  20. package/dist/{chunk-4BUMNEYQ.js → chunk-7GXM52MI.js} +2 -2
  21. package/dist/{chunk-SOS256TP.js → chunk-A2EZV2UM.js} +2 -2
  22. package/dist/{chunk-6FIA5BEB.js → chunk-ABMYA4TN.js} +2 -2
  23. package/dist/{chunk-64QITTX7.js → chunk-B5NLK2B3.js} +2 -2
  24. package/dist/{chunk-OLG2YPLS.js → chunk-BTEE5NZQ.js} +2 -2
  25. package/dist/{chunk-MP43RX4O.js → chunk-C7NIYIQ4.js} +1 -1
  26. package/dist/{chunk-AEM24WSF.js → chunk-CFMXJPHH.js} +2 -2
  27. package/dist/{chunk-HHOJH3RJ.js → chunk-CNKAGUPL.js} +2 -2
  28. package/dist/{chunk-MQ2B33LQ.js → chunk-D4U5Q3FT.js} +2 -2
  29. package/dist/{chunk-YZXV3CU3.js → chunk-DGAGY7RJ.js} +1 -1
  30. package/dist/{chunk-FRXB74RQ.js → chunk-DLWR3NUU.js} +5 -5
  31. package/dist/{chunk-YGQBJUS6.js → chunk-DZ74OMG6.js} +2 -2
  32. package/dist/{chunk-APLNTJPJ.js → chunk-EOOJGLDU.js} +2 -2
  33. package/dist/{chunk-TYEGFDOP.js → chunk-F6O7AAC3.js} +2 -2
  34. package/dist/{chunk-HFBNIIZX.js → chunk-FECYOO5O.js} +2 -2
  35. package/dist/{chunk-AFVU2GB2.js → chunk-FWUUZTIO.js} +2 -2
  36. package/dist/{chunk-KMOMNTB4.js → chunk-GBQ5NYPR.js} +2 -2
  37. package/dist/{chunk-2ROSOG2I.js → chunk-GPBBJ5Y4.js} +2 -2
  38. package/dist/{chunk-IXAALOUP.js → chunk-H7UKLTWJ.js} +2 -2
  39. package/dist/{chunk-YILKXTIY.js → chunk-HEXVUYFQ.js} +2 -2
  40. package/dist/{chunk-J5XJWCB3.js → chunk-HKEHS2AS.js} +2 -2
  41. package/dist/{chunk-JRCJEHRG.js → chunk-I5AWSI2G.js} +2 -2
  42. package/dist/{chunk-XYBNOILR.js → chunk-I5RJM53C.js} +2 -2
  43. package/dist/{chunk-AD7WUFFT.js → chunk-IG7N5ZIK.js} +2 -2
  44. package/dist/{chunk-C3KCSAQ4.js → chunk-IUFDSKGG.js} +2 -2
  45. package/dist/{chunk-OQ6TCHBB.js → chunk-IZKFSVBV.js} +2 -2
  46. package/dist/{chunk-5OZCNAVM.js → chunk-J77UIT3I.js} +2 -2
  47. package/dist/{chunk-EGKWRX5I.js → chunk-K2ERX4UT.js} +2 -2
  48. package/dist/{chunk-FYE4PWWP.js → chunk-KP6XRY5Z.js} +2 -2
  49. package/dist/{chunk-FC5K7T35.js → chunk-L7SPDE73.js} +1 -1
  50. package/dist/{chunk-YGBHQOB2.js → chunk-LBMJEAEW.js} +2 -2
  51. package/dist/chunk-LHMNRHGV.js +3 -0
  52. package/dist/{chunk-5TZ2MQBG.js → chunk-M7AIS73L.js} +2 -2
  53. package/dist/{chunk-53SUJOJA.js → chunk-M7MTH5NR.js} +2 -2
  54. package/dist/{chunk-HNTLCR4F.js → chunk-MITTUCEH.js} +2 -2
  55. package/dist/{chunk-5GCAM4JE.js → chunk-MSWVMDAH.js} +6 -6
  56. package/dist/chunk-NH5ALKPW.js +2 -0
  57. package/dist/{chunk-EHU4TZJJ.js → chunk-NPKYOIFM.js} +3 -3
  58. package/dist/{chunk-XWJ3JYRG.js → chunk-NRCXJDHL.js} +2 -2
  59. package/dist/{chunk-5GOBZI34.js → chunk-NSS46APD.js} +2 -2
  60. package/dist/{chunk-5FUAFNMP.js → chunk-NZL2DBT7.js} +2 -2
  61. package/dist/{chunk-C3VQZFP2.js → chunk-OMPZHGHO.js} +2 -2
  62. package/dist/{chunk-XYNWAZ6J.js → chunk-P2PC2WGR.js} +2 -2
  63. package/dist/{chunk-CAKPEQZB.js → chunk-Q3AFUTGB.js} +2 -2
  64. package/dist/{chunk-ZJGZCBYT.js → chunk-Q4IIEGXJ.js} +2 -2
  65. package/dist/chunk-QDV6RDCP.js +4 -0
  66. package/dist/{chunk-FTRNGQGR.js → chunk-QGXBRIM5.js} +2 -2
  67. package/dist/{chunk-WXVGNFAO.js → chunk-QOKYJ33H.js} +1 -1
  68. package/dist/{chunk-FB6IKAKZ.js → chunk-QRGV2F7L.js} +2 -2
  69. package/dist/chunk-QVWS2VWZ.js +7 -0
  70. package/dist/{chunk-77IOFJVY.js → chunk-R4FQGQ4X.js} +2 -2
  71. package/dist/{chunk-4CZJ4YJB.js → chunk-RV2FQIX3.js} +2 -2
  72. package/dist/{chunk-4FMT4HPC.js → chunk-S44IULR6.js} +2 -2
  73. package/dist/{chunk-PCIFZHWS.js → chunk-SOAT6NLA.js} +2 -2
  74. package/dist/{chunk-TDUU63FC.js → chunk-STOL2BTL.js} +2 -2
  75. package/dist/chunk-SVLTAG5O.js +927 -0
  76. package/dist/{chunk-2WCXKANA.js → chunk-U6WNH5GC.js} +2 -2
  77. package/dist/chunk-U7DSEKOM.js +30 -0
  78. package/dist/{chunk-EII5ZHL2.js → chunk-UKZBVX4U.js} +2 -2
  79. package/dist/chunk-UOAV44HR.js +38 -0
  80. package/dist/{chunk-VIKEPD4D.js → chunk-VGRICIQI.js} +2 -2
  81. package/dist/{chunk-TOIS2VAI.js → chunk-VMNZB6WI.js} +2 -2
  82. package/dist/{chunk-JFO2UVQP.js → chunk-VTKGCT3V.js} +5 -5
  83. package/dist/{chunk-PJENL245.js → chunk-VXQNNXJE.js} +2 -2
  84. package/dist/{chunk-HAC5EI2T.js → chunk-WER3B7MI.js} +2 -2
  85. package/dist/{chunk-5OR4QRPR.js → chunk-WQTAC523.js} +2 -2
  86. package/dist/{chunk-GAE7WCBK.js → chunk-X6D5IC6I.js} +2 -2
  87. package/dist/{chunk-FBUNGRKI.js → chunk-XLTP42QA.js} +2 -2
  88. package/dist/chunk-XTX6QHOF.js +4 -0
  89. package/dist/{chunk-AYRHVJXW.js → chunk-XYADIZHU.js} +5 -5
  90. package/dist/{chunk-WAU7HVDI.js → chunk-YGAGTIDK.js} +2 -2
  91. package/dist/{chunk-IICQP2DY.js → chunk-YIJ7ZAA4.js} +3 -3
  92. package/dist/{chunk-EYF5HOUZ.js → chunk-YNRNA5LK.js} +2 -2
  93. package/dist/{chunk-QKW7ISEW.js → chunk-YVVCVR2L.js} +2 -2
  94. package/dist/{chunk-MRYPDVOS.js → chunk-ZAIILQNP.js} +3 -3
  95. package/dist/{chunk-Z7M7X3ZG.js → chunk-ZGZUZ7XE.js} +2 -2
  96. package/dist/{chunk-PTYQQHZM.js → chunk-ZXJYMGD3.js} +2 -2
  97. package/dist/cli.js +2 -2
  98. package/dist/{command-descriptors-QJEYYND2.js → command-descriptors-MFU4BCJ7.js} +55 -50
  99. package/dist/{config-types-BA3xLCfG.d.ts → config-types-D20KuvvZ.d.ts} +67 -0
  100. package/dist/{db-CzA-9_rL.d.ts → db-G_II8yXU.d.ts} +1 -1
  101. package/dist/diff-gate-types-C9BoYwYD.d.ts +10 -0
  102. package/dist/direct-navigation-MRMQFIRB.js +3 -0
  103. package/dist/{health-DYy13GAe.d.ts → health-oblXYgkF.d.ts} +1 -1
  104. package/dist/index.d.ts +2 -2
  105. package/dist/index.js +1 -1
  106. package/dist/queries/affected.d.ts +2 -2
  107. package/dist/queries/affected.js +1 -1
  108. package/dist/queries/architecture.d.ts +86 -4
  109. package/dist/queries/architecture.js +1 -1
  110. package/dist/queries/bottlenecks.d.ts +2 -2
  111. package/dist/queries/bottlenecks.js +1 -1
  112. package/dist/queries/by-kind.d.ts +2 -2
  113. package/dist/queries/by-kind.js +1 -1
  114. package/dist/queries/call-graph.d.ts +2 -2
  115. package/dist/queries/call-graph.js +1 -1
  116. package/dist/queries/change-surface.d.ts +2 -2
  117. package/dist/queries/change-surface.js +1 -1
  118. package/dist/queries/cleanup-plan.d.ts +2 -2
  119. package/dist/queries/cleanup-plan.js +1 -1
  120. package/dist/queries/co-change.d.ts +2 -2
  121. package/dist/queries/co-change.js +1 -1
  122. package/dist/queries/code.d.ts +2 -2
  123. package/dist/queries/code.js +1 -1
  124. package/dist/queries/complexity-hotspots.d.ts +2 -2
  125. package/dist/queries/complexity-hotspots.js +1 -1
  126. package/dist/queries/complexity.d.ts +2 -2
  127. package/dist/queries/complexity.js +1 -1
  128. package/dist/queries/convergence.d.ts +2 -2
  129. package/dist/queries/convergence.js +1 -1
  130. package/dist/queries/coupling.d.ts +2 -2
  131. package/dist/queries/coupling.js +1 -1
  132. package/dist/queries/cycles.d.ts +2 -2
  133. package/dist/queries/cycles.js +1 -1
  134. package/dist/queries/dataflow.d.ts +2 -2
  135. package/dist/queries/dataflow.js +1 -1
  136. package/dist/queries/dead.d.ts +2 -2
  137. package/dist/queries/dead.js +1 -1
  138. package/dist/queries/decorative-checkers.d.ts +2 -2
  139. package/dist/queries/decorative-checkers.js +1 -1
  140. package/dist/queries/deep-chains.d.ts +2 -2
  141. package/dist/queries/deep-chains.js +1 -1
  142. package/dist/queries/deps.d.ts +2 -2
  143. package/dist/queries/deps.js +1 -1
  144. package/dist/queries/diff-gate.d.ts +3 -3
  145. package/dist/queries/diff-gate.js +1 -1
  146. package/dist/queries/diff-impact.d.ts +4 -8
  147. package/dist/queries/diff-impact.js +1 -1
  148. package/dist/queries/doc-drift.d.ts +3 -3
  149. package/dist/queries/doc-drift.js +1 -1
  150. package/dist/queries/drift.d.ts +2 -2
  151. package/dist/queries/drift.js +1 -1
  152. package/dist/queries/duplicate-bodies.d.ts +2 -2
  153. package/dist/queries/duplicate-bodies.js +1 -1
  154. package/dist/queries/extract-candidates.d.ts +2 -2
  155. package/dist/queries/extract-candidates.js +1 -1
  156. package/dist/queries/fan.d.ts +2 -2
  157. package/dist/queries/fan.js +1 -1
  158. package/dist/queries/files.d.ts +2 -2
  159. package/dist/queries/health.d.ts +3 -3
  160. package/dist/queries/health.js +1 -1
  161. package/dist/queries/hierarchy.d.ts +2 -2
  162. package/dist/queries/hierarchy.js +1 -1
  163. package/dist/queries/hotspots.d.ts +2 -2
  164. package/dist/queries/hotspots.js +1 -1
  165. package/dist/queries/imports.d.ts +2 -2
  166. package/dist/queries/imports.js +1 -1
  167. package/dist/queries/incomplete-migration.d.ts +3 -2
  168. package/dist/queries/incomplete-migration.js +1 -1
  169. package/dist/queries/index.d.ts +21 -5
  170. package/dist/queries/index.js +1 -1
  171. package/dist/queries/isolated.d.ts +2 -2
  172. package/dist/queries/isolated.js +1 -1
  173. package/dist/queries/locality-candidates.d.ts +2 -2
  174. package/dist/queries/locality-candidates.js +1 -1
  175. package/dist/queries/members.d.ts +2 -2
  176. package/dist/queries/members.js +1 -1
  177. package/dist/queries/methods.d.ts +2 -2
  178. package/dist/queries/methods.js +1 -1
  179. package/dist/queries/not-implemented.d.ts +2 -2
  180. package/dist/queries/not-implemented.js +1 -1
  181. package/dist/queries/outline.d.ts +2 -2
  182. package/dist/queries/outline.js +1 -1
  183. package/dist/queries/passthrough-candidates.d.ts +2 -2
  184. package/dist/queries/passthrough-candidates.js +1 -1
  185. package/dist/queries/plan-context.d.ts +2 -2
  186. package/dist/queries/plan-context.js +1 -1
  187. package/dist/queries/react-component-duplicates.d.ts +2 -2
  188. package/dist/queries/react-component-duplicates.js +1 -1
  189. package/dist/queries/react-hook-candidates.d.ts +2 -2
  190. package/dist/queries/react-hook-candidates.js +1 -1
  191. package/dist/queries/react-large-component-pressure.d.ts +2 -2
  192. package/dist/queries/react-large-component-pressure.js +1 -1
  193. package/dist/queries/recent-duplicates.d.ts +2 -2
  194. package/dist/queries/recent-duplicates.js +1 -1
  195. package/dist/queries/redundant-reexports.d.ts +2 -2
  196. package/dist/queries/redundant-reexports.js +1 -1
  197. package/dist/queries/refs.d.ts +2 -2
  198. package/dist/queries/refs.js +1 -1
  199. package/dist/queries/self-audit.d.ts +2 -2
  200. package/dist/queries/self-audit.js +1 -1
  201. package/dist/queries/similar-chains.d.ts +2 -2
  202. package/dist/queries/similar-chains.js +1 -1
  203. package/dist/queries/similar-files.d.ts +2 -2
  204. package/dist/queries/similar-files.js +1 -1
  205. package/dist/queries/similar-signatures.d.ts +2 -2
  206. package/dist/queries/similar-signatures.js +1 -1
  207. package/dist/queries/similar.d.ts +2 -2
  208. package/dist/queries/similar.js +1 -1
  209. package/dist/queries/slice.d.ts +2 -2
  210. package/dist/queries/slice.js +1 -1
  211. package/dist/queries/stale-abstractions.d.ts +2 -2
  212. package/dist/queries/stale-abstractions.js +1 -1
  213. package/dist/queries/stats.d.ts +2 -2
  214. package/dist/queries/surface.d.ts +2 -2
  215. package/dist/queries/surface.js +1 -1
  216. package/dist/queries/symbols.d.ts +2 -2
  217. package/dist/queries/symbols.js +1 -1
  218. package/dist/queries/system.d.ts +2 -2
  219. package/dist/queries/system.js +1 -1
  220. package/dist/queries/test-quality.d.ts +2 -2
  221. package/dist/queries/test-quality.js +1 -1
  222. package/dist/queries/trace.d.ts +2 -2
  223. package/dist/queries/trace.js +1 -1
  224. package/dist/queries/twin-ab.d.ts +2 -2
  225. package/dist/queries/twin-ab.js +1 -1
  226. package/dist/queries/twin-drift.d.ts +2 -2
  227. package/dist/queries/twin-drift.js +1 -1
  228. package/dist/queries/unused-imports.d.ts +2 -2
  229. package/dist/queries/unused-imports.js +1 -1
  230. package/dist/queries/unused-params.d.ts +2 -2
  231. package/dist/queries/unused-params.js +1 -1
  232. package/dist/queries/vue-component-duplicates.d.ts +2 -2
  233. package/dist/queries/vue-component-duplicates.js +1 -1
  234. package/dist/queries/vue-composable-candidates.d.ts +2 -2
  235. package/dist/queries/vue-composable-candidates.js +1 -1
  236. package/dist/queries/vue-large-view-pressure.d.ts +2 -2
  237. package/dist/queries/vue-large-view-pressure.js +1 -1
  238. package/dist/queries/wrapper-candidates.d.ts +2 -2
  239. package/dist/queries/wrapper-candidates.js +1 -1
  240. package/dist/reindex-worker.js +7 -7
  241. package/dist/reindex.d.ts +3 -3
  242. package/dist/reindex.js +1 -1
  243. package/dist/runtime.d.ts +3 -3
  244. package/dist/runtime.js +2 -2
  245. package/dist/rust-semantic-session-worker.js +1 -1
  246. package/dist/rust-semantic-worker.js +1 -1
  247. package/dist/{scip-cli-1bVKJgXi.d.ts → scip-cli-kRpaexVJ.d.ts} +1 -1
  248. package/dist/watch-server.js +4 -4
  249. package/docs/AI_FAILURE_MODES.md +1 -1
  250. package/docs/COMMAND_REFERENCE.md +1 -1
  251. package/docs/DETECTOR_GUIDE.md +1 -1
  252. package/docs/analyzer-inventory.md +1 -1
  253. package/docs/analyzer-validation-ledger.md +131 -1
  254. package/docs/architecture-coherence-vision.md +29 -0
  255. package/package.json +2 -2
  256. package/dist/chunk-26JI77AY.js +0 -927
  257. package/dist/chunk-2E7QY4B5.js +0 -7
  258. package/dist/chunk-33RLKB6L.js +0 -4
  259. package/dist/chunk-DO775SYA.js +0 -2
  260. package/dist/chunk-HCSTQGQE.js +0 -4
  261. package/dist/chunk-NLNZK7RL.js +0 -5
  262. package/dist/chunk-OAM22BCR.js +0 -2
  263. package/dist/chunk-PLDIXTKR.js +0 -38
  264. package/dist/chunk-UJKZQLDB.js +0 -2
  265. package/dist/chunk-WFWQWQK6.js +0 -3
  266. package/dist/chunk-XAMVIPE2.js +0 -29
  267. package/dist/diff-gate-types-CG2YQ_ei.d.ts +0 -4
  268. package/dist/direct-navigation-TT23TDBS.js +0 -3
@@ -0,0 +1,927 @@
1
+ #!/usr/bin/env node
2
+ import{createHash as Uv}from"crypto";import{existsSync as Wv,mkdirSync as Gv,readFileSync as zv}from"fs";import{dirname as Ec,join as Km}from"path";import Dc from"better-sqlite3";var Vm=[];function mn(e){e.groups.length>0&&Vm.push(e)}function wc(e,t){let n=new Set(t.groups);for(let r of Vm)r.groups.some(i=>n.has(i))&&(t.file!==void 0&&r.clearFile?r.clearFile(e,t.file):r.clearAll(e))}function qm(){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 j(e,t){let{cache:n,ensure:r}=qm(),i={get(o,s,a){let c=r(o);if(c.has(s))return c.get(s);let l=a();return c.set(s,l),l},invalidate(o,s){n.get(o)?.delete(s)},invalidateAll(o){n.delete(o)},size(o){return n.get(o)?.size??0}};return mn({name:e,groups:t.clearGroups,clearAll:o=>i.invalidateAll(o),clearFile:(o,s)=>i.invalidate(o,s)}),i}function X(e,t){let n=new WeakMap,r={get(i,o){let s=n.get(i);if(s)return s.value;let a=o();return n.set(i,{value:a}),a},invalidate(i){n.delete(i)},has(i){return n.has(i)}};return mn({name:e,groups:t.clearGroups,clearAll:i=>r.invalidate(i)}),r}var Hv={clearGroups:["whole-project","source-file"]};function fn(e){return On(e,Hv)}function On(e,t){let{cache:n,ensure:r}=qm(),i={get(o,s,a,c){let l=r(o),u=l.get(s);if(u&&u.source===a)return u.value;let d=c();return l.set(s,{source:a,value:d}),d},invalidate(o,s){n.get(o)?.delete(s)},invalidateAll(o){n.delete(o)}};return mn({name:e,groups:t.clearGroups,clearAll:o=>i.invalidateAll(o),clearFile:(o,s)=>i.invalidate(o,s)}),i}var Vv="evidence.db";var qv=["source-facts","definition-exclusions","doc-path-tokens","react-component-behavior-profiles"],Pc=new Set(qv),Kv=25e4,Jv=512*1024*1024,Yv=5e3,Bo=new WeakMap,Xv=j("evidence-content-hash",{clearGroups:["whole-project","source-file"]}),Qv=j("evidence-project-fingerprint",{clearGroups:["whole-project"]}),nt="evidence-v1",pr="version NOT LIKE 'evidence-%'";function he(e){return Uv("sha256").update(e).digest("hex")}function ce(e,t,n){return Xv.get(e,t,()=>he(n))}function Te(e){return Qv.get(e,"current",()=>{try{let t=JSON.parse(zv(Km(Ec(e.config.dbPath),"meta.json"),"utf-8"));if(t.version!==2&&t.version!==3||t.status!=="complete"&&t.status!=="partial"||t.fingerprint===void 0)return null;let n=Array.isArray(t.indexedLanguages)?[...t.indexedLanguages].sort():[];return he(JSON.stringify({fingerprint:t.fingerprint,indexedLanguages:n,status:t.status}))}catch(t){return gr("project fingerprint unavailable",t),null}})}function gr(e,t){process.env.SCIP_QUERY_DEBUG&&console.error(`evidence-cache: ${e}: ${t instanceof Error?t.message:String(t)}`)}function ht(e){if(Bo.has(e))return Bo.get(e)??null;let t=null;try{let n=new Dc(Km(Ec(e.config.dbPath),Vv));n.pragma("journal_mode = WAL"),n.pragma("busy_timeout = 5000"),n.pragma("synchronous = NORMAL"),n.exec(`
3
+ CREATE TABLE IF NOT EXISTS file_evidence (
4
+ kind TEXT NOT NULL,
5
+ relative_path TEXT NOT NULL,
6
+ content_hash TEXT NOT NULL,
7
+ version TEXT NOT NULL,
8
+ payload TEXT NOT NULL,
9
+ PRIMARY KEY (kind, relative_path)
10
+ );
11
+ CREATE TABLE IF NOT EXISTS project_evidence (
12
+ kind TEXT NOT NULL,
13
+ cache_key TEXT NOT NULL,
14
+ project_fingerprint TEXT NOT NULL,
15
+ version TEXT NOT NULL,
16
+ payload TEXT NOT NULL,
17
+ PRIMARY KEY (kind, cache_key)
18
+ );
19
+ CREATE TABLE IF NOT EXISTS semantic_callees (
20
+ relative_path TEXT NOT NULL,
21
+ symbol TEXT NOT NULL,
22
+ content_hash TEXT NOT NULL,
23
+ deps_digest TEXT NOT NULL,
24
+ version TEXT NOT NULL,
25
+ payload TEXT NOT NULL,
26
+ PRIMARY KEY (relative_path, symbol)
27
+ );
28
+ CREATE TABLE IF NOT EXISTS semantic_references (
29
+ relative_path TEXT NOT NULL,
30
+ symbol TEXT NOT NULL,
31
+ project_fingerprint TEXT NOT NULL,
32
+ version TEXT NOT NULL,
33
+ payload TEXT NOT NULL,
34
+ PRIMARY KEY (relative_path, symbol)
35
+ );
36
+ CREATE TABLE IF NOT EXISTS finding_outcome_ledger (
37
+ check_name TEXT NOT NULL,
38
+ finding_id TEXT NOT NULL,
39
+ first_seen INTEGER NOT NULL,
40
+ last_seen INTEGER NOT NULL,
41
+ times_shown INTEGER NOT NULL,
42
+ outcome TEXT NOT NULL,
43
+ PRIMARY KEY (check_name, finding_id)
44
+ );
45
+ `),t={evidence:n,shared:Zv(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
46
+ WHERE kind = ? AND relative_path = ? AND content_hash = ? AND ${pr}
47
+ ORDER BY version DESC
48
+ 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
49
+ WHERE kind = ? AND cache_key = ? AND project_fingerprint = ? AND ${pr}
50
+ ORDER BY version DESC
51
+ 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
52
+ WHERE relative_path = ? AND symbol = ? AND content_hash = ? AND deps_digest = ? AND version = ?`),readLegacyCallees:n.prepare(`SELECT payload FROM semantic_callees
53
+ WHERE relative_path = ? AND symbol = ? AND content_hash = ? AND deps_digest = ? AND ${pr}
54
+ ORDER BY version DESC
55
+ LIMIT 1`),readCalleesForFile:n.prepare(`SELECT symbol, payload FROM semantic_callees
56
+ WHERE relative_path = ? AND content_hash = ? AND deps_digest = ? AND version = ?`),readLegacyCalleesForFile:n.prepare(`SELECT symbol, payload FROM semantic_callees
57
+ WHERE relative_path = ? AND content_hash = ? AND deps_digest = ? AND ${pr}
58
+ ORDER BY symbol, version DESC`),writeCallees:n.prepare(`INSERT OR REPLACE INTO semantic_callees
59
+ (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
60
+ WHERE relative_path = ? AND symbol = ? AND project_fingerprint = ? AND version = ?`),readLegacyReferences:n.prepare(`SELECT payload FROM semantic_references
61
+ WHERE relative_path = ? AND symbol = ? AND project_fingerprint = ? AND ${pr}
62
+ ORDER BY version DESC
63
+ LIMIT 1`),readReferencesForFile:n.prepare(`SELECT symbol, payload FROM semantic_references
64
+ WHERE relative_path = ? AND project_fingerprint = ? AND version = ?`),readLegacyReferencesForFile:n.prepare(`SELECT symbol, payload FROM semantic_references
65
+ WHERE relative_path = ? AND project_fingerprint = ? AND ${pr}
66
+ ORDER BY symbol, version DESC`),writeReferences:n.prepare(`INSERT OR REPLACE INTO semantic_references
67
+ (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"),deleteFindingOutcomeLedgerForCheck:n.prepare("DELETE FROM finding_outcome_ledger WHERE check_name = ?"),writeFindingOutcomeLedgerRow:n.prepare(`INSERT INTO finding_outcome_ledger
68
+ (check_name, finding_id, first_seen, last_seen, times_shown, outcome) VALUES (?, ?, ?, ?, ?, ?)`)}}catch(n){gr("disabled (open failed)",n)}return Bo.set(e,t),t}function yt(e,t,n){gr(`disabled (${t})`,n),Bo.set(e,null)}function Zv(e){if(!e)return null;try{Gv(Ec(e),{recursive:!0});let t=new Dc(e);return t.pragma("journal_mode = WAL"),t.pragma("busy_timeout = 250"),t.pragma("synchronous = NORMAL"),t.exec(`
69
+ CREATE TABLE IF NOT EXISTS file_evidence (
70
+ kind TEXT NOT NULL,
71
+ relative_path TEXT NOT NULL,
72
+ content_hash TEXT NOT NULL,
73
+ version TEXT NOT NULL,
74
+ payload TEXT NOT NULL,
75
+ last_accessed_at INTEGER NOT NULL,
76
+ PRIMARY KEY (kind, relative_path, content_hash, version)
77
+ );
78
+ `),{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)
79
+ VALUES (?, ?, ?, ?, ?, ?)
80
+ ON CONFLICT(kind, relative_path, content_hash, version)
81
+ DO UPDATE SET payload = excluded.payload, last_accessed_at = excluded.last_accessed_at`)}}catch(t){return gr("shared cache disabled (open failed)",t),null}}function kc(e,t,n){gr(`shared cache disabled (${t})`,n);try{e.shared?.evidence.close()}catch{}e.shared=null}function QY(e,t={}){if(!Wv(e))return null;let n;try{n=new Dc(e),n.pragma("busy_timeout = 50"),n.pragma("wal_checkpoint(TRUNCATE)");let r=n.prepare("SELECT COUNT(*) AS count FROM file_evidence").get().count,i=t.maxRows??Kv,o=t.budgetBytes??Jv,s=Number(n.pragma("page_size",{simple:!0})),a=Number(n.pragma("page_count",{simple:!0})),c=Number(n.pragma("freelist_count",{simple:!0})),l=Math.max(0,a-c)*s,u=r>0&&l>o?Math.min(r,Math.ceil((l-o)/Math.max(1,l/r))):0,d=Math.max(r-i,u);return d>0&&(n.prepare(`DELETE FROM file_evidence WHERE rowid IN (
82
+ SELECT rowid FROM file_evidence ORDER BY last_accessed_at ASC, rowid ASC LIMIT ?
83
+ )`).run(d),n.pragma("wal_checkpoint(TRUNCATE)")),{deletedRows:d,remainingRows:r-d}}catch(r){return gr("shared cache maintenance skipped",r),null}finally{try{n?.close()}catch{}}}function Jm(e,t,n,r){let i=ht(e);if(!i)return null;try{let o=i.readFileEvidence.get(t,n,r,nt)??i.readLegacyFileEvidence.get(t,n,r);if(o?.payload!==void 0)return o.payload;if(!Pc.has(t)||!i.shared)return null;try{return i.shared.readFileEvidence.get(t,n,r,nt)?.payload??null}catch(s){return kc(i,"file_evidence read",s),null}}catch(o){return yt(e,"file_evidence read",o),null}}function Ym(e,t,n,r,i){let o=ht(e);if(o)try{if(o.writeFileEvidence.run(t,n,r,nt,i),Pc.has(t)&&o.shared)try{o.shared.writeFileEvidence.run(t,n,r,nt,i,Date.now())}catch(s){kc(o,"file_evidence write",s)}}catch(s){yt(e,"file_evidence write",s)}}function Xm(e,t){if(t.length===0)return;let n=ht(e);if(n)try{n.evidence.transaction(()=>{for(let i of t)n.writeFileEvidence.run(i.kind,i.relativePath,i.contentHash,nt,i.payload)})();let r=t.filter(i=>Pc.has(i.kind));if(r.length>0&&n.shared)try{n.shared.evidence.transaction(()=>{for(let i of r)n.shared.writeFileEvidence.run(i.kind,i.relativePath,i.contentHash,nt,i.payload,Date.now())})()}catch(i){kc(n,"file_evidence batch write",i)}}catch(r){yt(e,"file_evidence batch write",r)}}function Qm(e,t,n,r){let i=ht(e);if(!i)return null;try{return(i.readProjectEvidence.get(t,n,r,nt)??i.readLegacyProjectEvidence.get(t,n,r))?.payload??null}catch(o){return yt(e,"project_evidence read",o),null}}function Zm(e,t,n,r,i){let o=ht(e);if(o)try{o.writeProjectEvidence.run(t,n,r,nt,i)}catch(s){yt(e,"project_evidence write",s)}}function ef(e,t,n,r){let i=ht(e);if(!i)return new Map;try{let o=i.readCalleesForFile.all(t,n,r,nt),s=i.readLegacyCalleesForFile.all(t,n,r);return nf([...s,...o])}catch(o){return yt(e,"semantic_callees bulk read",o),new Map}}function tf(e,t,n){let r=ht(e);if(!r)return new Map;try{let i=r.readReferencesForFile.all(t,n,nt),o=r.readLegacyReferencesForFile.all(t,n);return nf([...o,...i])}catch(i){return yt(e,"semantic_references bulk read",i),new Map}}function nf(e){let t=new Map;for(let n of e)t.set(n.symbol,n.payload);return t}function Tc(e,t){if(t.length===0)return;let n=ht(e);if(n)try{n.evidence.transaction(()=>{let r=new Set;for(let i of t){let o=`${i.relativePath}\0${i.contentHash}`;r.has(o)||(r.add(o),n.dropStaleCallees.run(i.relativePath,i.contentHash)),n.writeCallees.run(i.relativePath,i.symbol,i.contentHash,i.depsDigest,nt,i.payload)}})()}catch(r){yt(e,"semantic_callees write",r)}}function rf(e,t){if(t.length===0)return;let n=ht(e);if(n)try{n.evidence.transaction(()=>{let r=new Set;for(let i of t){let o=`${i.relativePath}\0${i.projectFingerprint}`;r.has(o)||(r.add(o),n.dropStaleReferences.run(i.relativePath,i.projectFingerprint)),n.writeReferences.run(i.relativePath,i.symbol,i.projectFingerprint,nt,i.payload)}})()}catch(r){yt(e,"semantic_references write",r)}}function of(e){let t=ht(e);if(!t)return[];try{return t.readFindingOutcomeLedger.all().map(r=>({check:r.check_name,findingId:r.finding_id,firstSeen:r.first_seen,lastSeen:r.last_seen,timesShown:r.times_shown,outcome:r.outcome}))}catch(n){return yt(e,"finding_outcome_ledger read",n),[]}}function sf(e,t){let n=ht(e);if(n)try{let r=new Map;for(let i of t){let o=r.get(i.check)??[];o.push(i),r.set(i.check,o)}n.evidence.transaction(()=>{for(let[i,o]of r){n.deleteFindingOutcomeLedgerForCheck.run(i);let s=[...o].sort((a,c)=>c.lastSeen-a.lastSeen).slice(0,Yv);for(let a of s)n.writeFindingOutcomeLedgerRow.run(a.check,a.findingId,a.firstSeen,a.lastSeen,a.timesShown,a.outcome)}})()}catch(r){yt(e,"finding_outcome_ledger write",r)}}import{appendFileSync as eI,mkdirSync as tI}from"fs";import{createHash as nI,randomUUID as rI}from"crypto";import{dirname as iI}from"path";import{performance as hr}from"perf_hooks";var uf="SCIP_QUERY_PROFILE",df="SCIP_QUERY_PROFILE_OUT",mf="SCIP_QUERY_PROFILE_COMMAND",ff="SCIP_QUERY_PROFILE_CACHE_STATE",Fc="SCIP_QUERY_PROFILE_RUN_ID",_c="SCIP_QUERY_PROFILE_WORKLOAD_IDENTITY",Lc="SCIP_QUERY_PROFILE_WORKLOAD_IDENTITY_KIND",pf=[uf,df,mf,ff,Fc,_c,Lc],i5=new Set(pf),af=new Set,cf=new Map,lf=!1;function U(){let e=process.env[uf];return e==="1"||e==="true"}function oI(){return process.env[df]}function gf(){return process.env[mf]}function sI(){return process.env[ff]}function hf(){let e=process.env[Fc];if(e)return e;if(!U())return;let t=rI();return process.env[Fc]=t,t}function yf(){return process.env[_c]}function aI(e){let t=yf();if(t)return t;if(!U())return;let n=hf();if(!n)return;let r=e.projectFingerprint?"published-project":"run-only",i=ci(["profile-workload-v1",e.toolVersion,e.command,e.projectFingerprint??n]);return process.env[_c]=i,process.env[Lc]=r,i}function ci(e){return nI("sha256").update(JSON.stringify(e)).digest("hex").slice(0,24)}function bf(){return Object.fromEntries(pf.flatMap(e=>{let t=process.env[e];return t===void 0?[]:[[e,t]]}))}function E(e,t,n){if(!U())return t();let r=hr.now();try{let i=t();return pn({type:"span",name:e,durationMs:Math.round(hr.now()-r),ok:!0,...$o(n)??{}}),i}catch(i){throw pn({type:"span",name:e,durationMs:Math.round(hr.now()-r),ok:!1,error:i instanceof Error?i.message:String(i),...$o(n)??{}}),i}}async function o5(e,t,n){if(!U())return t();let r=hr.now();try{let i=await t();return pn({type:"span",name:e,durationMs:Math.round(hr.now()-r),ok:!0,...$o(n)??{}}),i}catch(i){throw pn({type:"span",name:e,durationMs:Math.round(hr.now()-r),ok:!1,error:i instanceof Error?i.message:String(i),...$o(n)??{}}),i}}function pn(e,t=oI()){let n=cI(e),r={timestamp:new Date().toISOString(),pid:process.pid,runId:hf(),command:gf(),cacheState:sI(),...n,...e},i=`${JSON.stringify(r)}
84
+ `;if(t)try{let o=iI(t);af.has(o)||(tI(o,{recursive:!0}),af.add(o)),eI(t,i);return}catch(o){lf||(lf=!0,process.stderr.write(`[profile] failed to write ${t}: ${o instanceof Error?o.message:String(o)}
85
+ `));return}U()&&process.stderr.write(i)}function cI(e){let t=yf()??aI({command:gf()??"unknown",toolVersion:"unknown",projectFingerprint:null});if(!t)return{};let n=process.env[Lc],r=typeof e.name=="string"?e.name:void 0;if(!r)return{workloadIdentity:t,workloadIdentityKind:n};let i=r.split(/[.:]/,1)[0]??r,o=`${t}\0${r}`,s=cf.get(o);return s||(s=ci(["profile-subsystem-v1",t,r]),cf.set(o,s)),{workloadIdentity:t,workloadIdentityKind:n,subsystem:i,subsystemWorkIdentity:s}}function $o(e){return typeof e=="function"?e():e}import{spawnSync as lI}from"child_process";import{createHash as uI}from"crypto";import{existsSync as dI,lstatSync as mI,realpathSync as fI}from"fs";import{dirname as pI,isAbsolute as gI,join as hI,resolve as Uo}from"path";var li={run(e,t){let n=Cf(e,t);return n.kind==="success"?n.output:void 0},runResult:Cf},yI=["rev-parse","--show-toplevel","--absolute-git-dir","--git-common-dir","HEAD","HEAD^{tree}"],Sf=/^[0-9a-f]{40,64}$/;function d5(e,t=li){let n=t.run(e,["rev-parse","--show-toplevel"])?.trim();return n?It(n):void 0}function yr(e,t=li){let n=t.runResult(e,yI);if(n.kind==="success"){let r=bI(n.output);if(r)return SI(r,t)}return CI(e,t)}function bI(e){let t=e.split(`
86
+ `).map(c=>c.trim());if(t.length!==5)return;let[n,r,i,o,s]=t;if(!n||!r||!i||!o||!s||!Sf.test(o)||!Sf.test(s))return;let a=It(n);return{root:a,gitDir:It(Ho(a,r)),commonDir:It(Ho(a,i)),headCommit:o,treeOid:s}}function SI(e,t){let n=t.run(e.root,["status","--porcelain=v1","-z","--untracked-files=all"]);return n===void 0?void 0:{...xf(e.root,e.gitDir),commonDir:e.commonDir,repositoryId:Ac("repository",e.commonDir),headCommit:e.headCommit,treeOid:e.treeOid,clean:n.length===0}}function CI(e,t){let n=xI(e,t);if(n.kind!=="worktree")return;let r=n.identity,i=r.projectRoot,o=t.run(i,["rev-parse","--git-common-dir"])?.trim();if(!o)return;let s=It(Ho(i,o)),a=Nc(t.run(i,["rev-parse","--verify","HEAD"])),c=Nc(t.run(i,["rev-parse","--verify","HEAD^{tree}"])),l=t.run(i,["status","--porcelain=v1","-z","--untracked-files=all"]);if(l!==void 0)return{...r,commonDir:s,repositoryId:Ac("repository",s),headCommit:a,treeOid:c,clean:l.length===0}}function xI(e,t=li){let n=t.runResult(e,["rev-parse","--show-toplevel"]);if(n.kind==="not-repository")return{kind:"non-git"};if(n.kind==="error")return n;let r=n.output.trim();if(!r)return{kind:"error",message:"Git returned an empty worktree root."};let i=It(r),o=t.run(i,["rev-parse","--absolute-git-dir"])?.trim();if(!o)return{kind:"error",message:"Git did not return an absolute worktree directory."};let s=It(Ho(i,o));return{kind:"worktree",identity:xf(i,s)}}function xf(e,t){return{projectRoot:e,gitDir:t,worktreeId:Ac("worktree",`${e}\0${t}`)}}function Rf(e,t=li){let n=t.run(e,["worktree","list","--porcelain","-z"]);return n===void 0?[]:RI(n)}function RI(e){let t=[],n;for(let r of e.split("\0")){if(r===""){n&&t.push(n),n=void 0;continue}let i=r.indexOf(" "),o=i<0?r:r.slice(0,i),s=i<0?"":r.slice(i+1);if(o==="worktree"){n&&t.push(n),n={path:It(s),detached:!1,bare:!1,prunable:!1,locked:!1};continue}n&&(o==="HEAD"?n.head=s:o==="branch"?n.branch=s:o==="detached"?n.detached=!0:o==="bare"?n.bare=!0:o==="prunable"?n.prunable=!0:o==="locked"&&(n.locked=!0))}return n&&t.push(n),t}function m5(e,t,n=li){return Nc(n.run(e,t))}function Ho(e,t){return gI(t)?t:Uo(e,t)}function It(e){try{return fI(e)}catch{return Uo(e)}}function Ac(e,t){return uI("sha256").update(`${e}\0${t}`).digest("hex").slice(0,24)}function Nc(e){return e?.trim()||void 0}function Cf(e,t){let n=lI("git",["-C",e,...t],{encoding:"utf-8",env:{...process.env,LC_ALL:"C"},maxBuffer:52428800,stdio:["ignore","pipe","pipe"]});if(n.status===0)return{kind:"success",output:n.stdout.trimEnd()};let i=(typeof n.stderr=="string"?n.stderr.trim():"")||n.error?.message||`git exited with status ${n.status??"unknown"}`,o=n.error?.code;return(/not a git repository/i.test(i)||o==="ENOENT"&&dI(Uo(e)))&&!vI(e)?{kind:"not-repository"}:{kind:"error",message:i}}function vI(e){if(process.env.GIT_DIR||process.env.GIT_COMMON_DIR)return!0;let t=Uo(e);for(;;){try{return mI(hI(t,".git")),!0}catch(r){let i=r.code;if(i!=="ENOENT"&&i!=="ENOTDIR")return!0}let n=pI(t);if(n===t)return!1;t=n}}var II={"/":"namespace","#":"type",".":"term","[":"type-param",":":"meta","!":"macro"};function ye(e){if(e.startsWith("local "))return{kind:"local",id:e.slice(6),raw:e};let t=e.split(" ");if(t.length<4)return{scheme:t[0]??"",manager:t[1]??"",packageName:t[2]??"",version:"",descriptors:[],raw:e};let n=t[0],r=t[1],i=e.slice(n.length+1+r.length+1),o;if(i.startsWith("`")){let l=i.indexOf("`",1);l===-1?(o=i.slice(1),i=""):(o=i.slice(1,l),i=i.slice(l+2))}else{let l=i.indexOf(" ");l===-1?(o=i,i=""):(o=i.slice(0,l),i=i.slice(l+1))}let s,a=i.indexOf(" ");a===-1?(s=i,i=""):(s=i.slice(0,a),i=i.slice(a+1));let c=wI(i);return{scheme:n,manager:r,packageName:o,version:s,descriptors:c,raw:e}}function wt(e){let t=ye(e);if("kind"in t)return null;for(let n=t.descriptors.length-2;n>=0;n--){let r=t.descriptors[n];if(r?.suffix==="type")return r.name}return null}function wI(e){let t=[],n=0;for(;n<e.length;){if(e[n]==="["){let o=e.indexOf("]",n+1);if(o===-1){t.push({name:e.slice(n+1),suffix:"type-param"});break}t.push({name:e.slice(n+1,o),suffix:"type-param"}),n=o+1;continue}if(e[n]==="("&&(t.length===0||n===0||vf(e[n-1]))){let o=e.indexOf(")",n+1);if(o!==-1&&e[o+1]!=="."){t.push({name:e.slice(n+1,o),suffix:"parameter"}),n=o+1;continue}}let r;if(e[n]==="`"){let o=e.indexOf("`",n+1);if(o===-1){r=e.slice(n+1),t.push({name:r,suffix:"term"});break}r=e.slice(n+1,o),n=o+1}else{let o=n;for(;n<e.length&&!vf(e[n]);)n++;r=e.slice(o,n)}if(n>=e.length){r&&t.push({name:r,suffix:"term"});break}let i=e[n];if(i==="("){let o=e.indexOf(")",n+1);o!==-1&&e[o+1]==="."?(t.push({name:r,suffix:"method"}),n=o+2):o!==-1?(t.push({name:r,suffix:"method"}),n=o+1):(t.push({name:r,suffix:"term"}),n++)}else{let o=II[i];o&&t.push({name:r,suffix:o}),n+=1}}return t}function vf(e){return e==="/"||e==="#"||e==="."||e==="("||e==="["||e===":"||e==="!"}function I(e){let t=ye(e);if("kind"in t&&t.kind==="local")return`local:${t.id}`;let n=t;if(n.descriptors.length===0)return n.raw;let r=[];for(let i of n.descriptors){let o=EI(i);o&&r.push(o)}return r.join(":")}function EI(e){let t=e.suffix==="namespace"?DI(e.name):e.name;return t?e.suffix==="method"?`${t}()`:t:""}function DI(e){return e.replace(/\.(ts|tsx|js|jsx|mjs|cjs)$/,"").replace(/\.(py|pyi)$/,"").replace(/\.(rs)$/,"").replace(/\.(java|scala|kt|kts)$/,"").replace(/\.(rb)$/,"").replace(/\.(go)$/,"").replace(/\.(cs|vb)$/,"").replace(/\.(dart)$/,"").replace(/\.(php)$/,"").replace(/\.(c|cc|cpp|cxx|h|hpp)$/,"")}function T(e){let t=ye(e);if("kind"in t&&t.kind==="local")return t.id;let n=t;return n.descriptors.length===0?"":n.descriptors[n.descriptors.length-1].name}function ue(e){let t=ye(e);if("kind"in t&&t.kind==="local")return null;let n=t;return n.descriptors[n.descriptors.length-1]?.suffix??null}function le(e){return e.endsWith("().")||ue(e)==="method"}function te(e){let t=ue(e);return t==="method"?!0:t!=="term"?!1:e.endsWith("().")?!0:e.startsWith("rust-analyzer ")&&e.includes("#")?!1:e.startsWith("scip-typescript ")?!/#[A-Za-z0-9_$]+\.$/.test(e):!0}function gn(e){return ue(e)==="namespace"}var PI=/^rust-analyzer\b.*[\s/]impl#\[[^\]]+\]\[[^\]]+\]/;function Ie(e){return PI.test(e)}var kI=new Set(["test","tests","_tests"]);function br(e){let t=ye(e);if("kind"in t)return!1;for(let n=0;n<t.descriptors.length-1;n+=1){let r=t.descriptors[n];if(r?.suffix==="namespace"&&r.name&&kI.has(r.name))return!0}return!1}function If(e,t){let n=ye(e),r=ye(t);if("kind"in n||"kind"in r)return!1;let i=n.descriptors,o=r.descriptors;if(o.length!==i.length+1)return!1;for(let s=0;s<i.length;s++){let a=i[s],c=o[s];if(a.name!==c.name||a.suffix!==c.suffix)return!1}return!0}function wf(e,t){let n=ye(e),r=ye(t);if("kind"in n||"kind"in r)return!1;let i=n.descriptors,o=r.descriptors;if(o.length<=i.length)return!1;for(let s=0;s<i.length;s++){let a=i[s],c=o[s];if(a.name!==c.name||a.suffix!==c.suffix)return!1}return!0}import{extname as Ef}from"path";var TI={".rs":"rust",".ts":"typescript",".mts":"typescript",".cts":"typescript",".tsx":"tsx",".js":"javascript",".jsx":"javascript",".mjs":"javascript",".cjs":"javascript",".py":"python",".pyi":"python",".java":"java",".kt":"kotlin",".kts":"kotlin",".scala":"scala",".sc":"scala",".rb":"ruby",".c":"c",".h":"c",".cc":"cpp",".cpp":"cpp",".cxx":"cpp",".hpp":"cpp",".hh":"cpp",".hxx":"cpp",".cs":"csharp",".php":"php",".vb":"vb",".clj":"clojure",".cljs":"clojure",".cljc":"clojure"};function M(e){return TI[Ef(e).toLowerCase()]??null}function Ut(e){return Ef(e).toLowerCase()===".vue"}import{createRequire as FI}from"module";var Ae=FI(import.meta.url),ui=null,Mc=!1;function Df(){if(Mc)return null;if(ui)return ui;try{return ui=Ae("tree-sitter"),ui}catch{return Mc=!0,null}}function b5(e){if(e==="clojure")return"reader";let t=Df();if(!t)return"unavailable";let n=Pf(e);if(!n)return"unavailable";try{return new t().setLanguage(n),"ast"}catch{return Sr.add(e),"unavailable"}}var Oc=new Map,Sr=new Set;function Pf(e){if(Sr.has(e))return null;let t=Oc.get(e);if(t)return t;let n;try{switch(e){case"rust":n=Ae("tree-sitter-rust");break;case"typescript":n=Ae("tree-sitter-typescript").typescript;break;case"tsx":n=Ae("tree-sitter-typescript").tsx;break;case"javascript":n=Ae("tree-sitter-javascript");break;case"python":n=Ae("tree-sitter-python");break;case"java":n=Ae("tree-sitter-java");break;case"kotlin":n=Ae("tree-sitter-kotlin");break;case"scala":n=Ae("tree-sitter-scala");break;case"ruby":n=Ae("tree-sitter-ruby");break;case"c":n=Ae("tree-sitter-c");break;case"cpp":n=Ae("tree-sitter-cpp");break;case"csharp":n=Ae("tree-sitter-c-sharp");break;case"php":n=Ae("tree-sitter-php").php;break;case"vb":{let r=Ae("tree-sitter-vb-dotnet");n=r.language??r;break}case"clojure":return Sr.add(e),null}}catch{return Sr.add(e),null}return Oc.set(e,n),n}var jc=new Map;function S5(){ui=null,Mc=!1,Oc.clear(),Sr.clear(),jc.clear(),NI.clear()}function _I(e){let t=jc.get(e);if(t)return t;let n=Pf(e);if(!n)return null;let r=Df();if(!r)return null;let i=new r;try{i.setLanguage(n)}catch{return Sr.add(e),null}return jc.set(e,i),i}function LI(e,t){return e.parse(r=>r>=t.length?null:t.slice(r,Math.min(t.length,r+16384)))}function di(e,t){let n=_I(e);if(!n)return null;try{return LI(n,t)}catch{return null}}var NI=new Map;import{readFileSync as AI}from"fs";import{join as MI}from"path";var OI=j("source-text",{clearGroups:["whole-project","source-file"]}),jI=j("source-lines",{clearGroups:["whole-project","source-file"]});function k(e,t){let n=t.replace(/\\/g,"/");return OI.get(e,n,()=>{let r=MI(e.config.projectRoot,n);try{return AI(r,"utf-8")}catch(i){if(BI(i))return"";throw i}})}function BI(e){return typeof e=="object"&&e!==null&&"code"in e&&(e.code==="ENOENT"||e.code==="ENOTDIR")}function Ce(e,t){let n=t.replace(/\\/g,"/");return jI.get(e,n,()=>{let r=k(e,n);return r?r.split(`
87
+ `):[]})}var $I=/^\s*(?:\/\/|#|\/\*+|\*)\s*scip-query[\s:-]*ignore(?:[\s:-]+(dead(?:-code)?|stale|wrapper|passthrough|drift|extract|similar|twin))?\b/i;function mi(e){let t=$I.exec(e);return t?t[1]??"":null}function Wo(e,t,n){return kf(e,t,n).length>0}function Go(e,t,n,r){let i=r.toLowerCase();return kf(e,t,n).some(o=>o.toLowerCase()===i)}function kf(e,t,n){if(n<=0)return[];let r=Ce(e,t);if(r.length===0)return[];let i=[];for(let o=n-1;o>=0&&o>=n-5;o-=1){let s=(r[o]??"").trim();if(s==="")continue;let a=mi(s);if(a!==null){i.push(a);continue}if(!s.startsWith("//")&&!s.startsWith("*")&&!s.startsWith("/*")&&!s.startsWith("@")&&!s.startsWith("#"))return i}return i}import{posix as Bc}from"path";import{parse as HI}from"@vue/compiler-sfc";var UI=fn("vue-sfc-units");function Cr(e,t){let n=_f(t),r=k(e,n);return UI.get(e,n,r,()=>$c(e,n,r))}function _f(e){return e.replace(/\\/g,"/").replace(/^\.\//,"")}function WI(e){let t=e?.toLowerCase();return!t||t==="js"||t==="javascript"||t==="jsx"?"javascript":t==="ts"||t==="typescript"?"typescript":t==="tsx"?"tsx":null}function jn(e){return!e||e.body.length===0?0:e.body.split(`
88
+ `).length}function $c(e,t,n){let r={relativePath:t,template:null,scripts:[],styles:[],customBlocks:[],errors:[]};if(!n)return r;let i;try{i=HI(n,{filename:t})}catch(s){return r.errors.push(Ff(s)),r}r.errors.push(...i.errors.map(Ff));let{descriptor:o}=i;return o.template&&(r.template=zo(e,t,"template",o.template)),o.script&&r.scripts.push(Tf(e,t,o.script,!1)),o.scriptSetup&&r.scripts.push(Tf(e,t,o.scriptSetup,!0)),r.styles=o.styles.map(s=>zo(e,t,"style",s)),r.customBlocks=o.customBlocks.map(s=>zo(e,t,"custom",s)),r.errors.push(...[r.template,...r.scripts,...r.styles,...r.customBlocks].flatMap(s=>s?.errors??[])),r}function Tf(e,t,n,r){let i=zo(e,t,"script",n);return{...i,kind:"script",setup:r,astLanguage:WI(i.lang)}}function zo(e,t,n,r){let i=zI(r.attrs),o=typeof i.lang=="string"?i.lang:null,s=typeof i.src=="string"?i.src:typeof r.src=="string"?r.src:void 0;if(s){let c=GI(t,s);if(!c)return{kind:n,ownerPath:t,sourcePath:t,external:!0,src:s,attrs:i,lang:o,body:"",startLine:0,endLine:0,errors:[`Could not resolve Vue ${n} block source: ${s}`]};let l=k(e,c),u=l?Math.max(0,l.split(`
89
+ `).length-1):0;return{kind:n,ownerPath:t,sourcePath:c,external:!0,src:s,attrs:i,lang:o,body:l,startLine:0,endLine:u,errors:l?[]:[`Vue ${n} block source not found: ${c}`]}}let a=Math.max(0,r.loc.start.line-1);return{kind:n,ownerPath:t,sourcePath:t,external:!1,attrs:i,lang:o,body:r.content,startLine:a,endLine:Math.max(a,r.loc.end.line-1),errors:[]}}function GI(e,t){let n=t.split(/[?#]/,1)[0];if(!n||n.startsWith("/")||n.includes("://"))return null;let r=_f(Bc.normalize(Bc.join(Bc.dirname(e),n)));return r===".."||r.startsWith("../")?null:r}function zI(e){return{...e}}function Ff(e){return e instanceof Error?e.message:String(e)}function Vo(e,t,n){let i=$c(e,t,n).scripts.filter(s=>s.astLanguage&&s.body.length>0),o=i[0]?.astLanguage;return o?{body:i.map(s=>`${`
90
+ `.repeat(s.startLine)}${s.body}`).join(`
91
+ `),startLine:0,language:o}:null}var Lf=On("ast-trees",{clearGroups:["whole-project","source-file"]});function K(e,t){if(Ut(t))return VI(e,t);let n=M(t);if(!n)return null;let r=k(e,t);return r?Lf.get(e,t,r,()=>di(n,r)):null}function VI(e,t){let n=k(e,t);return n?Lf.get(e,t,n,()=>{let r=Vo(e,t,n);if(!r)return null;let i=`
92
+ `.repeat(r.startLine)+r.body;return di(r.language,i)}):null}function xr(e,t){let n=qI(e,t);if(!n)return null;let r=Bn(n);return r?{calleeLeaf:r,memberAccess:KI(n),line:e.startPosition.row}:null}function qI(e,t){if(t==="rust")return e.type==="call_expression"?e.childForFieldName("function")??e.namedChild(0):e.type==="macro_invocation"?e.childForFieldName("macro")??e.namedChild(0):null;if(t==="python")return e.type!=="call"?null:e.childForFieldName("function")??e.namedChild(0);if(t==="typescript"||t==="tsx"||t==="javascript"){if(e.type==="call_expression")return e.childForFieldName("function")??e.namedChild(0);if(e.type==="new_expression")return e.childForFieldName("constructor")??e.namedChild(0)}return null}function KI(e){switch(e.type){case"field_expression":case"member_expression":case"attribute":return!0;default:return!1}}function Bn(e){switch(e.type){case"identifier":case"type_identifier":case"field_identifier":case"property_identifier":case"shorthand_property_identifier":return e.text;case"field_expression":case"member_expression":case"attribute":{let t=e.namedChild(e.namedChildCount-1);return t?Bn(t):null}case"generic_function":{let t=e.childForFieldName("function")??e.namedChild(0);return t?Bn(t):null}case"scoped_identifier":{let t=e.childForFieldName("name")??e.namedChild(e.namedChildCount-1);return t?Bn(t):null}case"super":case"self":case"this":return null;default:return null}}var JI=[Be("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"}),Be("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"}),Be("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"}),Be("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"}),Be("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"}),Be("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"}),Be("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"}),Be("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"}),Be("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"}),Be("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"}),Be("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"}),Be("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"}),Be("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"}),Be("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"}),qo("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"}),qo("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"}),qo("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"}),qo("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 oe(e){let t=new Map;return{kind:e.kind,read(n,r,i){let o=!1,s=0,a;if(U()){let c=Te(n);if(c){let l=`${c}\0${r}\0${i}`;a=t.get(l),a||(a=ci(["evidence-product-file-read-v1",e.kind,c,r,i]),t.set(l,a))}}return E("evidence-product.file.read",()=>{let c=Jm(n,e.kind,r,i);if(c===null)return null;s=c.length;try{let l=e.deserialize(c);return o=l!==null,l}catch{return null}},()=>({...a?{workIdentity:a,workOutcome:"computed"}:{},scope:"file",kind:e.kind,available:!0,hit:o,payloadBytes:s}))},write(n,r,i,o){Ym(n,e.kind,r,i,e.serialize(o))},writeBatch(n,r){Xm(n,r.map(i=>({kind:e.kind,relativePath:i.relativePath,contentHash:i.contentHash,payload:e.serialize(i.value)})))}}}function $n(e){let t=new Map;return{kind:e.kind,read(n,r,i){let o=!1,s=0,a;if(U()){let c=`${i}\0${r}`;a=t.get(c),a||(a=ci(["evidence-product-project-read-v1",e.kind,i,r]),t.set(c,a))}return E("evidence-product.project.read",()=>{let c=Qm(n,e.kind,r,i);if(c===null)return null;s=c.length;try{let l=e.deserialize(c);return o=l!==null,l}catch{return null}},()=>({...a?{workIdentity:a,workOutcome:"computed"}:{},scope:"project",kind:e.kind,available:!0,hit:o,payloadBytes:s}))},write(n,r,i,o){Zm(n,e.kind,r,i,e.serialize(o))}}}function J(e){let t=JI.find(n=>n.kind===e);if(!t)throw new Error(`missing evidence product manifest entry for ${e}`);return t.invalidation}function Be(e,t){return{scope:"file",kind:e,invalidation:{scope:"file",...t}}}function qo(e,t){return{scope:"project",kind:e,invalidation:{scope:"project",...t}}}function fi(e){return e.type==="comment"||e.type==="line_comment"||e.type==="block_comment"}var YI=new Set(["function_declaration","method_definition","method_signature","function_signature"]);function Ko(e,t){let n=QI(e,t);if(n)return{name:n.name,startLine:n.definitionNode.startPosition.row,endLine:n.definitionNode.endPosition.row,paramCount:Mf(n.functionNode),params:Nf(n.functionNode),paramsEndLine:Af(n.functionNode),isLiteralPassthrough:Of(n.functionNode,t)};if(!XI(e.type,t))return null;let r=e.childForFieldName("name")??e.namedChildren.find(i=>i.type==="identifier"||i.type==="property_identifier");return r?{name:r.text,startLine:e.startPosition.row,endLine:e.endPosition.row,paramCount:Mf(e),params:Nf(e),paramsEndLine:Af(e),isLiteralPassthrough:Of(e,t)}:null}function jf(e){return e.namedChildren.find(t=>t.type==="parameters"||t.type==="formal_parameters")}function Nf(e){let t=jf(e);if(!t)return[];let n=[];for(let r of t.namedChildren){if(fi(r))continue;if(r.type==="identifier"){n.push({name:r.text,simple:!0});continue}let i=r.namedChildren.some(a=>a.type.endsWith("_modifier"))||/^\s*(?:public|private|protected|readonly|override)\b/.test(r.text),o=r.childForFieldName("pattern");if(!i&&o&&o.type==="identifier"){n.push({name:o.text,simple:!0});continue}let s=r.namedChildren.find(a=>a.type==="identifier");n.push({name:o?.type==="identifier"?o.text:s?.text??"",simple:!1})}return n}function Af(e){let t=jf(e);return t?t.endPosition.row:e.startPosition.row}function XI(e,t){return t==="rust"?e==="function_item"||e==="function_signature_item":t==="python"?e==="function_definition":t==="typescript"||t==="tsx"||t==="javascript"?YI.has(e):!1}function QI(e,t){if(t!=="typescript"&&t!=="tsx"&&t!=="javascript")return null;if(e.type==="variable_declarator"){let n=e.childForFieldName("name")??e.namedChild(0),r=e.childForFieldName("value")??e.namedChild(1);return!n||!r||r.type!=="arrow_function"&&r.type!=="function_expression"?null:{name:n.text,definitionNode:e,functionNode:r}}if(e.type==="public_field_definition"){let n=e.childForFieldName("name")??e.namedChild(0),r=e.childForFieldName("value")??e.namedChild(1);return!n||!r||r.type!=="arrow_function"&&r.type!=="function_expression"?null:{name:n.text,definitionNode:e,functionNode:r}}return null}function Mf(e){let t=e.namedChildren.find(r=>r.type==="parameters"||r.type==="formal_parameters");if(!t)return 0;let n=0;for(let r of t.namedChildren)fi(r)||(n+=1);return n}function Of(e,t){let n=e.namedChildren.find(d=>d.type==="block"||d.type==="statement_block");if(!n)return!1;let r=n.namedChildren.filter(d=>!fi(d));if(r.length!==1)return!1;let i=r[0],o=null;if(i.type==="return_statement"||i.type==="expression_statement"?o=i.namedChild(0)??null:t==="rust"&&(i.type==="call_expression"||i.type==="macro_invocation")&&(o=i),!o)return!1;let s=t==="python"?"call":"call_expression";if(o.type!==s)return!1;let a=o.namedChildren.find(d=>d.type==="arguments"||d.type==="argument_list");if(!a)return!1;let c=a.namedChildren.filter(d=>!fi(d)),l=e.namedChildren.find(d=>d.type==="parameters"||d.type==="formal_parameters");if(!l)return!1;let u=[];for(let d of l.namedChildren){if(d.type==="identifier"){u.push(d.text);continue}let m=d.namedChildren.find(f=>f.type==="identifier");m&&u.push(m.text)}if(c.length!==u.length)return!1;for(let d=0;d<u.length;d+=1){let m=c[d];if(m.type!=="identifier"||m.text!==u[d])return!1}return!0}var ZI=new Set(["identifier","type_identifier","field_identifier"]),ew=new Set(["identifier"]),tw=new Set(["identifier","property_identifier","type_identifier","shorthand_property_identifier","shorthand_property_identifier_pattern"]),nw=new Set(["rust","python"]),rw=/\{([^{}]*)\}/g,iw=/\b([A-Za-z_][\w]*)\b/g;function Bf(e,t){return ow(t).has(e.type)}function $f(e,t){return nw.has(t)&&e.type==="string_content"}function Hc(e){let t=0;for(let r of e.values()){let i=r[r.length-1];i!==void 0&&i>t&&(t=i)}let n=new Array(t+1);for(let r=0;r<=t;r+=1)n[r]=new Set;for(let[r,i]of e)for(let o of i)n[o].add(r);return n}function ow(e){return e==="rust"?ZI:e==="python"?ew:tw}function Hf(e,t){let n=e.startPosition.row;for(let r of e.text.matchAll(rw)){let i=r[1]??"";for(let o of i.matchAll(iw))o[1]&&t(o[1],n)}}var sw=[/\bdefault\s*=\s*"([^"]+)"/g,/\bwith\s*=\s*"([^"]+)"/g,/\bserialize_with\s*=\s*"([^"]+)"/g,/\bdeserialize_with\s*=\s*"([^"]+)"/g,/\bskip_serializing_if\s*=\s*"([^"]+)"/g,/\bgetter\s*=\s*"([^"]+)"/g,/\brename_all_with\s*=\s*"([^"]+)"/g,/\bschema_with\s*=\s*"([^"]+)"/g],aw=/^#!?\[\s*serde\s*\(/,cw=/^#!?\[\s*schemars\s*\(/,lw=/^#!?\[\s*validate\s*\(/,uw=new Set(["invoke","invokeTauriCommand","listen","once","emit","subscribe","dispatch","sendCommand","callRust"]);function Uf(e,t,n){if(t!=="typescript"&&t!=="tsx"&&t!=="javascript"||e.type!=="call_expression")return;let r=e.childForFieldName("function")??e.namedChild(0);if(!r)return;let i=Bn(r);if(!i||!uw.has(i))return;let o=e.namedChildren.find(c=>c.type==="arguments");if(!o)return;let s=o.namedChild(0);if(!s||s.type!=="string")return;let a=s.namedChildren.find(c=>c.type==="string_fragment");a&&n.add(a.text)}function Wf(e,t){let n=aw.test(e),r=cw.test(e),i=lw.test(e);if(!(!n&&!r&&!i))for(let o of sw){o.lastIndex=0;let s;for(;(s=o.exec(e))!==null;){let a=s[1],c=a.split("::").pop()??a;c==="is_none"&&/\bOption\b/.test(a)||c==="is_empty"&&/\b(String|Vec|HashMap|BTreeMap|HashSet|BTreeSet)\b/.test(a)||c&&t.add(c)}}}function Gf(e,t){let n=new Map,r=(s,a)=>{if(s===a)return;let c=n.get(s);c||(c=new Set,n.set(s,c)),c.add(a)},i=t==="python"?new Set(["identifier"]):new Set(["type_identifier"]),o=(s,a)=>{let c=l=>{i.has(l.type)&&l.text!==a&&r(l.text,a);for(let u of l.children)c(u)};for(let l of s.children)c(l)};if(t==="rust")for(let s of e.rootNode.descendantsOfType(["struct_item","enum_item","union_item","type_item"])){let a=s.namedChildren.find(l=>l.type==="type_identifier")?.text;if(!a)continue;let c=s.namedChildren.find(l=>l.type==="field_declaration_list"||l.type==="enum_variant_list"||l.type==="ordered_field_declaration_list");c&&o(c,a),s.type==="type_item"&&o(s,a)}else if(t==="python")for(let s of e.rootNode.descendantsOfType("class_definition")){let a=s.namedChildren.find(u=>u.type==="identifier")?.text;if(!a)continue;let c=s.childForFieldName("superclasses");c&&o(c,a);let l=s.namedChildren.find(u=>u.type==="block");if(l)for(let u of l.descendantsOfType("type"))for(let d of u.descendantsOfType("identifier"))d.text!==a&&r(d.text,a)}else for(let s of e.rootNode.descendantsOfType(["interface_declaration","type_alias_declaration","class_declaration"])){let a=s.namedChildren.find(c=>c.type==="type_identifier")?.text;a&&o(s,a)}return n}var dw=new Map([["defn","function"],["defn-","function"],["defmacro","macro"],["defmacro-","macro"],["defmethod","method"]]),Uc=new Set(["catch","comment","def","defprotocol","defrecord","deftype","defmethod","defmacro","defmacro-","defn","defn-","do","doseq","dotimes","fn","for","if","let","loop","ns","quote","recur","throw","try","extend-protocol","extend-type","when","when-let","when-not"]);function zf(e){let t=[],n=[],r=[],i=new Map,o=[],s=0,a=0,c=(l,u)=>{let d=i.get(l);if(!d){i.set(l,[u]);return}d[d.length-1]!==u&&d.push(u)};for(;a<e.length;){let l=e[a];if(l===`
93
+ `){s+=1,a+=1;continue}if(/\s|,/.test(l)){a+=1;continue}if(l===";"){a=Yo(e,a);continue}if(l==='"'){let p=gi(e,a,s);s=p.line,a=p.index;continue}if(l==="("||l==="["||l==="{"){o.push({kind:l,startLine:s,endLine:s,headTokens:[],tokens:[],children:[]}),a+=1;continue}if(l===")"||l==="]"||l==="}"){let p=o.pop();p&&(p.endLine=s,mw(p,{callables:t,callSites:n,clojureMembers:r,recordIdentifier:c}),o[o.length-1]?.children.push(p)),a+=1;continue}if(Wc(l)){a+=1;continue}let u=s,d=a;for(;a<e.length&&!Gc(e[a]);)a+=1;let m=e.slice(d,a);if(!m)continue;let f={text:m,line:u};fw(o[o.length-1],f),c(rt(m),u)}return{language:"clojure",callables:t,callSites:n,clojureMembers:r,typeContainerMap:new Map,identifierLineMap:i,identifiersByLine:bw(i),fileIdentifiers:new Set(i.keys()),rustAttrReferencedNames:new Set,crossLanguageDispatchNames:new Set}}function mw(e,t){if(e.kind!=="("||e.headTokens.length===0)return;let n=e.headTokens[0],r=rt(n.text),i=dw.get(n.text);if(i){let s=e.headTokens[1];if(s){let a=rt(s.text);t.recordIdentifier(a,s.line),t.callables.push({name:a,startLine:e.startLine,endLine:e.endLine,paramCount:0,params:[],paramsEndLine:s.line,isLiteralPassthrough:!1,clojureKind:i})}}if(pw(e,t),!r||Uc.has(n.text)||Uc.has(r)||r.startsWith(":"))return;let o=yw(n.text);t.callSites.push({calleeLeaf:o.leaf,calleeQualifier:o.qualifier,calleeText:o.text,memberAccess:!1,line:n.line})}function fw(e,t){e&&(e.headTokens.length<2&&e.headTokens.push(t),e.tokens.length<200&&e.tokens.push(t))}function pw(e,t){let n=rt(e.tokens[0]?.text??"");if(n==="defprotocol"){let r=rt(e.tokens[1]?.text??"");if(!r)return;for(let i of Jo(e))pi(t,r,"protocol",i,"protocol-method");return}if(n==="defrecord"||n==="deftype"){let r=rt(e.tokens[1]?.text??"");if(!r)return;let i=n==="defrecord"?"record":"type",o=n==="defrecord"?"record-method":"type-method";for(let s of Jo(e))pi(t,r,i,s,o);return}if(n==="extend-type"){let r=rt(e.tokens[1]?.text??"");if(!r)return;for(let i of Jo(e))pi(t,r,"extension",i,"extension-method");return}if(n==="extend-protocol"){let r=rt(e.tokens[1]?.text??"");for(let i of Jo(e)){r&&pi(t,r,"extension",i,"extension-method");let o=hw(e,i.startLine);o&&o!==r&&pi(t,o,"extension",i,"extension-method")}}}function Jo(e){return e.children.filter(gw)}function gw(e){if(e.kind!=="(")return!1;let t=rt(e.tokens[0]?.text??"");return!!(t&&!Uc.has(t)&&!t.startsWith(":"))}function pi(e,t,n,r,i){let o=r.tokens[0],s=rt(o?.text??"");!o||!s||(e.recordIdentifier(s,o.line),e.clojureMembers.push({ownerName:t,ownerKind:n,memberName:s,memberKind:i,startLine:r.startLine,endLine:r.endLine}))}function hw(e,t){let n=null;for(let r=2;r<e.tokens.length;r+=1){let i=e.tokens[r];if(i.line>t)break;let o=rt(i.text);o&&!o.startsWith(":")&&(n=o)}return n}function rt(e){return e.replace(/^#?['`~@]+/,"").split("/").pop()?.replace(/^\./,"")??""}function yw(e){let t=e.replace(/^#?['`~@]+/,""),n=t.lastIndexOf("/"),r=rt(t);if(n<=0)return{leaf:r,text:t};let i=t.slice(0,n);return{leaf:r,qualifier:i,text:t}}function Yo(e,t){let n=t;for(;n<e.length&&e[n]!==`
94
+ `;)n+=1;return n}function gi(e,t,n){let r=t+1,i=n;for(;r<e.length;){let o=e[r];if(o==="\\"){r+=2;continue}if(o===`
95
+ `&&(i+=1),r+=1,o==='"')break}return{index:r,line:i}}function Wc(e){return e==="'"||e==="`"||e==="~"||e==="@"||e==="^"||e==="#"}function Gc(e){return/\s|,/.test(e)||e==="("||e===")"||e==="["||e==="]"||e==="{"||e==="}"||e==='"'||e===";"}function bw(e){let t=[];for(let[n,r]of e)for(let i of r)t[i]??=new Set,t[i].add(n);return t}var Vf=3,Sw=On("source-facts",{clearGroups:["whole-project","source-file"]}),zc=oe({kind:"source-facts",invalidation:J("source-facts"),serialize:Rw,deserialize:vw});function z(e,t){return Vc(e,t).facts}function Vc(e,t){let n=k(e,t);if(!n)return{facts:null};let r=Cw(e,t,n);return r?Sw.get(e,t,n,()=>xw(e,t,r,n)):{facts:null}}function Cw(e,t,n){return Ut(t)?Vo(e,t,n)?.language??null:M(t)}function xw(e,t,n,r){let i=ce(e,t,r),o=zc.read(e,t,i);if(o&&o.language===n)return{facts:o};if(n==="clojure"){let c=zf(r);return zc.write(e,t,i,c),{facts:c}}let s=K(e,t);if(!s)return{facts:null,unavailable:{language:n,reason:"parser-unavailable"}};let a=ww(s,n);return zc.write(e,t,i,a),{facts:a}}function Rw(e){let t={version:Vf,language:e.language,callables:e.callables,callSites:e.callSites,clojureMembers:e.clojureMembers,typeContainerMap:[...e.typeContainerMap.entries()].map(([n,r])=>[n,[...r]]),identifierLineMap:[...e.identifierLineMap.entries()],rustAttrReferencedNames:[...e.rustAttrReferencedNames],crossLanguageDispatchNames:[...e.crossLanguageDispatchNames]};return JSON.stringify(t)}function vw(e){try{let t=JSON.parse(e);if(t.version!==Vf||t.language==="clojure"&&(t.clojureMembers===void 0||t.callSites.some(r=>r.calleeText===void 0)))return null;let n=new Map(t.identifierLineMap);return{language:t.language,callables:t.callables,callSites:t.callSites,clojureMembers:t.clojureMembers??[],typeContainerMap:new Map(t.typeContainerMap.map(([r,i])=>[r,new Set(i)])),identifierLineMap:n,identifiersByLine:Hc(n),fileIdentifiers:new Set(n.keys()),rustAttrReferencedNames:new Set(t.rustAttrReferencedNames),crossLanguageDispatchNames:new Set(t.crossLanguageDispatchNames)}}catch{return null}}function qc(e,t,n,r){let i=z(e,t);return i?Iw(i,n,r)?.isLiteralPassthrough??!0:!0}function hi(e,t){return t.relativePath.includes(".clj-kondo/hooks/")?!0:z(e,t.relativePath)?.callables.find(r=>r.startLine===t.startLine&&r.endLine===t.endLine)?.clojureKind==="macro"}function Iw(e,t,n){return e.callables.find(r=>r.startLine===t&&r.endLine===n)??null}function ww(e,t){let n=[],r=[],i=new Set,o=new Set,s=new Map,a=(l,u)=>{let d=s.get(l);if(!d){s.set(l,[u]);return}d[d.length-1]!==u&&d.push(u)},c=l=>{let u=Ko(l,t);u&&n.push(u);let d=xr(l,t);d&&r.push(d),Uf(l,t,o),t==="rust"&&(l.type==="attribute_item"||l.type==="inner_attribute_item")&&Wf(l.text,i),Bf(l,t)&&a(l.text,l.startPosition.row),$f(l,t)&&Hf(l,a);for(let m of l.children)c(m)};return c(e.rootNode),{language:t,callables:n,callSites:r,clojureMembers:[],typeContainerMap:Gf(e,t),identifierLineMap:s,identifiersByLine:Hc(s),fileIdentifiers:new Set(s.keys()),rustAttrReferencedNames:i,crossLanguageDispatchNames:o}}var qf=new Set(["rust","typescript","tsx","javascript","python","clojure"]);function Kc(e,t){let n=z(e,t);return!n||!qf.has(n.language)?null:n.callables.map(r=>({name:r.name,startLine:r.startLine,endLine:r.endLine}))}function hn(e,t){let n=z(e,t);return!n||!qf.has(n.language)?null:n.callSites}function Jc(e,t){return z(e,t)?.typeContainerMap??new Map}import{ElementTypes as Dw,NodeTypes as Yc,parse as Pw}from"@vue/compiler-dom";import{parse as bX}from"@vue/compiler-sfc";var Ew=new Set(["children","className","data","e","err","error","ev","event","false","id","idx","index","item","key","null","props","res","result","state","style","true","undefined","val","value"]);function Xo(e){return e.length<=2||Ew.has(e)}function Qo(e,t){return e.split(t).filter(Boolean).map(n=>n.charAt(0).toUpperCase()+n.slice(1)).join("")}var kw=fn("vue-template-facts"),Tw=new Set(["component","keep-alive","slot","suspense","teleport","template","transition","transition-group"]),Fw=new Set(["a","abbr","address","area","article","aside","audio","b","base","bdi","bdo","blockquote","body","br","button","canvas","caption","cite","code","col","colgroup","data","datalist","dd","del","details","dfn","dialog","div","dl","dt","em","embed","fieldset","figcaption","figure","footer","form","h1","h2","h3","h4","h5","h6","head","header","hgroup","hr","html","i","iframe","img","input","ins","kbd","label","legend","li","link","main","map","mark","menu","meta","meter","nav","noscript","object","ol","optgroup","option","output","p","param","picture","pre","progress","q","rp","rt","ruby","s","samp","script","search","section","select","slot","small","source","span","strong","style","sub","summary","sup","svg","table","tbody","td","template","textarea","tfoot","th","thead","time","title","tr","track","u","ul","var","video","wbr"]),_w=new Set(["div","span","template"]),Lw=new Set(["as","await","break","case","catch","class","const","continue","debugger","default","delete","do","else","export","extends","false","finally","for","from","function","if","import","in","instanceof","let","new","null","of","return","super","switch","this","throw","true","try","typeof","undefined","var","void","while","with","yield"]);function Zo(e,t){let n=t.replace(/\\/g,"/"),r=k(e,n);return kw.get(e,n,r,()=>Nw(n,Cr(e,n).template))}function Nw(e,t){let n={relativePath:e,template:t?{startLine:t.startLine,endLine:t.endLine}:null,componentTags:[],nativeTags:[],builtinTags:[],props:[],events:[],directives:[],slots:[],expressionIdentifiers:[],structuralTokens:[]};if(!t)return n;let r;try{r=Pw(t.body,{comments:!1})}catch{return n}let i=new Set,o=s=>{s.trim()&&i.add(s)};return Jf(r.children,t.startLine,n,o),n.structuralTokens=[...i].sort(),n}function Jf(e,t,n,r){for(let i of e)if(i.type===Yc.ELEMENT)Aw(i,t,n,r),Jf(i.children,t,n,r);else if(i.type===Yc.INTERPOLATION){r("interpolation");let o=Xc(i.content);o&&Yf(o,t,i.loc.start.line,n,r)}}function Aw(e,t,n,r){let i=Uw(e.tag),o={tag:e.tag,normalized:i,kind:Hw(e),startLine:Rr(t,e.loc.start.line),endLine:Rr(t,e.loc.end.line)};o.kind==="component"?(n.componentTags.push(o),r(`component:${i}`)):o.kind==="builtin"?(n.builtinTags.push(o),r(`builtin:${i}`)):(n.nativeTags.push(o),_w.has(e.tag)||r(`native:${e.tag}`));for(let s of e.props)Mw(s,t,n,r)}function Mw(e,t,n,r){if(e.type===Yc.ATTRIBUTE){let a=e.value?.content??null,c=Kf("prop",e.name,a,t,e.loc.start.line,e.loc.end.line);n.props.push(c),r(`prop:${e.name}`);return}let i=jw(e),o=Xc(e.exp),s=Kf(Ow(e.name),i,o,t,e.loc.start.line,e.loc.end.line);switch(s.kind){case"prop":n.props.push(s),r(`prop:${i}`);break;case"event":n.events.push(s),r(`event:${i}`);break;case"slot":n.slots.push(s),r(`slot:${i}`);break;case"directive":n.directives.push(s),r(`directive:${i}`);break}o&&Yf(o,t,e.loc.start.line,n,r)}function Kf(e,t,n,r,i,o){return{kind:e,name:t,value:n,startLine:Rr(r,i),endLine:Rr(r,o)}}function Ow(e){switch(e){case"bind":case"model":return"prop";case"on":return"event";case"slot":return"slot";default:return"directive"}}function jw(e){let t=Xc(e.arg);return t||e.name}function Xc(e){if(!e)return null;let t=("content"in e&&typeof e.content=="string"?e.content:e.loc.source).trim();return t||null}function Yf(e,t,n,r,i){for(let o of Bw(e)){let s={name:o,startLine:Rr(t,n),endLine:Rr(t,n)};r.expressionIdentifiers.push(s),i(`id:${o}`)}}function Bw(e){let t=new Set,n=$w(e),r=/\b[A-Za-z_$][A-Za-z0-9_$]*\b/g,i;for(;i=r.exec(n);){let o=i[0];Lw.has(o)||Xo(o)||/^[A-Z_]+$/.test(o)||t.add(o)}return[...t].sort()}function $w(e){return e.replace(/\/\*[\s\S]*?\*\//g," ").replace(/\/\/.*$/gm," ").replace(/`(?:\\[\s\S]|\$\{([^}]*)\}|[^`\\])*`/g,(t,n)=>n??" ").replace(/'(?:\\[\s\S]|[^'\\])*'/g," ").replace(/"(?:\\[\s\S]|[^"\\])*"/g," ")}function Hw(e){let t=e.tag;return e.tagType===Dw.COMPONENT?"component":Tw.has(t)?"builtin":Fw.has(t)?"native":/^[A-Z]/.test(t)||t.includes("-")?"component":"native"}function Uw(e){return Qo(e,/[-_:]/)}function Rr(e,t){return e+Math.max(0,t-1)}import{createRequire as eE}from"module";import{existsSync as Wn}from"fs";import{basename as Xf,dirname as qe,extname as Wt,join as it,relative as Hn,resolve as we,sep as tE}from"path";function N(e,t={}){let n=t.scope?"AND relative_path LIKE ?":"",r=t.like?"AND relative_path LIKE ?":"",i=[...t.scope?[`%${t.scope}%`]:[],...t.like?[t.like]:[]],o=e.all(`SELECT relative_path
96
+ FROM documents
97
+ WHERE 1 = 1
98
+ ${e.pathExclusionsFor("documents")}
99
+ ${n}
100
+ ${r}
101
+ ORDER BY relative_path`,...i).map(a=>a.relative_path),s=t.extensions?o.filter(a=>t.extensions.some(c=>a.toLowerCase().endsWith(c.toLowerCase()))):o;return t.includeIgnored===!1?s.filter(a=>!e.isIgnored(a)):s}import{isAbsolute as Ww,relative as Gw}from"path";function yn(e){return e.replace(/\\/g,"/").replace(/^\.\//,"")}function ne(e){return e.replace(/\\/g,"/")}function Ve(e,t){return yn(e)===yn(t)}function DX(e,t){let n=Gw(e,t);return n===""||!n.startsWith("..")&&!Ww(n)}import{existsSync as Zc,readFileSync as el,readdirSync as zw,statSync as Vw}from"fs";import{join as vr,relative as qw}from"path";function Ir(e){let t=Kw(e)??Qw(e);if(!t||t.length===0)return[];let n=[],r=new Set;for(let i of t)for(let o of tl(e,i)){if(r.has(o))continue;r.add(o);let s=Zw(e,o);s&&n.push(s)}return n}function Kw(e){let t=vr(e,"pnpm-workspace.yaml");if(!Zc(t))return null;try{return Jw(el(t,"utf8"))}catch{return null}}function Jw(e){let t=[],n=!1;for(let r of e.split(/\r?\n/)){let i=Yw(r);if(!n){/^packages\s*:\s*$/.test(i.trim())&&(n=!0);continue}let o=/^\s+-\s*(.+)$/.exec(i);if(o){let s=Xw(o[1].trim());s&&t.push(s);continue}if(i.trim()!=="")break}return t}function Yw(e){let t=e.indexOf("#");return t===-1?e:e.slice(0,t)}function Xw(e){return e.startsWith('"')&&e.endsWith('"')||e.startsWith("'")&&e.endsWith("'")?e.slice(1,-1):e}function Qw(e){let t=vr(e,"package.json");if(!Zc(t))return null;try{let n=JSON.parse(el(t,"utf8"));return n.workspaces?Array.isArray(n.workspaces)?n.workspaces:n.workspaces.packages??[]:null}catch{return null}}function tl(e,t){if(!t||t.startsWith("!")||t.includes("node_modules"))return[];if(!t.includes("*")){let s=vr(e,t);return Qc(s)?[s]:[]}let n=t.indexOf("*"),r=t.slice(0,n).replace(/\/$/,""),i=t.slice(n+1).replace(/^\//,""),o=vr(e,r||".");return Qc(o)?zw(o).map(s=>vr(o,s,i)).filter(Qc):[]}function Qc(e){try{return Vw(e).isDirectory()}catch{return!1}}function Zw(e,t){let n=vr(t,"package.json");if(!Zc(n))return null;try{let r=JSON.parse(el(n,"utf8"));return typeof r.name!="string"||r.name.length===0?null:{name:r.name,relativeDir:qw(e,t).replace(/\\/g,"/"),exports:r.exports}}catch{return null}}var nE=X("indexed-paths",{clearGroups:[]}),rE=X("indexed-path-digest",{clearGroups:[]}),iE=j("tsconfig-alias-config",{clearGroups:["whole-project"]}),oE=j("tsconfig-alias-config-for-dir",{clearGroups:["whole-project"]}),sE=eE(import.meta.url),yi;function aE(){if(yi!==void 0)return yi;try{yi=sE("typescript")}catch{yi=null}return yi}var cE=["tsconfig.json","tsconfig.app.json","tsconfig.node.json","tsconfig.base.json"],lE=X("workspace-packages",{clearGroups:["whole-project"]}),Un=[".ts",".tsx",".mts",".cts",".js",".jsx",".mjs",".cjs",".vue"],es=[".py",".pyi"],Ke=[".java",".scala",".kt",".kts"],ts=[".rs"],ns=[".rb"],rs=[".c",".h",".cc",".cpp",".cxx",".hpp",".hh",".hxx"],bn=[".cs",".vb"],is=[".dart"],Gn=[".php"],wr=[".clj",".cljs",".cljc"],uE=new Set(Un),nl=new Set(es),Qf=new Set(Ke),rl=new Set(ts),il=new Set(ns),Zf=new Set(rs),ep=new Set(bn),ol=new Set(is),tp=new Set(Gn),np=new Set(wr),dE=[{extensions:Un,lookup:uE},{extensions:es,lookup:nl},{extensions:Ke,lookup:Qf},{extensions:ts,lookup:rl},{extensions:ns,lookup:il},{extensions:rs,lookup:Zf},{extensions:bn,lookup:ep},{extensions:is,lookup:ol},{extensions:Gn,lookup:tp},{extensions:wr,lookup:np}];function Gt(e,t){return t.has(Wt(e).toLowerCase())}function mE(e){return Gt(e,nl)}function fE(e){return Gt(e,Qf)}function pE(e){return Gt(e,rl)}function gE(e){return Gt(e,il)}function hE(e){return Gt(e,Zf)}function yE(e){return Gt(e,ep)}function rp(e){return Wt(e).toLowerCase()===".vb"}function bE(e){return Gt(e,ol)}function SE(e){return Gt(e,tp)}function CE(e){return Gt(e,np)}function sl(e){let t=Wt(e).toLowerCase();for(let n of dE)if(n.lookup.has(t))return n.extensions;return Un}function xE(e){return fE(e)||yE(e)||SE(e)}function Je(e,t,n){return mE(t)?Er(e,t,n):pE(t)?zt(e,t,n):gE(t)?os(e,t,n):hE(t)?ss(e,t,n):xE(t)?be(e,n.replace(/\\/g,"."),sl(t)):bE(t)?as(e,t,n):CE(t)?al(e,n):RE(e,t,n)}function RE(e,t,n){if(!n.startsWith(".")&&!n.startsWith("/"))return vE(e,t,n)??wE(e,n);let r=qe(it(e.config.projectRoot,t)),i=we(r,n),o=Vt(e);for(let s of ll(i)){let a=ne(Hn(e.config.projectRoot,s));if(o.has(a)||Wn(s))return a}return ne(Hn(e.config.projectRoot,i))}function vE(e,t,n){let r=FE(e,t);if(!r)return null;let i=Vt(e);for(let o of IE(r,n)){let s=we(r.baseUrl,o);for(let a of ll(s)){let c=ne(Hn(e.config.projectRoot,a));if(i.has(c)||Wn(a))return c}}return null}function IE(e,t){let n=[];for(let[r,i]of Object.entries(e.paths)){let o=r.indexOf("*");if(o===-1){if(t!==r)continue;n.push(...i);continue}let s=r.slice(0,o),a=r.slice(o+1);if(!t.startsWith(s)||!t.endsWith(a)||t.length<s.length+a.length)continue;let c=t.slice(s.length,t.length-a.length);for(let l of i)n.push(l.includes("*")?l.replace("*",c):l)}return n}function wE(e,t){let n=DE(EE(e),t);if(!n)return null;let r=Vt(e);for(let i of PE(n)){let o=we(e.config.projectRoot,n.pkg.relativeDir,i);for(let s of ll(o)){let a=ne(Hn(e.config.projectRoot,s));if(r.has(a)||Wn(s))return a}}return null}function EE(e){return lE.get(e,()=>Ir(e.config.projectRoot))}function DE(e,t){let n=null;for(let r of e){let i=null;t===r.name?i="":t.startsWith(`${r.name}/`)&&(i=t.slice(r.name.length+1)),i!==null&&(!n||r.name.length>n.pkg.name.length)&&(n={pkg:r,subpath:i})}return n}function PE(e){let t=[],n=kE(e.pkg.exports,e.subpath);if(n){let r=TE(n);r&&t.push(r)}return t.push(e.subpath?`src/${e.subpath}`:"src/index"),t}function kE(e,t){if(!e||typeof e!="object")return null;let n=t===""?".":`./${t}`;return ip(e[n])}function ip(e){if(typeof e=="string")return e;if(!e||typeof e!="object")return null;let t=e;for(let n of["types","import","default","require","node"]){let r=ip(t[n]);if(r)return r}return null}function TE(e){let t=e.replace(/^\.\//,"");return t.startsWith("dist/")?`src/${t.slice(5)}`:null}function FE(e,t){let n=ne(qe(t));return oE.get(e,n,()=>_E(e,n))}function _E(e,t){let n=aE();if(!n)return null;let r=we(e.config.projectRoot),i=we(r,t);for(;i===r||i.startsWith(r+tE);){for(let s of cE){let a=it(i,s);if(!Wn(a))continue;let c=iE.get(e,a,()=>LE(n,a));if(c)return c}let o=qe(i);if(o===i)break;i=o}return null}function LE(e,t){try{let n=e.readConfigFile(t,e.sys.readFile);if(n.error||!n.config)return null;let r=e.parseJsonConfigFileContent(n.config,e.sys,qe(t)),i=r.options.paths;return!i||Object.keys(i).length===0?null:{baseUrl:r.options.baseUrl?we(qe(t),r.options.baseUrl):qe(t),paths:i}}catch{return null}}function Er(e,t,n){let r=Vt(e),i;if(n.startsWith(".")){let o=n.match(/^(\.+)(.*)$/);if(!o)return null;let s=o[1].length,a=o[2].replace(/^\./,""),c=qe(it(e.config.projectRoot,t));for(let l=1;l<s;l++)c=qe(c);i=a?we(c,a.replace(/\./g,"/")):c}else i=we(e.config.projectRoot,n.replace(/\./g,"/"));for(let o of NE(i)){let s=ne(Hn(e.config.projectRoot,o));if(r.has(s)||Wn(o))return s}return null}function zt(e,t,n){if(!n)return null;let r=n.replace(/\s+as\s+.+$/,"").trim();if(!r.startsWith("crate::")&&!r.startsWith("self::")&&!r.startsWith("super::"))return null;let i=qe(it(e.config.projectRoot,t)),o;return r.startsWith("crate::")?o=we(e.config.projectRoot,"src",r.slice(7).replace(/::/g,"/")):r.startsWith("self::")?o=we(i,r.slice(6).replace(/::/g,"/")):o=we(qe(i),r.slice(7).replace(/::/g,"/")),cl(e,AE(o))}function os(e,t,n){let r=qe(it(e.config.projectRoot,t)),i=we(r,n);return cl(e,ME(i))}function ss(e,t,n){let r=qe(it(e.config.projectRoot,t)),i=[we(r,n),we(e.config.projectRoot,n),we(e.config.projectRoot,"include",n),we(e.config.projectRoot,"src",n)];return cl(e,i)}function be(e,t,n){let r=Vt(e),i=t.replace(/\\/g,".").replace(/::/g,".").replace(/^global::/,""),o=i.replace(/\./g,"/"),s=i.split(".").pop()??i;for(let c of n){let l=`${o}${c}`,u=[...r].find(d=>d.endsWith(l));if(u)return u}for(let c of n){let l=[...r].find(u=>Xf(u)===`${s}${c}`);if(l)return l}let a=[...r].filter(c=>n.includes(Wt(c).toLowerCase())).filter(c=>c.includes(`/${o}/`)||c.includes(`/${s}/`)).sort((c,l)=>c.localeCompare(l));return a.length===1?a[0]:null}function as(e,t,n){let r=Vt(e);if(n.startsWith("package:")){let s=n.slice(8),a=s.indexOf("/");if(a<0)return null;let c=s.slice(a+1),l=ne(c.startsWith("lib/")?c:`lib/${c}`);return r.has(l)?l:null}let i=qe(it(e.config.projectRoot,t)),o=we(i,n);for(let s of OE(o)){let a=ne(Hn(e.config.projectRoot,s));if(r.has(a)||Wn(s))return a}return null}function al(e,t){let n=t.replace(/-/g,"_").replace(/\./g,"/"),r=Vt(e);for(let i of wr){let o=`${n}${i}`,s=[...r].find(a=>a.endsWith(o));if(s)return s}for(let i of wr){let o=[...r].find(s=>Xf(s)===`${n.split("/").pop()}${i}`);if(o)return o}return null}function NE(e){let t=Wt(e);return nl.has(t)?[e]:[`${e}.py`,`${e}.pyi`,it(e,"__init__.py"),it(e,"__init__.pyi")]}function cl(e,t){let n=Vt(e);for(let r of t){let i=ne(Hn(e.config.projectRoot,r));if(n.has(i)||Wn(r))return i}return null}function AE(e){let t=Wt(e);return rl.has(t)?[e]:[`${e}.rs`,it(e,"mod.rs")]}function ME(e){let t=Wt(e);return il.has(t)?[e]:[`${e}.rb`,it(e,"index.rb")]}function OE(e){let t=Wt(e);return ol.has(t)?[e]:[`${e}.dart`,e]}function ll(e){let t=Wt(e),n=new Set;if(t){n.add(e);for(let r of Un)n.add(e.slice(0,-t.length)+r)}else for(let r of Un)n.add(`${e}${r}`),n.add(it(e,`index${r}`));return[...n]}function Vt(e){return nE.get(e,()=>new Set(N(e,{includeIgnored:!1}).map(ne)))}function ul(e){return rE.get(e,()=>he([...Vt(e)].sort().join(`
102
+ `)))}import{readdirSync as jE}from"fs";import{execFileSync as BE}from"child_process";import{extname as cs,join as $E}from"path";var HE=[".ts",".tsx",".mts",".cts",".js",".jsx",".mjs",".cjs",".vue",".rs",".py",".pyi",".java",".kt",".kts",".scala",".sc",".clj",".cljs",".cljc",".rb",".c",".h",".cc",".cpp",".cxx",".hpp",".hh",".hxx",".cs",".vb",".php",".dart"],VX=[".vue"],op=[".tsx",".jsx"],sp=[".vue"],UE=[...op,...sp],WE=new Set(op),GE=new Set(sp),ap=new Set(HE.map(e=>e.toLowerCase())),zE=[...ap].sort().join(","),cp=new Set(["node_modules",".git","target","dist","build",".next",".nuxt",".cache",".turbo",".nbb",".cpcache",".shadow-cljs","out","coverage",".scipquery-cache","__pycache__",".venv","venv",".idea",".vscode"]);function $e(e,t={}){let n=t.includeIndexed??!0,r=t.includeAuxiliary??!0,i=t.extensions?.map(c=>c.toLowerCase()),o=i?new Set(i):ap,s=i?[...o].sort().join(","):zE,a=`${n?"1":"0"}|${r?"1":"0"}|${s}`;return VE.get(e,a,()=>{let c=new Set;if(n)for(let l of N(e,{includeIgnored:!1}))o.has(cs(l).toLowerCase())&&c.add(l);if(r)for(let l of qE(e.config.projectRoot,o))e.isIgnored(l)||n&&c.has(l)||c.add(l);return[...c].sort()})}function ls(e,t={}){let n=!1,r=!1;for(let i of $e(e,{extensions:UE})){if(t.scope&&!i.includes(t.scope))continue;let o=cs(i).toLowerCase();if(n||=WE.has(o),r||=GE.has(o),n&&r)break}return{react:n,vue:r}}var VE=j("source-files",{clearGroups:[]});function qE(e,t){return KE(e,t)??YE(e,t)}function KE(e,t){try{let n=BE("git",["ls-files","--cached","--others","--exclude-standard"],{cwd:e,encoding:"utf-8",timeout:1e4,stdio:["ignore","pipe","ignore"]}),r=new Set;for(let i of n.split(`
103
+ `)){let o=i.trim();o&&(JE(o)||t.has(cs(o).toLowerCase())&&r.add(o))}return r}catch{return null}}function JE(e){return e.split("/").some(t=>cp.has(t))}function YE(e,t){let n=new Set,r=i=>{let o=i?$E(e,i):e,s;try{s=jE(o,{withFileTypes:!0})}catch{return}for(let a of s)if(!cp.has(a.name)){if(a.isDirectory()){r(i?`${i}/${a.name}`:a.name);continue}t.has(cs(a.name).toLowerCase())&&n.add(i?`${i}/${a.name}`:a.name)}};return r(""),n}var XE=new Set(["ref","shallowRef","reactive","computed","watch","watchEffect"]),QE=new Set(["onBeforeMount","onMounted","onBeforeUpdate","onUpdated","onBeforeUnmount","onUnmounted","onActivated","onDeactivated","onErrorCaptured"]),ZE=new Set(["axios","fetch","runRequest","useAsyncData","useFetch","useResource"]),eD=new Set(["defineEmits","defineExpose","defineModel","defineOptions","defineProps","withDefaults"]),tD=new Set(["catch","for","function","if","return","switch","while"]);function ds(e){let t={imports:[],functions:[],calls:[],composables:[],stores:[],reactivity:[],lifecycle:[],requests:[],macros:[],lineCount:0,externalLineCount:0,externalScriptPaths:[],unresolvedScripts:[]};for(let n of e.scripts){t.lineCount+=jn(n),n.external&&(t.externalLineCount+=jn(n),t.externalScriptPaths.push(n.sourcePath));for(let i of n.errors)t.unresolvedScripts.push({sourcePath:n.sourcePath,reason:i});if(!n.body||!n.astLanguage){n.astLanguage||t.unresolvedScripts.push({sourcePath:n.sourcePath,reason:`Unsupported Vue script language: ${n.lang??"unknown"}`});continue}t.imports.push(...oD(n));let r=di(n.astLanguage,n.body);r?rD(n,r.rootNode,t):iD(n,t)}return nD(t),t.externalScriptPaths=up(t.externalScriptPaths),t}function nD(e){e.composables=Dr(e,"composable"),e.stores=Dr(e,"store"),e.reactivity=Dr(e,"reactivity"),e.lifecycle=Dr(e,"lifecycle"),e.requests=Dr(e,"request"),e.macros=Dr(e,"macro")}function Dr(e,t){return up(e.calls.filter(n=>n.categories.includes(t)).map(n=>n.name))}function rD(e,t,n){let r=new Set,i=new Set,o=s=>{let a=Ko(s,e.astLanguage);if(a){let l=`${a.name}:${a.startLine}:${a.endLine}`;i.has(l)||(i.add(l),n.functions.push({name:a.name,sourcePath:e.sourcePath,startLine:e.startLine+a.startLine,endLine:e.startLine+a.endLine,setup:e.setup}))}let c=xr(s,e.astLanguage);if(c){let l=`${c.calleeLeaf}:${c.line}`;r.has(l)||(r.add(l),n.calls.push({name:c.calleeLeaf,sourcePath:e.sourcePath,line:e.startLine+c.line,categories:lp(c.calleeLeaf),setup:e.setup}))}for(let l of s.children)o(l)};o(t)}function iD(e,t){for(let n of e.body.matchAll(/\b([A-Za-z_$][\w$]*)\s*\(/g)){let r=n[1];!r||tD.has(r)||t.calls.push({name:r,sourcePath:e.sourcePath,line:e.startLine+us(e.body,n.index??0),categories:lp(r),setup:e.setup})}for(let n of e.body.matchAll(/\bfunction\s+([A-Za-z_$][\w$]*)\b/g)){let r=n[1];if(!r)continue;let i=e.startLine+us(e.body,n.index??0);t.functions.push({name:r,sourcePath:e.sourcePath,startLine:i,endLine:i,setup:e.setup})}for(let n of e.body.matchAll(/\b(?:const|let|var)\s+([A-Za-z_$][\w$]*)\s*=\s*(?:async\s*)?(?:function\b|\([^)]*\)\s*=>|[A-Za-z_$][\w$]*\s*=>)/g)){let r=n[1];if(!r)continue;let i=e.startLine+us(e.body,n.index??0);t.functions.push({name:r,sourcePath:e.sourcePath,startLine:i,endLine:i,setup:e.setup})}}function oD(e){let t=[];for(let n of e.body.matchAll(/\bimport\s+(?:type\s+)?([^'";]+?)\s+from\s+['"]([^'"]+)['"]/g)){let r=n[1]?.trim(),i=n[2];if(!r||!i)continue;let o=e.startLine+us(e.body,n.index??0);for(let s of sD(r))t.push({local:s,source:i,sourcePath:e.sourcePath,line:o,setup:e.setup})}return t}function sD(e){let t=[],r=e.split(",").map(s=>s.trim()).filter(Boolean)[0];r&&!r.startsWith("{")&&!r.startsWith("*")&&t.push(r);let i=/\{([^}]*)\}/.exec(e)?.[1];if(i)for(let s of i.split(",")){let a=s.trim();if(!a)continue;let c=/\bas\s+([A-Za-z_$][\w$]*)$/.exec(a)?.[1];t.push(c??a.replace(/^type\s+/,"").trim())}let o=/\*\s+as\s+([A-Za-z_$][\w$]*)/.exec(e)?.[1];return o&&t.push(o),t.filter(s=>/^[A-Za-z_$][\w$]*$/.test(s))}function lp(e){let t=["call"];return/^use[A-Z0-9_]/.test(e)&&t.push("composable"),/^use[A-Z0-9_].*Store$/.test(e)&&t.push("store"),XE.has(e)&&t.push("reactivity"),QE.has(e)&&t.push("lifecycle"),ZE.has(e)&&t.push("request"),eD.has(e)&&t.push("macro"),t}function us(e,t){let n=0;for(let r=0;r<t&&r<e.length;r+=1)e.charCodeAt(r)===10&&(n+=1);return n}function up(e){return[...new Set(e)].sort()}var aD=new Set(["in","key","of"]),cD=new Set(["computed","defineEmits","defineProps","reactive","ref","watch","watchEffect"]),lD=fn("vue-component-behavior-profiles");function dp(e,t={}){let n=$e(e,{extensions:[".vue"]}).filter(i=>!t.scope||i.includes(t.scope)).sort();return(typeof t.scanLimit=="number"&&t.scanLimit>0?n.slice(0,t.scanLimit):n).map(i=>dl(e,i)).filter(i=>(t.minTemplateTokens===void 0||i.templateTokens.size>=t.minTemplateTokens)&&(t.minBehaviorTokens===void 0||i.behaviorTokens.size>=t.minBehaviorTokens))}function dl(e,t){let n=t.replace(/\\/g,"/"),r=k(e,n),i=lD.get(e,n,r,()=>uD(e,n,r));return mD(i)}function uD(e,t,n){let r=Cr(e,t),i=Zo(e,t),o=ds(r),s=gD(i),a=i.expressionIdentifiers.map(y=>y.name).filter(y=>!s.includes(y)).filter((y,h,x)=>x.indexOf(y)===h).sort(),c=i.componentTags.map(y=>y.normalized).filter((y,h,x)=>x.indexOf(y)===h).sort(),l=n?n.split(`
104
+ `).length:0,u=jn(r.template),d=o.lineCount,m=r.styles.reduce((y,h)=>y+jn(h),0),f=r.customBlocks.reduce((y,h)=>y+jn(h),0),{lines:p,paths:g}=dD(e,t,o);return{file:t,sfc:r,templateFacts:i,scriptFacts:o,templateTokens:new Set(i.structuralTokens),behaviorTokens:pD(i,o,a),templateBindingNames:a,templateLocalNames:s,componentNames:c,sfcLines:l,totalLines:l+o.externalLineCount,templateLines:u,scriptLines:d,styleLines:m,externalScriptLines:o.externalLineCount,externalScriptPaths:o.externalScriptPaths,customBlockLines:f,delegatedComposableLines:p,delegatedComposablePaths:g}}function dD(e,t,n){let r=new Set;for(let s of n.composables){let a=n.imports.find(l=>l.local===s);if(!a)continue;let c=Je(e,a.sourcePath,a.source);!c||c===t||r.add(c)}let i=[...r].sort();return{lines:i.reduce((s,a)=>{let c=k(e,a);return s+(c?c.split(`
105
+ `).length:0)},0),paths:i}}function mD(e){let t=fD(e.scriptFacts);return{...e,scriptFacts:t,templateTokens:new Set(e.templateTokens),behaviorTokens:new Set(e.behaviorTokens),templateBindingNames:[...e.templateBindingNames],templateLocalNames:[...e.templateLocalNames],componentNames:[...e.componentNames],externalScriptPaths:t.externalScriptPaths,delegatedComposablePaths:[...e.delegatedComposablePaths]}}function fD(e){return{...e,imports:e.imports.map(t=>({...t})),functions:e.functions.map(t=>({...t})),calls:e.calls.map(t=>({...t,categories:[...t.categories]})),composables:[...e.composables],stores:[...e.stores],reactivity:[...e.reactivity],lifecycle:[...e.lifecycle],requests:[...e.requests],macros:[...e.macros],externalScriptPaths:[...e.externalScriptPaths],unresolvedScripts:e.unresolvedScripts.map(t=>({...t}))}}function pD(e,t,n){let r=new Set;for(let i of t.composables)r.add(`composable:${i}`);for(let i of t.stores)r.add(`store:${i}`);for(let i of t.reactivity)r.add(`reactivity:${i}`);for(let i of t.lifecycle)r.add(`lifecycle:${i}`);for(let i of t.requests)r.add(`request:${i}`);for(let i of t.macros)r.add(`macro:${i}`);for(let i of t.functions){if(cD.has(i.name))continue;r.add(`function:${i.name}`);let o=/^[a-z]+/.exec(i.name)?.[0]??null;o&&o.length>2&&o!==i.name&&r.add(`function-verb:${o}`)}for(let i of e.events)r.add(`template-event:${i.name}`);for(let i of n)r.add(`template-binding:${i}`);return r}function gD(e){let t=new Set;for(let n of e.directives)if(n.name==="for"&&n.value)for(let r of hD(n.value))t.add(r);for(let n of e.slots)if(n.value)for(let r of mp(n.value))t.add(r);return[...t].sort()}function hD(e){let t=/^(.*?)\s+(?:in|of)\s+/.exec(e.trim());return t?mp(t[1]??""):[]}function mp(e){let t=[];for(let n of e.matchAll(/\b[A-Za-z_$][\w$]*\b/g)){let r=n[0];aD.has(r)||t.push(r)}return t}import{extname as yD}from"path";function Et(e){return typeof e=="object"&&e!==null}function Me(e){return Array.isArray(e)&&e.every(t=>typeof t=="string")?e:null}var bD=[".tsx",".jsx"],fp=new Set(["useActionState","useCallback","useContext","useDebugValue","useDeferredValue","useEffect","useId","useImperativeHandle","useInsertionEffect","useLayoutEffect","useMemo","useOptimistic","useReducer","useRef","useState","useSyncExternalStore","useTransition"]),SD=new Set(["useEffect","useInsertionEffect","useLayoutEffect"]),CD=new Set(["useActionState","useOptimistic","useReducer","useRef","useState"]),xD=new Set(["useLocation","useNavigate","useParams","useSearchParams","useTranslation"]),RD=new Set(["axios","fetch","gql","graphql","mutate","query","request","useMutation","useQuery","useSuspenseQuery"]),vD=new Set(["add","apply","cancel","change","clear","close","create","delete","fetch","filter","handle","load","open","refresh","remove","render","reset","save","select","submit","toggle","update"]),ID=new Set(["aria-hidden","className","clipRule","d","fill","fillRule","height","role","stroke","strokeLinecap","strokeLinejoin","strokeWidth","style","viewBox","width","xmlns"]),wD=fn("react-component-behavior-profiles"),pp=oe({kind:"react-component-behavior-profiles",invalidation:J("react-component-behavior-profiles"),serialize:kD,deserialize:TD});function bp(e,t={}){let n=$e(e,{extensions:bD}).filter(i=>!t.scope||i.includes(t.scope)).sort();return(typeof t.scanLimit=="number"&&t.scanLimit>0?n.slice(0,t.scanLimit):n).flatMap(i=>fl(e,i)).filter(i=>(t.minJsxTokens===void 0||i.jsxTokens.size>=t.minJsxTokens)&&(t.minBehaviorTokens===void 0||i.behaviorTokens.size>=t.minBehaviorTokens))}function fl(e,t){let n=t.replace(/\\/g,"/"),r=k(e,n);return wD.get(e,n,r,()=>ED(e,n,r)).map(PD)}function ED(e,t,n){let r=ce(e,t,n),i=pp.read(e,t,r);if(i)return i;let o=DD(e,t);return pp.write(e,t,r,o),o}function DD(e,t){let n=_D(t);if(!n)return[];let r=K(e,t);if(!r)return[];let i=Ce(e,t).length;return LD(r.rootNode,n).filter(s=>s.kind==="hook"||pl(s.bodyNode)).map(s=>{let a=$D(s.bodyNode),c=zD(s.bodyNode,n);return{file:t,name:s.name,kind:s.kind,startLine:s.node.startPosition.row,endLine:s.node.endPosition.row,loc:Math.max(1,s.node.endPosition.row-s.node.startPosition.row+1),fileLines:i,jsxTokens:a.tokens,behaviorTokens:c.tokens,componentNames:qt(a.componentNames),nativeTags:qt(a.nativeTags),propNames:qt(a.propNames),eventNames:qt(a.eventNames),hookNames:qt(c.hookNames),requestNames:qt(c.requestNames),stateNames:qt(c.stateNames),effectNames:qt(c.effectNames),handlerNames:qt(c.handlerNames)}})}function PD(e){return{...e,jsxTokens:new Set(e.jsxTokens),behaviorTokens:new Set(e.behaviorTokens),componentNames:[...e.componentNames],nativeTags:[...e.nativeTags],propNames:[...e.propNames],eventNames:[...e.eventNames],hookNames:[...e.hookNames],requestNames:[...e.requestNames],stateNames:[...e.stateNames],effectNames:[...e.effectNames],handlerNames:[...e.handlerNames]}}function kD(e){return JSON.stringify(e.map(t=>({...t,jsxTokens:[...t.jsxTokens],behaviorTokens:[...t.behaviorTokens]})))}function TD(e){try{let t=JSON.parse(e);if(!Array.isArray(t))return null;let n=[];for(let r of t){let i=FD(r);if(!i)return null;n.push(i)}return n}catch{return null}}function FD(e){if(!Et(e))return null;let{file:t,name:n,kind:r,startLine:i,endLine:o,loc:s,fileLines:a,jsxTokens:c,behaviorTokens:l,componentNames:u,nativeTags:d,propNames:m,eventNames:f,hookNames:p,requestNames:g,stateNames:y,effectNames:h,handlerNames:x}=e;if(typeof t!="string"||typeof n!="string"||r!=="component"&&r!=="hook"||!ms(i)||!ms(o)||!ms(s)||!ms(a))return null;let b={jsxTokens:Me(c),behaviorTokens:Me(l),componentNames:Me(u),nativeTags:Me(d),propNames:Me(m),eventNames:Me(f),hookNames:Me(p),requestNames:Me(g),stateNames:Me(y),effectNames:Me(h),handlerNames:Me(x)};return Object.values(b).some(C=>C===null)?null:{file:t,name:n,kind:r,startLine:i,endLine:o,loc:s,fileLines:a,jsxTokens:new Set(b.jsxTokens),behaviorTokens:new Set(b.behaviorTokens),componentNames:b.componentNames,nativeTags:b.nativeTags,propNames:b.propNames,eventNames:b.eventNames,hookNames:b.hookNames,requestNames:b.requestNames,stateNames:b.stateNames,effectNames:b.effectNames,handlerNames:b.handlerNames}}function ms(e){return typeof e=="number"&&Number.isFinite(e)}function _D(e){let t=yD(e).toLowerCase();return t!==".tsx"&&t!==".jsx"?null:M(e)}function LD(e,t){let n=[],r=new Set,i=o=>{let s=ND(o);if(s&&(!jD(o)||s.kind==="component")){let a=`${s.name}:${s.node.startIndex}:${s.node.endIndex}`;r.has(a)||(r.add(a),n.push(s))}for(let a of o.namedChildren)i(a)};return(t==="tsx"||t==="javascript")&&i(e),n}function ND(e){if(e.type==="class_declaration"){let o=ml(e);if(!o||!/^[A-Z]/.test(o))return null;let s=AD(e);return!s||!MD(e)&&!pl(s)?null:{name:o,kind:"component",node:e,bodyNode:s}}if(e.type==="function_declaration"){let o=ml(e);return!o||!gp(o)?null:{name:o,kind:hp(o),node:e,bodyNode:e}}if(e.type!=="variable_declarator")return null;let t=e.childForFieldName("name")??e.namedChild(0),n=e.childForFieldName("value")??e.namedChild(1),r=bi(t);if(!r||!n||!gp(r))return null;let i=OD(n);return i?{name:r,kind:hp(r),node:e,bodyNode:i}:null}function AD(e){for(let t of e.namedChildren)if(t.type==="class_body")for(let n of t.namedChildren){if(n.type!=="method_definition")continue;if((n.childForFieldName("name")??n.namedChild(0))?.text==="render")return n}return null}function MD(e){return/\b(?:React\.)?(?:Pure)?Component\b/.test(e.text)}function gp(e){return/^[A-Z]/.test(e)||/^use[A-Z0-9_]/.test(e)}function hp(e){return/^use[A-Z0-9_]/.test(e)?"hook":"component"}function OD(e){if(e.type==="arrow_function"||e.type==="function_expression")return e;if(e.type!=="call_expression")return null;let t=BD(e);return t!=="memo"&&t!=="forwardRef"?null:e.namedChildren.find(i=>i.type==="arguments")?.namedChildren.find(i=>i.type==="arrow_function"||i.type==="function_expression")??null}function jD(e){let t=e.parent;for(;t;){if(t.type==="function_declaration"||t.type==="function_expression"||t.type==="arrow_function"||t.type==="method_definition")return!0;t=t.parent}return!1}function ml(e){return bi(e.childForFieldName("name")??e.namedChild(0))}function BD(e){let t=e.childForFieldName("function")??e.namedChild(0);return t?t.text.split(".").pop()??t.text:null}function pl(e){return e.type.startsWith("jsx_")?!0:e.namedChildren.some(pl)}function $D(e){let t={tokens:new Set,componentNames:new Set,nativeTags:new Set,propNames:new Set,eventNames:new Set},n=r=>{r.type==="jsx_opening_element"||r.type==="jsx_self_closing_element"?HD(r,t):r.type==="jsx_element"&&r.text.trimStart().startsWith("<>")?t.tokens.add("jsx:fragment"):r.type==="jsx_expression"?UD(r,t):r.type==="jsx_fragment"&&t.tokens.add("jsx:fragment");for(let i of r.children)n(i)};return n(e),t}function HD(e,t){let n=WD(e),r=!1;if(n){let i=yp(n),o=i==="Fragment"||i==="React.Fragment";r=YD(i)&&!o,o?t.tokens.add("jsx:fragment"):r?(t.componentNames.add(i),t.tokens.add(`component:${i}`)):(t.nativeTags.add(i),t.tokens.add(`native:${i}`))}for(let i of e.namedChildren)if(i.type==="jsx_attribute"){let o=GD(i);if(!o)continue;let s=yp(o);if(s.startsWith("on")&&s.length>2){let a=s.slice(2).replace(/^[A-Z]/,c=>c.toLowerCase());t.eventNames.add(a),t.tokens.add(`event:${a}`)}else ID.has(s)||(t.propNames.add(s),t.tokens.add(`${r?"prop":"native-prop"}:${s}`))}else i.type==="jsx_spread_attribute"&&t.tokens.add(Sp(i))}function UD(e,t){let n=e.text;/^\{\s*\.\.\./.test(n)&&t.tokens.add(Sp(e)),Cp(e)&&t.tokens.add("jsx:conditional"),(n.includes(".map(")||n.includes(".flatMap("))&&t.tokens.add("jsx:list");for(let r of XD(n))Xo(r)||t.tokens.add(`binding:${r}`)}function Sp(e){let t=/^\{\s*\.\.\.\s*([^}]+)\s*\}$/.exec(e.text)?.[1],n=e.namedChildren.find(o=>o.type!=="comment"),r=t??n?.text??"",i=/^[A-Za-z_$][\w$]*(?:\.[A-Za-z_$][\w$]*)*$/.exec(r.trim())?.[0];return i?`prop:spread:${i}`:"prop:spread"}function Cp(e){return e.type==="ternary_expression"||e.type==="conditional_expression"?!0:e.namedChildren.some(Cp)}function WD(e){for(let t of e.namedChildren)if(t.type==="identifier"||t.type==="jsx_identifier"||t.type==="property_identifier"||t.type==="member_expression"||t.type==="jsx_member_expression")return t.text;return/^<\s*([A-Za-z][\w$.]*)/.exec(e.text)?.[1]??null}function GD(e){for(let t of e.namedChildren)if(t.type==="property_identifier"||t.type==="identifier"||t.type==="jsx_identifier")return t.text;return/^([A-Za-z_$][\w$:-]*)/.exec(e.text)?.[1]??null}function zD(e,t){let n={tokens:new Set,hookNames:new Set,requestNames:new Set,stateNames:new Set,effectNames:new Set,handlerNames:new Set},r=i=>{if(i.type==="call_expression"){let o=xr(i,t);o&&VD(o.calleeLeaf,n)}else if(i.type==="variable_declarator")KD(i,n);else if(i.type==="function_declaration"){let o=ml(i);o&&xp(o,n)}for(let o of i.namedChildren)r(o)};return r(e),n}function VD(e,t){/^use[A-Z0-9_]/.test(e)&&(t.hookNames.add(e),!fp.has(e)&&!xD.has(e)&&t.tokens.add(`hook:${e}`)),fp.has(e)&&t.tokens.add(`react-hook:${e}`),SD.has(e)&&(t.effectNames.add(e),t.tokens.add(`effect:${e}`)),CD.has(e)&&t.tokens.add(`state-hook:${e}`),qD(e)&&(t.requestNames.add(e),t.tokens.add(`request:${e}`))}function qD(e){if(RD.has(e))return!0;let t=/^use([A-Z0-9_].*)$/.exec(e)?.[1];return t?/(Query|Mutation|Fetch|Resource)$/.test(t):!1}function KD(e,t){let n=e.childForFieldName("name")??e.namedChild(0),r=e.childForFieldName("value")??e.namedChild(1);if(n?.type==="array_pattern"&&r?.text.includes("useState")){let o=n.namedChildren.find(a=>bi(a)),s=bi(o);s&&(t.stateNames.add(s),t.tokens.add(`state:${s}`))}let i=bi(n);i&&xp(i,t)}function xp(e,t){let n=JD(e);!n||!vD.has(n)||(t.handlerNames.add(e),t.tokens.add(`handler:${e}`),t.tokens.add(`handler-verb:${n}`))}function JD(e){let t=e.startsWith("handle")&&e.length>6?e.slice(6).replace(/^[A-Z]/,n=>n.toLowerCase()):e;return/^[a-z]+/.exec(t)?.[0]??null}function YD(e){return/^[A-Z]/.test(e)||e.includes(".")}function yp(e){return e.replace(/^this\./,"").replace(/\$/g,".")}function bi(e){return e&&(e.type==="identifier"||e.type==="property_identifier"||e.type==="shorthand_property_identifier"||/^[A-Za-z_$][\w$]*$/.test(e.text))?e.text:null}function XD(e){let t=[];for(let n of e.matchAll(/\b[A-Za-z_$][\w$]*\b/g)){let r=n[0];t.includes(r)||t.push(r)}return t}function qt(e){return[...e].sort()}function ot(e){return{capability:(t,n)=>QD(t,n),reactProfiles:(t={})=>bp(e,t),reactProfilesForFile:t=>fl(e,t),vueProfiles:(t={})=>dp(e,t),vueProfileForFile:t=>dl(e,t),vueTemplateFacts:t=>Zo(e,t),vueScriptFacts:t=>ds(Cr(e,t))}}function QD(e,t){let n=e.startsWith("react-")?"react":"vue";if(t===void 0)return{slot:e,available:!0,framework:n};let r=t.replace(/\\/g,"/").toLowerCase();return n==="react"&&!r.endsWith(".tsx")&&!r.endsWith(".jsx")?{slot:e,available:!1,framework:n,reason:"React behavior profiles are only available for .tsx and .jsx files"}:n==="vue"&&!r.endsWith(".vue")?{slot:e,available:!1,framework:n,reason:"Vue behavior facts are only available for .vue files"}:{slot:e,available:!0,framework:n}}function zn(e,t,n={}){let r=z(e,t);if(!r)return[];let i=[];if(n.includeCrossLanguageDispatchNames)for(let o of r.crossLanguageDispatchNames)i.push({name:o,kind:"cross-language-dispatch",occurrences:1});if(n.includeRustAttributeNames&&r.language==="rust")for(let o of r.rustAttrReferencedNames)i.push({name:o,kind:"rust-attribute",occurrences:1});return i}import{basename as Ip}from"path";function $(e){return e.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}function st(e){return e.replace(/'''[\s\S]*?'''/g,Sn).replace(/"""[\s\S]*?"""/g,Sn).replace(/#.*$/gm,Sn).replace(/\/\/.*$/gm,Sn).replace(/\/\*[\s\S]*?\*\//g,Sn).replace(/`(?:\\[\s\S]|[^`])*`/g,Sn).replace(/'(?:\\.|[^'\\\r\n])*'/g,Sn).replace(/"(?:\\.|[^"\\\r\n])*"/g,Sn)}function Ci(e){return vp(e,{maskStrings:!1})}function Rp(e){return vp(e,{maskStrings:!0})}function vp(e,t){let n="",r=0,i=e.length;for(;r<i;){if(e[r]==="/"&&e[r+1]==="/"){let s=e.indexOf(`
106
+ `,r),a=s===-1?i:s;n+=gl(e,r,a),r=a;continue}if(e[r]==="/"&&e[r+1]==="*"){let s=e.indexOf("*/",r+2),a=s===-1?i:s+2;n+=gl(e,r,a),r=a;continue}let o=e[r];if(o==="`"||o==="'"||o==='"'){let s=o,a=r+1;for(;a<i;){if(e[a]==="\\"){a+=2;continue}if(e[a]===s){a+=1;break}if(s!=="`"&&e[a]===`
107
+ `)break;a+=1}n+=t.maskStrings?gl(e,r,a):e.slice(r,a),r=a;continue}n+=o,r+=1}return n}function gl(e,t,n){let r="";for(let i=t;i<n;i+=1)r+=e[i]===`
108
+ `?`
109
+ `:" ";return r}function Sn(e){return e.replace(/[^\r\n]/g," ")}var $Q=On("stripped-lines",{clearGroups:["whole-project","source-file"]});mn({name:"stripped-source-singleton",groups:["whole-project","source-file"],clearAll:()=>{fs=null,Si=""},clearFile:()=>{fs=null,Si=""}});var fs=null,Si="";function ZD(e){return fs===e||(fs=e,Si=st(e)),Si}function Cn(e,t,n){let r=ZD(e);return`${r.slice(0,t)}${" ".repeat(n-t)}${r.slice(n)}`}function He(e,t){return new RegExp(`\\b${$(t)}\\b`,"m").test(e)}function Pr(e,t){let n=new Set,r=new RegExp(`\\b${$(t)}\\s*\\.\\s*([A-Za-z_$][\\w$]*)`,"g");for(let i of e.matchAll(r)){let o=i[1];o&&n.add(o)}return[...n]}function xi(e){let t=0;for(let n of e)n==="("&&(t+=1),n===")"&&(t-=1);return t}var eP=new Set(["identifier","type_identifier","property_identifier","shorthand_property_identifier","field_identifier"]);function Ue(e){let t=[],n=0,r=0;for(let i=0;i<e.length;i++){let o=e[i];(o==="{"||o==="["||o==="(")&&n++,(o==="}"||o==="]"||o===")")&&n--,o===","&&n===0&&(t.push(e.slice(r,i)),r=i+1)}return t.push(e.slice(r)),t}function Ye(e,t){for(let n of e.namedChildren)if(n.type===t)return n;return null}function Se(e,t){let n=new Set,r=(i,o)=>{let s=o||t.has(i.type);!s&&eP.has(i.type)&&n.add(i.text);for(let a of i.children)r(a,s)};return r(e.rootNode,!1),n}function bt(e,t,n,r,i,o,s){return{importedName:i,localName:o,sourcePath:s??be(e,r,sl(t)),kind:"named",used:He(n,o),usedMembers:[]}}function pe(e,t,n,r,i="named",o={}){return{importedName:e,localName:t,sourcePath:n,kind:i,used:r.has(t),usedMembers:[],isTypeOnly:o.isTypeOnly}}function Kt(e,t,n,r,i="named",o=[],s={}){return{importedName:e,localName:t,sourcePath:n,kind:i,used:r,usedMembers:o,isTypeOnly:s.isTypeOnly}}function Vn(e,t){return{importedName:e,localName:null,sourcePath:t,kind:"side-effect",used:!0,usedMembers:[]}}function qn(e,t,n={}){return{importedName:e,localName:n.localName??null,sourcePath:t,kind:"namespace",used:n.used??!0,usedMembers:n.usedMembers??[],isTypeOnly:n.isTypeOnly}}function at(e,t,n){let r=[];for(let i of e.matchAll(t)){let o=i[0];if(!o||typeof i.index!="number")continue;let s=Cn(e,i.index,i.index+o.length);for(let a of n(i,s))r.push(a)}return r}function ct(e,t,n,r){let i=K(e,t);if(i){let o=n(i);if(o)return o}return r()}function ps(e,t,n,r){let i=K(e,t),o=M(t),s=o?n[o]:void 0;return i&&s?s(i):r()}function wp(e,t,n){return ct(e,t,r=>nP(e,t,r),()=>tP(e,t,n))}function tP(e,t,n){return at(n,/^[ \t]*#include\s+[<"]([^">]+)[">]\s*$/gm,(r,i)=>{let o=r[1]?.trim();if(!o)return[];let s=Ip(o).replace(/\.[^.]+$/,"");return[Kt(o,s,ss(e,t,o),He(i,s))]})}function nP(e,t,n){let r=Se(n,new Set(["preproc_include"])),i=[];for(let o of n.rootNode.descendantsOfType("preproc_include")){let s=null;for(let c of o.namedChildren){if(c.type==="system_lib_string"){s=c.text.replace(/^<|>$/g,"");break}if(c.type==="string_literal"){s=c.namedChildren.find(u=>u.type==="string_content")?.text??c.text.replace(/^"|"$/g,"");break}}if(!s)continue;let a=Ip(s).replace(/\.[^.]+$/,"");i.push(pe(s,a,ss(e,t,s),r))}return i}var rP=new Set([":require",":require-macros",":use"]),bl=String.raw`A-Za-z0-9_$*+!?.<>=-`;function Dp(e,t,n){let r=pP(n);if(!r)return[];let i=fP(n,r.start,r.end),o=[];for(let s of r.children.slice(2)){if(s.type!=="list"||s.children.length===0)continue;let a=lt(s.children[0]);if(a){if(rP.has(a)){for(let c of sP(s.children.slice(1)))o.push(...oP(e,c,i));continue}if(a===":import")for(let c of cP(s.children.slice(1)))o.push(c)}}return o}function iP(e){return e.type==="list"&&lt(e.children[0])==="ns"}function oP(e,t,n){let r=al(e,t.namespace),i=t.alias??t.namespace,o=uP(n,i),s=[{importedName:t.namespace,localName:i,sourcePath:r,kind:"namespace",used:t.refers.length>0||t.referAll||o.length>0||dP(n,t.namespace),usedMembers:o}];t.referAll&&s.push({importedName:"*",localName:null,sourcePath:r,kind:"side-effect",used:!0,usedMembers:[]});for(let a of t.refers)s.push({importedName:a,localName:a,sourcePath:r,kind:"named",used:mP(n,a),usedMembers:[]});return s}function sP(e){return e.flatMap(t=>gs(t,null))}function gs(e,t){if(e.type==="atom")return e.text.startsWith(":")?[]:[{namespace:yl(t,e.text),alias:null,refers:[],referAll:!1}];if(e.type==="vector")return e.children.length>0&&lt(e.children[0])===null?e.children.flatMap(n=>gs(n,t)):aP(e,t);if(e.type==="list"&&e.children.length>0){let n=lt(e.children[0]);return n?!n||n.startsWith(":")?[]:e.children.slice(1).flatMap(r=>gs(r,yl(t,n))):e.children.flatMap(r=>gs(r,t))}return[]}function aP(e,t){let n=lt(e.children[0]);if(!n||n.startsWith(":"))return[];let r={namespace:yl(t,n),alias:null,refers:[],referAll:!1};for(let i=1;i<e.children.length;i+=1){let o=lt(e.children[i]);if(!o?.startsWith(":"))continue;let s=e.children[i+1];if((o===":as"||o===":as-alias")&&s){r.alias=lt(s),i+=1;continue}o===":refer"&&s&&(lt(s)===":all"?r.referAll=!0:(s.type==="vector"||s.type==="list")&&r.refers.push(...s.children.map(lt).filter(lP)),i+=1)}return[r]}function cP(e){let t=[];for(let n of e){if(n.type==="atom"){let i=n.text.split(".").pop()??n.text;t.push(Kt(i,i,null,!0));continue}if(n.type!=="vector")continue;let r=lt(n.children[0]);if(r)for(let i of n.children.slice(1)){let o=lt(i);o&&t.push(Kt(`${r}.${o}`,o,null,!0))}}return t}function yl(e,t){return e?`${e}.${t}`:t}function lt(e){return e?.type==="atom"?e.text:null}function lP(e){return!!(e&&!e.startsWith(":"))}function uP(e,t){let n=new Set,r=new RegExp(`${Sl()}${$(t)}\\s*/\\s*([${bl}]+)`,"g");for(let i of e.matchAll(r)){let o=i[1];o&&n.add(o)}return[...n]}function dP(e,t){return new RegExp(`${Sl()}${$(t)}\\s*/`,"m").test(e)}function mP(e,t){return new RegExp(`${Sl()}${$(t)}(?![${bl}])`,"m").test(e)}function Sl(){return`(?<![${bl}])`}function fP(e,t,n){let r="",i=0;for(;i<e.length;){if(i>=t&&i<n){r+=e[i]===`
110
+ `?`
111
+ `:" ",i+=1;continue}let o=e[i];if(o===";"){let s=Yo(e,i);r+=Ep(e.slice(i,s)),i=s;continue}if(o==='"'){let s=gi(e,i,0).index;r+=Ep(e.slice(i,s)),i=s;continue}r+=o,i+=1}return r}function pP(e){let t=0;for(;t<e.length&&(t=Cl(e,t),!(t>=e.length));){let n=hs(e,t);if(!n){t+=1;continue}if(iP(n.form))return n.form;t=n.index}return null}function hs(e,t){let n=Cl(e,t);if(e.startsWith("#?@",n)||e.startsWith("#?",n))return gP(e,n);if(e.startsWith("#_",n)){let i=hs(e,n+2);return i?{form:{type:"atom",text:"",start:n,end:i.index},index:i.index}:null}for(;Wc(e[n]);)n+=1;let r=e[n];return r?r==="("?hl(e,n,"list",")"):r==="["?hl(e,n,"vector","]"):r==="{"?hl(e,n,"map","}"):r==='"'?{form:{type:"atom",text:"",start:n,end:gi(e,n,0).index},index:gi(e,n,0).index}:yP(e,n):null}function gP(e,t){let n=e.startsWith("#?@",t)?3:2,r=hs(e,t+n);return r?{form:{type:"list",children:r.form.type==="list"||r.form.type==="vector"||r.form.type==="map"?hP(r.form.children):[],start:t,end:r.index},index:r.index}:null}function hP(e){let t=[];for(let n=0;n<e.length;n+=2){let r=lt(e[n]),i=e[n+1];r?.startsWith(":")&&i&&t.push(i)}return t}function hl(e,t,n,r){let i=[],o=t+1;for(;o<e.length;){if(o=Cl(e,o),e[o]===r)return{form:{type:n,children:i,start:t,end:o+1},index:o+1};let s=hs(e,o);if(!s){o+=1;continue}s.form.type==="atom"&&s.form.text===""||i.push(s.form),o=s.index}return{form:{type:n,children:i,start:t,end:e.length},index:e.length}}function yP(e,t){let n=t;for(;n<e.length&&!Gc(e[n]);)n+=1;return{form:{type:"atom",text:e.slice(t,n),start:t,end:n},index:n}}function Cl(e,t){let n=t;for(;n<e.length;){let r=e[n];if(/\s|,/.test(r)){n+=1;continue}if(r===";"){n=Yo(e,n);continue}break}return n}function Ep(e){return e.replace(/[^\r\n]/g," ")}function Pp(e,t,n){let r=[];for(let i of n.matchAll(/^[ \t]*import\s+['"]([^'"]+)['"](?:\s+as\s+([A-Za-z_]\w*))?[\s\S]*?;$/gm)){let o=i[1]?.trim(),s=i[2]?.trim()??null,a=i[0];if(!o||!a||typeof i.index!="number")continue;let c=Cn(n,i.index,i.index+a.length);r.push({importedName:o,localName:s,sourcePath:as(e,t,o),kind:s?"namespace":"side-effect",used:s?He(c,s):!0,usedMembers:s?Pr(c,s):[]})}return r}function kp(e,t,n){let r=[];for(let i of n.matchAll(/^[ \t]*export\s+['"]([^'"]+)['"][\s\S]*?;$/gm)){let o=i[1]?.trim();o&&r.push({specifier:o,sourcePath:as(e,t,o)})}return r}function Tp(e,t,n){return ps(e,t,{csharp:r=>SP(e,t,r),vb:r=>bP(e,t,r)},()=>{let r=rp(t)?/^[ \t]*Imports\s+(.+?)\s*$/gm:/^[ \t]*using\s+(.+?)\s*;$/gm;return at(n,r,(i,o)=>{let s=i[1]?.trim();if(!s)return[];let[a,c]=s.split(/\s*=\s*/),l=!!c,u=(l?c:a)?.trim()??s,d=u.split(".").pop()??u,m=l?a?.trim()??d:d;return[bt(e,t,o,u,d,m,be(e,u,bn))]})})}function bP(e,t,n){let r=Se(n,new Set(["imports_statement"])),i=[];for(let o of n.rootNode.descendantsOfType("imports_statement")){let s=o.namedChildren.filter(m=>m.type==="namespace_name");if(s.length===0)continue;let a=s[s.length-1],c=s.length>1?s[0]:null,l=a.text,u=l.split(".").pop()??l,d=c?.text??u;i.push(pe(u,d,be(e,l,bn),r,c?"namespace":"named"))}return i}function SP(e,t,n){let r=Se(n,new Set(["using_directive"])),i=[];for(let o of n.rootNode.descendantsOfType("using_directive")){let s=o.namedChildren;if(s.length===0)continue;let a=null,c;s.length>=2&&s[0].type==="identifier"&&(s[1].type==="qualified_name"||s[1].type==="identifier")?(a=s[0],c=s[1]):c=s[s.length-1];let l=c.text,u=l.split(".").pop()??l,d=a?.text??u;i.push(pe(u,d,be(e,l,bn),r,a?"namespace":"named"))}return i}var CP=j("vue-non-script-identifiers",{clearGroups:["whole-project","source-file"]});function Fp(e,t){return CP.get(e,t,()=>{let n=new Set,r=k(e,t);if(!r)return n;let o=r.replace(/<script\b[^>]*>[\s\S]*?<\/script>/g,s=>s.replace(/[^\r\n]/g," ")).replace(/<!--[\s\S]*?-->/g,s=>s.replace(/[^\r\n]/g," ")).replace(/\/\*[\s\S]*?\*\//g,s=>s.replace(/[^\r\n]/g," "));for(let s of o.matchAll(/[A-Za-z_$][\w$]*/g))n.add(s[0]);return n})}function xl(e,t,n){return ct(e,t,r=>RP(e,t,r),()=>xP(e,t,n))}function xP(e,t,n){return LP(n).flatMap(r=>NP(e,t,r.clause,r.specifier,r.start,r.end,n))}function RP(e,t,n){let r=vP(e,t,n),i=[];for(let o of n.rootNode.descendantsOfType("import_statement"))i.push(...IP(e,t,n,o,r));return i}function vP(e,t,n){let r=Se(n,new Set(["import_statement"]));if(Ut(t))for(let i of Fp(e,t))r.add(i);return r}function IP(e,t,n,r,i){let o=kP(r);if(!o)return[];let s=Je(e,t,o),a=Ye(r,"import_clause");return a?wP(n,a,s,i,TP(r.text)):[Vn("*",s)]}function wP(e,t,n,r,i){let o=[];for(let s of t.namedChildren)if(s.type==="identifier")o.push(EP(s.text,n,r,i));else if(s.type==="namespace_import"){let a=DP(e,s,n,r,i);a&&o.push(a)}else s.type==="named_imports"&&o.push(...PP(s,n,r,i));return o}function EP(e,t,n,r){return pe("default",e,t,n,"default",{isTypeOnly:r})}function DP(e,t,n,r,i){let s=Ye(t,"identifier")?.text??"";if(!s)return null;let a=_P(e,s);return qn("*",n,{localName:s,usedMembers:a,isTypeOnly:i,used:a.length>0||r.has(s)})}function PP(e,t,n,r){let i=[];for(let o of e.namedChildren){if(o.type!=="import_specifier")continue;let s=o.namedChild(0),a=o.namedChild(1);if(!s)continue;let c=s.text,l=a?.text??c;i.push(pe(c,l,t,n,"named",{isTypeOnly:r||FP(o.text)}))}return i}function kP(e){let t=Ye(e,"string");if(!t)return null;let n=Ye(t,"string_fragment");return n?n.text:null}function TP(e){return/^\s*import\s+type\b/.test(e)}function FP(e){return/^\s*type\b/.test(e.trim())}function _P(e,t){let n=new Set;for(let r of e.rootNode.descendantsOfType("member_expression")){let i=r.namedChild(0),o=r.namedChild(1);!i||!o||i.type!=="identifier"||i.text!==t||(o.type==="property_identifier"||o.type==="identifier")&&n.add(o.text)}return[...n]}function LP(e){let t=[],n=/^[ \t]*import\s+([\s\S]*?)\s+from\s+['"]([^'"]+)['"]\s*;?/gm;for(let i of e.matchAll(n)){let o=i[0],s=i[1],a=i[2];!o||!a||typeof i.index!="number"||t.push({clause:s,specifier:a,start:i.index,end:i.index+o.length})}let r=/^[ \t]*import\s+['"]([^'"]+)['"]\s*;?/gm;for(let i of e.matchAll(r)){let o=i[0],s=i[1];!o||!s||typeof i.index!="number"||t.push({clause:null,specifier:s,start:i.index,end:i.index+o.length})}return t.sort((i,o)=>i.start-o.start)}function NP(e,t,n,r,i,o,s){let a=Je(e,t,r),c=Cn(s,i,o);return n?AP(n).map(u=>({...u,sourcePath:a})).map(u=>{if(u.kind==="namespace"){let d=Pr(c,u.localName);return qn(u.importedName,u.sourcePath,{localName:u.localName,usedMembers:d,used:d.length>0||He(c,u.localName),isTypeOnly:u.isTypeOnly})}return u.kind==="side-effect"?Vn(u.importedName,u.sourcePath):Kt(u.importedName,u.localName??"",u.sourcePath,u.localName?He(c,u.localName):!1,u.kind,[],{isTypeOnly:u.isTypeOnly})}):[Vn("*",a)]}function AP(e){let t=e.trim(),n=/^type\b/.test(t),r=t.replace(/^type\s+/,""),[i,o]=MP(r),s=[];return i&&s.push(..._p(i,n)),o&&s.push(..._p(o,n)),s}function _p(e,t){let n=e.trim();if(!n)return[];if(n.startsWith("{")){let r=n.slice(1,-1).trim();return r?Ue(r).map(i=>{let o=i.trim(),s=t||/^type\b/.test(o),a=o.replace(/^type\s+/,""),[c,l]=a.split(/\s+as\s+/);return{importedName:c.trim(),localName:(l??c).trim(),kind:"named",isTypeOnly:s}}):[]}return n.startsWith("* as ")?[{importedName:"*",localName:n.slice(5).trim(),kind:"namespace",isTypeOnly:t}]:[{importedName:"default",localName:n,kind:"default",isTypeOnly:t}]}function MP(e){let t=0;for(let n=0;n<e.length;n++){let r=e[n];if(r==="{"&&t++,r==="}"&&t--,r===","&&t===0)return[e.slice(0,n).trim(),e.slice(n+1).trim()]}return[e.trim(),null]}function Rl(e,t,n){let r=K(e,t);return r?UP(e,t,r):OP(e,t,n)}function OP(e,t,n){return[...jP(e,t,n),...BP(e,t,n),...$P(e,t,n)]}function jP(e,t,n){let r=[],i=/^[ \t]*export\s+(?:type\s+)?\{([\s\S]*?)\}\s+from\s+['"]([^'"]+)['"]\s*;?/gm;for(let o of n.matchAll(i)){if(typeof o.index!="number")continue;let s=o[1]??"",a=o[2]??"",c=Ue(s).map(d=>HP(d.trim())).filter(d=>!!d),l=kr(n,o.index),u=kr(n,o.index+o[0].length-1);r.push({kind:"named",sourcePath:Je(e,t,a),names:c,startLine:l,endLine:u})}return r}function BP(e,t,n){let r=[],i=/^[ \t]*export\s+\*\s+as\s+(\w+)\s+from\s+['"]([^'"]+)['"]\s*;?/gm;for(let o of n.matchAll(i)){if(typeof o.index!="number")continue;let s=o[2]??"",a=kr(n,o.index),c=kr(n,o.index+o[0].length-1);r.push({kind:"star-as",sourcePath:Je(e,t,s),names:[],startLine:a,endLine:c})}return r}function $P(e,t,n){let r=[],i=/^[ \t]*export\s+\*\s+from\s+['"]([^'"]+)['"]\s*;?/gm;for(let o of n.matchAll(i)){if(typeof o.index!="number")continue;let s=o[1]??"",a=kr(n,o.index),c=kr(n,o.index+o[0].length-1);r.push({kind:"star",sourcePath:Je(e,t,s),names:[],startLine:a,endLine:c})}return r}function HP(e){if(!e)return null;let t=e.replace(/^type\s+/,"").trim();if(!t)return null;let n=t.match(/^(\w+)\s+as\s+(\w+)$/);if(n)return n[2]??null;let r=t.match(/^(\w+)$/);return r?r[1]??null:null}function kr(e,t){let n=0;for(let r=0;r<t&&r<e.length;r++)e.charCodeAt(r)===10&&n++;return n}function UP(e,t,n){let r=[];for(let i of n.rootNode.descendantsOfType("export_statement")){let o=WP(e,t,i);if(o===void 0)continue;let s=i.startPosition.row,a=i.endPosition.row,c=GP(i,o,s,a);r.push(c)}return r}function WP(e,t,n){let r=Ye(n,"string");if(!r)return;let i=Ye(r,"string_fragment");if(i)return Je(e,t,i.text)}function GP(e,t,n,r){let i=Ye(e,"export_clause");if(i){let s=[];for(let a of i.namedChildren){if(a.type!=="export_specifier")continue;let c=a.namedChild(0),l=a.namedChild(1);c&&s.push((l??c).text)}return{kind:"named",sourcePath:t,names:s,startLine:n,endLine:r}}return Ye(e,"namespace_export")?{kind:"star-as",sourcePath:t,names:[],startLine:n,endLine:r}:{kind:"star",sourcePath:t,names:[],startLine:n,endLine:r}}function Lp(e,t,n){return ps(e,t,{java:r=>zP(e,t,r),kotlin:r=>VP(e,t,r),scala:r=>qP(e,t,r)},()=>at(n,/^[ \t]*import\s+(?:static\s+)?(.+?)\s*;?$/gm,(r,i)=>{let o=r[1]?.trim();return o?KP(e,t,o,i):[]}))}function zP(e,t,n){let r=Se(n,new Set(["import_declaration"])),i=[];for(let o of n.rootNode.descendantsOfType("import_declaration")){let s=o.children.some(d=>d.type==="asterisk"),c=o.namedChildren.find(d=>d.type==="scoped_identifier")??o.namedChildren.find(d=>d.type==="identifier");if(!c)continue;let l=c.text;if(s){i.push(qn("*",be(e,l,Ke)));continue}let u=l.split(".").pop()??l;i.push(pe(u,u,be(e,l,Ke),r))}return i}function VP(e,t,n){let r=Se(n,new Set(["import_header","import_list"])),i=[];for(let o of n.rootNode.descendantsOfType("import_header")){let s=o.namedChildren.find(f=>f.type==="identifier");if(!s)continue;let a=o.namedChildren.some(f=>f.type==="wildcard_import"),c=o.namedChildren.find(f=>f.type==="import_alias");if(a){i.push(qn("*",be(e,s.text,Ke)));continue}let l=s.text,u=l.split(".").pop()??l,m=c?.namedChild(0)?.text??u;i.push(pe(u,m,be(e,l,Ke),r))}return i}function qP(e,t,n){let r=Se(n,new Set(["import_declaration"])),i=[];for(let o of n.rootNode.descendantsOfType("import_declaration")){let s=o.namedChildren.find(d=>d.type==="namespace_selectors"||d.type==="namespace_wildcard"),a=o.namedChildren.filter(d=>d!==s&&(d.type==="identifier"||d.type==="stable_identifier")),c=a.map(d=>d.text).join(".");if(!c)continue;if(s?.type==="namespace_wildcard"){i.push(qn("*",be(e,c,Ke)));continue}if(s?.type==="namespace_selectors"){for(let d of s.namedChildren)if(d.type==="arrow_renamed_identifier"){let[m,f]=d.namedChildren;if(!m)continue;let p=m.text,g=f?.text??p;if(p==="_")continue;i.push(pe(p,g,be(e,`${c}.${p}`,Ke),r))}else if(d.type==="identifier"){let m=d.text;i.push(pe(m,m,be(e,`${c}.${m}`,Ke),r))}continue}let l=a[a.length-1]?.text??c,u=a.slice(0,-1).map(d=>d.text).join(".")||c;i.push(pe(l,l,be(e,u&&a.length>1?`${u}.${l}`:c,Ke),r))}return i}function KP(e,t,n,r){if(n.includes("{")&&n.includes("}")){let i=n.slice(0,n.indexOf("{")).replace(/\.$/,"").trim(),o=n.slice(n.indexOf("{")+1,n.lastIndexOf("}")).trim();return Ue(o).flatMap(s=>{let a=s.trim();if(!a)return[];let[c,l]=a.includes("=>")?a.split(/\s*=>\s*/):a.split(/\s+as\s+/),u=c?.trim();if(!u||u==="_")return[];let d=(l??u.split(".").pop()??u).trim(),m=u==="_"?i:`${i}.${u}`.replace(/\.\./g,".");return[bt(e,t,r,m,u,d)]})}return[bt(e,t,r,n,n.split(".").pop()??n,n.split(".").pop()??n)]}function Ap(e,t,n){return ct(e,t,r=>JP(e,t,r),()=>at(n,/^[ \t]*use\s+(.+?)\s*;$/gm,(r,i)=>{let o=r[1]?.trim();return o?Ue(o).flatMap(s=>{let a=s.trim();if(!a)return[];let[c,l]=a.split(/\s+as\s+/i),u=c?.trim()??a,d=u.split("\\").pop()??u,m=(l??d).trim();return[bt(e,t,i,u,d,m,be(e,u.replace(/\\/g,"."),Gn))]}):[]}))}function JP(e,t,n){let r=Se(n,new Set(["namespace_use_declaration"])),i=[],o=(s,a,c)=>{i.push(pe(a,c,be(e,s.replace(/\\/g,"."),Gn),r))};for(let s of n.rootNode.descendantsOfType("namespace_use_declaration")){let a=s.namedChildren.find(c=>c.type==="namespace_use_group");if(a){let c=s.namedChildren.find(l=>l.type==="namespace_name")?.text??"";for(let l of a.namedChildren){if(l.type!=="namespace_use_clause")continue;let{importedName:u,localName:d,qualified:m}=Np(l,c);u&&o(m,u,d)}continue}for(let c of s.namedChildren){if(c.type!=="namespace_use_clause")continue;let{importedName:l,localName:u,qualified:d}=Np(c,"");l&&o(d,l,u)}}return i}function Np(e,t){let n=e.namedChildren.find(l=>l.type==="qualified_name"),r=e.namedChildren.filter(l=>l.type==="name"),i="";n?i=n.text:r.length>=1&&(i=r[0].text);let o=n&&r.length>0?r[r.length-1]:null,s=i.split("\\").pop()??i,a=o?.text??s,c=t?`${t}\\${i}`:i;return{importedName:s,localName:a,qualified:c}}function Op(e,t,n){return ct(e,t,r=>YP(e,t,r),()=>QP(n).flatMap(r=>ek(e,t,r,n)))}function YP(e,t,n){let r=Se(n,new Set(["import_statement","import_from_statement"])),i=[];for(let o of n.rootNode.descendantsOfType("import_statement"))for(let s of o.namedChildren){let a=Mp(s);if(!a)continue;let c=Er(e,t,a.qualifiedName);i.push({importedName:a.qualifiedName,localName:a.localName,sourcePath:c,kind:"namespace",used:r.has(a.localName),usedMembers:[]})}for(let o of n.rootNode.descendantsOfType("import_from_statement")){let s=o.namedChild(0);if(!s)continue;let a=XP(s);if(a===null)continue;let c=Er(e,t,a);for(let l=1;l<o.namedChildCount;l+=1){let u=o.namedChild(l);if(u.type==="wildcard_import"){i.push({importedName:"*",localName:null,sourcePath:c,kind:"side-effect",used:!0,usedMembers:[]});continue}let d=Mp(u);d&&i.push({importedName:d.qualifiedName,localName:d.localName,sourcePath:c,kind:"named",used:r.has(d.localName),usedMembers:[]})}}return i}function Mp(e){if(e.type==="aliased_import"){let t=e.namedChild(0),n=e.namedChild(1);return!t||!n?null:{qualifiedName:t.text,localName:n.text}}if(e.type==="dotted_name"){let t=e.text;return{qualifiedName:t,localName:t.split(".")[0]??t}}return e.type==="identifier"?{qualifiedName:e.text,localName:e.text}:null}function XP(e){if(e.type==="dotted_name")return e.text;if(e.type==="relative_import"){let t=Ye(e,"import_prefix")?.text??"",n=Ye(e,"dotted_name")?.text??"";return`${t}${n}`}return null}function QP(e){let t=e.split(`
112
+ `),n=[],r=0;for(let i=0;i<t.length;i++){let o=t[i],s=o.trimStart(),a=r;if(r+=o.length+1,!s.startsWith("import ")&&!s.startsWith("from "))continue;let c=o,l=a+o.length,u=xi(o);for(;i+1<t.length&&(u>0||c.trimEnd().endsWith("\\"));){i++;let m=t[i];c+=`
113
+ ${m}`,l+=1+m.length,u+=xi(m),r+=m.length+1}let d=ZP(c);d&&n.push({...d,start:a,end:l})}return n}function ZP(e){let t=e.replace(/\\\s*\n/g," ").trim();if(t.startsWith("import "))return{kind:"import",module:null,clause:t.slice(7).trim()};let n=t.match(/^from\s+([.\w]+)\s+import\s+([\s\S]+)$/);if(!n)return null;let r=n[2].trim();return r.startsWith("(")&&r.endsWith(")")&&(r=r.slice(1,-1).trim()),{kind:"from",module:n[1],clause:r}}function ek(e,t,n,r){let i=Cn(r,n.start,n.end),o=n.clause.replace(/\n/g," ").trim();if(n.kind==="import")return Ue(o).flatMap(c=>{let l=c.trim().replace(/,$/,"");if(!l)return[];let[u,d]=l.split(/\s+as\s+/),m=u.trim(),f=(d??m.split(".")[0]??m).trim(),p=Er(e,t,m),g=Pr(i,f);return[{importedName:m,localName:f,sourcePath:p,kind:"namespace",used:He(i,f)||g.length>0,usedMembers:g}]});let s=n.module?Er(e,t,n.module):null,a=[];for(let c of Ue(o)){let l=c.trim().replace(/,$/,"");if(!l)continue;if(l==="*"){a.push({importedName:"*",localName:null,sourcePath:s,kind:"side-effect",used:!0,usedMembers:[]});continue}let[u,d]=l.split(/\s+as\s+/),m=(d??u).trim();a.push({importedName:u.trim(),localName:m,sourcePath:s,kind:"named",used:He(i,m),usedMembers:[]})}return a}import{basename as tk}from"path";function jp(e,t,n){return ct(e,t,r=>rk(e,t,r),()=>nk(e,t,n))}function nk(e,t,n){return at(n,/^[ \t]*(require_relative|require)\s+["']([^"']+)["']\s*$/gm,(r,i)=>{let o=r[1],s=r[2];if(!o||!s)return[];let a=o==="require_relative"?os(e,t,s):null;if(a){let c=Bp(s);return[Kt(c,c,a,He(i,c))]}return[Vn(s,a)]})}function rk(e,t,n){let r=Se(n,new Set([])),i=[],o=new Set(["require","require_relative","load"]);for(let s of n.rootNode.descendantsOfType("call")){let a=s.namedChild(0);if(!a||a.type!=="identifier"||!o.has(a.text))continue;let l=s.namedChildren.find(f=>f.type==="argument_list")?.namedChild(0);if(!l||l.type!=="string")continue;let d=l.namedChildren.find(f=>f.type==="string_content")?.text;if(!d)continue;let m=a.text==="require_relative"?os(e,t,d):null;if(m){let f=Bp(d);i.push(pe(f,f,m,r))}else i.push(Vn(d,m))}return i}function Bp(e){return Qo(tk(e).replace(/\.[^.]+$/,""),/_/)}function $p(e,t,n){return ct(e,t,r=>ik(e,t,r),()=>at(n,/^[ \t]*use\s+(.+?)\s*;$/gm,(r,i)=>{let o=r[1]?.trim();return o?ok(e,t,o,i):[]}))}function ik(e,t,n){let r=Se(n,new Set(["use_declaration"])),i=[];for(let o of n.rootNode.descendantsOfType("use_declaration")){let s=o.namedChild(0);if(s)for(let a of Ri(s,"")){if(!a.importedName||a.importedName==="*")continue;let c=zt(e,t,a.qualifiedName)??zt(e,t,a.qualifiedName.split("::").slice(0,-1).join("::"));i.push(pe(a.importedName,a.localName,c,r))}}return i}function Ri(e,t){switch(e.type){case"identifier":case"super":case"crate":{let n=e.text;return[{qualifiedName:Tr(t,n),importedName:n,localName:n}]}case"self":{let n=t.split("::").filter(Boolean).pop()??"self";return[{qualifiedName:t||"self",importedName:n,localName:n}]}case"scoped_identifier":{let n=e.text,r=n.split("::").pop()??n;return[{qualifiedName:Tr(t,n),importedName:r,localName:r}]}case"scoped_use_list":{let n=e.namedChild(0),r=e.namedChild(1);if(!n||!r)return[];let i=Tr(t,n.text),o=[];for(let s of r.namedChildren)o.push(...Ri(s,i));return o}case"use_list":{let n=[];for(let r of e.namedChildren)n.push(...Ri(r,t));return n}case"use_as_clause":{let n=e.namedChild(0),r=e.namedChild(1);if(!n||!r)return[];let i=Ri(n,t),o=r.text;return i.map(s=>({...s,localName:o}))}case"use_wildcard":{let n=e.namedChild(0),r=n?n.text:"";return[{qualifiedName:Tr(t,`${r}::*`),importedName:"*",localName:"*"}]}default:return[]}}function Tr(e,t){return e?t?`${e}::${t}`:e:t}function ok(e,t,n,r){let i=n.trim();if(i.includes("{")&&i.includes("}")){let u=i.slice(0,i.indexOf("{")).replace(/::$/,"").trim(),d=i.slice(i.indexOf("{")+1,i.lastIndexOf("}")).trim();return Ue(d).flatMap(m=>{let f=m.trim();if(!f)return[];if(f==="self"){let b=u.split("::").filter(Boolean).pop();return b?[bt(e,t,r,u,b,b)]:[]}let[p,g]=f.split(/\s+as\s+/),y=p?.trim();if(!y)return[];let h=(g??y.split("::").pop()??y).trim(),x=`${u}::${y}`.replace(/::::/g,"::");return[bt(e,t,r,x,y.split("::").pop()??y,h,zt(e,t,u))]})}let[o,s]=i.split(/\s+as\s+/),a=o?.trim()??i,c=(s??a.split("::").pop()??a).trim(),l=zt(e,t,a)??zt(e,t,a.split("::").slice(0,-1).join("::"));return[bt(e,t,r,a,a.split("::").pop()??a,c,l)]}function Hp(e,t,n){let r=K(e,t);if(r)return sk(e,t,r);let i=[];for(let o of n.matchAll(/^[ \t]*pub\s+use\s+(.+?)\s*;$/gm)){let s=o[1]?.trim();s&&i.push(...ck(e,t,s))}return i}function sk(e,t,n){let r=[];for(let i of n.rootNode.descendantsOfType("use_declaration")){if(!ak(i))continue;let o=i.namedChildren.find(s=>s.type!=="visibility_modifier");if(o)for(let s of Ri(o,""))s.importedName&&r.push(vl(e,t,s.qualifiedName))}return r}function ak(e){for(let t of e.children)if(t.type==="visibility_modifier"&&t.text.startsWith("pub"))return!0;return!1}function ck(e,t,n){let r=n.trim();if(r.includes("{")&&r.includes("}")){let i=r.slice(0,r.indexOf("{")).replace(/::$/,"").trim(),o=r.slice(r.indexOf("{")+1,r.lastIndexOf("}")).trim();return Ue(o).flatMap(s=>{let a=s.trim();if(!a||a==="self")return[];let[c]=a.split(/\s+as\s+/),l=`${i}::${c?.trim()??a}`.replace(/::::/g,"::");return[vl(e,t,l)]})}return[vl(e,t,r)]}function vl(e,t,n){return{specifier:n,sourcePath:zt(e,t,n)??zt(e,t,n.split("::").slice(0,-1).join("::"))}}function xn({language:e,extensions:t,imports:n,parseImports:r}){return{language:e,extensions:t,capabilities:{imports:n},parseImports:r}}function Up(e,t){let n=t.toLowerCase();for(let r of e)for(let i of r.extensions)if(n.endsWith(i))return r;return null}var lk={language:"javascript",extensions:Un,capabilities:{imports:"ast-with-regex-fallback",reExports:"ast-with-regex-fallback"},parseImports:xl,parseReExports:Rl},uk=xn({language:"python",extensions:es,imports:"ast-with-regex-fallback",parseImports:Op}),dk=xn({language:"jvm",extensions:Ke,imports:"ast-dispatch-with-regex-fallback",parseImports:Lp}),mk={language:"rust",extensions:ts,capabilities:{imports:"ast-with-regex-fallback",exports:"ast-with-regex-fallback"},parseImports:$p,parseExports:Hp},fk=xn({language:"ruby",extensions:ns,imports:"ast-with-regex-fallback",parseImports:jp}),pk=xn({language:"c/cpp",extensions:rs,imports:"ast-with-regex-fallback",parseImports:wp}),gk=xn({language:"dotnet",extensions:bn,imports:"ast-dispatch-with-regex-fallback",parseImports:Tp}),hk={language:"dart",extensions:is,capabilities:{imports:"regex-only",exports:"regex-only"},parseImports:Pp,parseExports:kp},yk=xn({language:"php",extensions:Gn,imports:"ast-with-regex-fallback",parseImports:Ap}),bk=xn({language:"clojure",extensions:wr,imports:"regex-only",parseImports:Dp}),Wp=[lk,uk,dk,mk,fk,pk,gk,hk,yk,bk];function ys(e){return Up(Wp,e)}function i8(e){return Wp.find(n=>n.language===e)?.capabilities??null}var Il={clearGroups:["whole-project","source-file"]},Sk=j("source-imports",Il),Ck=j("source-exports",Il),xk=j("source-reexports",Il),Gp=oe({kind:"source-imports",invalidation:J("source-imports"),serialize:Rk,deserialize:vk}),zp=oe({kind:"source-reexports",invalidation:J("source-reexports"),serialize:Ik,deserialize:wk});function Jt(e,t){let n=ne(t);return xk.get(e,n,()=>{let r=ys(n);if(!r?.parseReExports)return[];let i=k(e,n);if(!i)return[];let o=ce(e,n,i),s=ul(e),a=zp.read(e,n,o);if(a?.resolutionFingerprint===s)return a.reExports;let c=r.parseReExports(e,n,i);return zp.write(e,n,o,{resolutionFingerprint:s,reExports:c}),c})}function Z(e,t){let n=ne(t);return Sk.get(e,n,()=>{let r=ys(n);if(!r)return[];let i=k(e,n);if(!i)return[];let o=ce(e,n,i),s=ul(e),a=Gp.read(e,n,o);if(a?.resolutionFingerprint===s)return a.imports;let c=r.parseImports(e,n,i);return Gp.write(e,n,o,{resolutionFingerprint:s,imports:c}),c})}function bs(e,t){let n=ne(t);return Ck.get(e,n,()=>{let r=ys(n);if(!r?.parseExports)return[];let i=k(e,n);return i?r.parseExports(e,n,i):[]})}function Rk(e){return JSON.stringify(e)}function vk(e){try{let t=JSON.parse(e);return!Et(t)||typeof t.resolutionFingerprint!="string"||!Array.isArray(t.imports)?null:{resolutionFingerprint:t.resolutionFingerprint,imports:t.imports}}catch{return null}}function Ik(e){return JSON.stringify(e)}function wk(e){try{let t=JSON.parse(e);return!Et(t)||typeof t.resolutionFingerprint!="string"||!Array.isArray(t.reExports)?null:{resolutionFingerprint:t.resolutionFingerprint,reExports:t.reExports}}catch{return null}}function ut(e){return{forFile(t,n){return Vp(e,t,n)},forFiles(t,n){let r=new Map;for(let i of t)r.set(i,Vp(e,i,n));return r}}}function Vp(e,t,n){let r={file:t},i=n.facts||n.identifiers;if(n.text&&(r.text=k(e,t)),n.lines&&(r.lines=Ce(e,t)),n.ast&&(r.ast=K(e,t)),n.imports&&(r.imports=Z(e,t)),n.reexports&&(r.reexports=Jt(e,t)),i){let o=Vc(e,t),s=o.facts;n.facts&&(r.facts=s),o.unavailable&&(r.sourceFactsUnavailable=o.unavailable),n.identifiers&&s&&(r.identifiers=s.fileIdentifiers,r.identifierLineMap=s.identifierLineMap)}return r}function Kn(e,t){return e.all(`SELECT gs.id, gs.symbol, der.document_id, der.start_line, der.start_char, der.end_line, der.end_char, d.relative_path, gs.display_name, gs.documentation
114
+ FROM global_symbols gs
115
+ JOIN defn_enclosing_ranges der ON gs.id = der.symbol_id
116
+ JOIN documents d ON der.document_id = d.id
117
+ WHERE ${t.where}
118
+ ${e.pathExclusionsFor("d")}
119
+ ${Kp(t.orderBy)}
120
+ ${Jp(t.limit)}`,...t.params??[])}function Fr(e,t){return e.all(`SELECT
121
+ gs.id,
122
+ gs.symbol,
123
+ c.document_id,
124
+ MIN(c.start_line) AS start_line,
125
+ 0 AS start_char,
126
+ MAX(c.end_line) AS end_line,
127
+ 0 AS end_char,
128
+ d.relative_path,
129
+ gs.display_name,
130
+ gs.documentation
131
+ FROM global_symbols gs
132
+ JOIN mentions m ON m.symbol_id = gs.id
133
+ JOIN chunks c ON m.chunk_id = c.id
134
+ JOIN documents d ON c.document_id = d.id
135
+ WHERE m.role = 1
136
+ AND ${t.where}
137
+ ${e.pathExclusionsFor("d")}
138
+ GROUP BY gs.id, gs.symbol, c.document_id, d.relative_path, gs.display_name, gs.documentation
139
+ ${Kp(t.orderBy)}
140
+ ${Jp(t.limit)}`,...t.params??[])}function Kp(e){return e?`ORDER BY ${e}`:""}function Jp(e){return typeof e=="number"?`LIMIT ${e}`:""}function Yt(e){return!e||!e.trim()?null:e.replace(/^```\w*\s*/,"").replace(/\s*```$/,"").replace(/^\(method\)\s*/,"").replace(/^\(property\)\s*/,"").replace(/^\(function\)\s*/,"").replace(/^\(class\)\s*/,"").replace(/^\(interface\)\s*/,"").replace(/^\(enum\)\s*/,"").replace(/^\(type alias\)\s*/,"").replace(/^\(const\)\s*/,"").replace(/^\(var\)\s*/,"").trim()||null}function Xt(e){if(!e)return null;let t=qp(e);if(t)return t.replace(/\n/g," ");let n=e.indexOf("|");if(n===-1)return e.replace(/\n/g," ");let r=e.slice(n+1);return(qp(r)??r).replace(/\n/g," ")}function qp(e){return/^```(?:\w+)?\s*\n?([\s\S]*?)\n?```/.exec(e.trimStart())?.[1]?.trim()||null}function Ek(e,t={}){if(wt(e.symbol)!==null)return t.includeClassMemberFallbacks===!0;let i=(e.documentation??"").replace(/^```\w*\s*/,"").replace(/\s*```$/,"").trim();return/^(?:var|let|const|function|class|interface|type|enum)\b/.test(i)}function Rn(e,t,n={}){let r=new Map;for(let o of t)e.length>0&&!Ek(o,{includeClassMemberFallbacks:n.includeClassMemberFallbacks})||r.set(o.id,o);for(let o of e)r.set(o.id,o);let i=[...r.values()];return n.sort?i.sort((o,s)=>o.start_line-s.start_line||o.end_line-s.end_line||o.symbol.localeCompare(s.symbol)):i}var Dk=j("file-definitions",{clearGroups:["definition-catalog"]}),Pk=j("file-function-like-definitions",{clearGroups:["definition-catalog"]}),Yp=new WeakMap;function Y(e,t,n={}){return n.includeClassMemberFallbacks?wl(e,t,void 0,{includeClassMemberFallbacks:!0}):Dk.get(e,t,()=>{let r=eg(e,t);if(r)return r;let i=wl(e,t),o=Te(e),s=ut(e).forFile(t,{text:!0}).text;return o&&s&&Zp.write(e,t,ce(e,t,s),{projectFingerprint:o,definitions:i.map(a=>({...a}))}),i})}function kk(e,t){return Pk.get(e,t,()=>{let n=eg(e,t);return n?n.filter(r=>r.isFunctionLike):wl(e,t,r=>r.isFunctionLike)})}var Zp=oe({kind:"file-definitions",invalidation:J("file-definitions"),serialize:Tk,deserialize:Fk});function eg(e,t){let n=Te(e);if(!n)return null;let r=ut(e).forFile(t,{text:!0}).text;if(!r)return null;let i=Zp.read(e,t,ce(e,t,r));return i?_k(i,n,t):null}function Tk(e){return JSON.stringify(e)}function Fk(e){try{let t=JSON.parse(e);return!Et(t)||typeof t.projectFingerprint!="string"||!Array.isArray(t.definitions)?null:{projectFingerprint:t.projectFingerprint,definitions:t.definitions}}catch{return null}}function _k(e,t,n){if(e.projectFingerprint!==t)return null;let r=[];for(let i of e.definitions){let o=Lk(i,n);if(!o)return null;r.push(o)}return r}function Lk(e,t){return!Et(e)||typeof e.symbolId!="number"||typeof e.symbol!="string"||typeof e.documentId!="number"||typeof e.startLine!="number"||typeof e.startChar!="number"&&e.startChar!==void 0||typeof e.endLine!="number"||typeof e.endChar!="number"&&e.endChar!==void 0||e.relativePath!==t||typeof e.leaf!="string"||typeof e.parentTypeName!="string"&&e.parentTypeName!==null||typeof e.isFunctionLike!="boolean"||typeof e.isTypeLike!="boolean"||typeof e.kind!="number"&&e.kind!==null||typeof e.documentation!="string"&&e.documentation!==null||typeof e.enclosingSymbol!="string"&&e.enclosingSymbol!==null?null:{symbolId:e.symbolId,symbol:e.symbol,documentId:e.documentId,startLine:e.startLine,startChar:e.startChar,endLine:e.endLine,endChar:e.endChar,relativePath:e.relativePath,leaf:e.leaf,parentTypeName:e.parentTypeName,isFunctionLike:e.isFunctionLike,isTypeLike:e.isTypeLike,kind:e.kind,documentation:e.documentation,enclosingSymbol:e.enclosingSymbol}}function wl(e,t,n,r={}){let i=Rn(Nk(e,t),Ak(e,t),{sort:!0,includeClassMemberFallbacks:r.includeClassMemberFallbacks}).map(tg);return n&&(i=i.filter(n)),ig(e,t,i)}function Nk(e,t){return e.all(`SELECT
141
+ gs.id,
142
+ gs.symbol,
143
+ der.document_id,
144
+ der.start_line,
145
+ der.start_char,
146
+ der.end_line,
147
+ der.end_char,
148
+ d.relative_path,
149
+ gs.display_name,
150
+ gs.kind,
151
+ gs.documentation,
152
+ gs.enclosing_symbol
153
+ FROM global_symbols gs
154
+ JOIN defn_enclosing_ranges der ON gs.id = der.symbol_id
155
+ JOIN documents d ON der.document_id = d.id
156
+ WHERE d.relative_path = ?
157
+ ${e.symbolNoiseFor("gs")}
158
+ ORDER BY der.start_line, der.end_line`,t)}function Ak(e,t){return e.all(`SELECT
159
+ gs.id,
160
+ gs.symbol,
161
+ c.document_id,
162
+ MIN(c.start_line) AS start_line,
163
+ 0 AS start_char,
164
+ MAX(c.end_line) AS end_line,
165
+ 0 AS end_char,
166
+ d.relative_path,
167
+ gs.display_name,
168
+ gs.kind,
169
+ gs.documentation,
170
+ gs.enclosing_symbol
171
+ FROM global_symbols gs
172
+ JOIN mentions m ON m.symbol_id = gs.id
173
+ JOIN chunks c ON m.chunk_id = c.id
174
+ JOIN documents d ON c.document_id = d.id
175
+ WHERE d.relative_path = ?
176
+ AND m.role = 1
177
+ ${e.symbolNoiseFor("gs")}
178
+ GROUP BY gs.id, gs.symbol, c.document_id, d.relative_path
179
+ ORDER BY start_line, end_line`,t)}function tg(e){return{symbolId:e.id,symbol:e.symbol,documentId:e.document_id,startLine:e.start_line,startChar:e.start_char??0,endLine:e.end_line,endChar:e.end_char??0,relativePath:e.relative_path,leaf:T(e.symbol),parentTypeName:wt(e.symbol),isFunctionLike:te(e.symbol),isTypeLike:ue(e.symbol)==="type",kind:e.kind??null,documentation:e.documentation??null,enclosingSymbol:e.enclosing_symbol??null}}function xe(e,t={}){return El(e,t.scope)}function El(e,t){return N(e,{scope:t,includeIgnored:!1}).flatMap(n=>Y(e,n)).filter(n=>!e.isIgnored(n.relativePath))}function ng(e,t){return N(e,{scope:t,includeIgnored:!1}).flatMap(n=>kk(e,n)).filter(n=>!e.isIgnored(n.relativePath))}function vi(e,t){let n=Xp(Mk(e,t.scope,t.sqlPrefilter)),r=Xp(Ok(e,t.scope,t.sqlPrefilter)),i=new Set([...n.keys(),...r.keys()]),o=[];for(let s of[...i].sort()){if(e.isIgnored(s))continue;let a=Rn(n.get(s)??[],r.get(s)??[],{sort:!0}).filter(c=>t.symbolMatches(c.symbol));a.length!==0&&o.push(...ig(e,s,a.map(tg)))}return o}function Mk(e,t,n){let r=t?"AND d.relative_path LIKE ?":"",i=n?`AND ${rg("gs",n)}`:"",o=t?[`%${t}%`]:[];return e.all(`SELECT
180
+ gs.id,
181
+ gs.symbol,
182
+ der.document_id,
183
+ der.start_line,
184
+ der.start_char,
185
+ der.end_line,
186
+ der.end_char,
187
+ d.relative_path,
188
+ gs.display_name,
189
+ gs.kind,
190
+ gs.documentation,
191
+ gs.enclosing_symbol
192
+ FROM global_symbols gs
193
+ JOIN defn_enclosing_ranges der ON gs.id = der.symbol_id
194
+ JOIN documents d ON der.document_id = d.id
195
+ WHERE 1 = 1
196
+ ${e.pathExclusionsFor("d")}
197
+ ${r}
198
+ ${i}
199
+ ${e.symbolNoiseFor("gs")}
200
+ ORDER BY d.relative_path, der.start_line, der.end_line`,...o)}function Ok(e,t,n){let r=t?"AND d.relative_path LIKE ?":"",i=n?`AND ${rg("gs",n)}`:"",o=t?[`%${t}%`]:[];return e.all(`SELECT
201
+ gs.id,
202
+ gs.symbol,
203
+ c.document_id,
204
+ MIN(c.start_line) AS start_line,
205
+ 0 AS start_char,
206
+ MAX(c.end_line) AS end_line,
207
+ 0 AS end_char,
208
+ d.relative_path,
209
+ gs.display_name,
210
+ gs.kind,
211
+ gs.documentation,
212
+ gs.enclosing_symbol
213
+ FROM global_symbols gs
214
+ JOIN mentions m ON m.symbol_id = gs.id
215
+ JOIN chunks c ON m.chunk_id = c.id
216
+ JOIN documents d ON c.document_id = d.id
217
+ WHERE m.role = 1
218
+ ${e.pathExclusionsFor("d")}
219
+ ${r}
220
+ ${i}
221
+ ${e.symbolNoiseFor("gs")}
222
+ GROUP BY gs.id, gs.symbol, c.document_id, d.relative_path
223
+ ORDER BY d.relative_path, start_line, end_line`,...o)}function jk(e){return`(${e}.symbol LIKE '%().' OR ${e}.symbol LIKE '%()')`}function rg(e,t){return t==="callable"?jk(e):Bk(e)}function Bk(e){return`(${e}.symbol LIKE '%.' OR ${e}.symbol LIKE '%()')`}function Xp(e){let t=new Map;for(let n of e){let r=t.get(n.relative_path);r?r.push(n):t.set(n.relative_path,[n])}return t}function Ss(e,t,n={}){if(t.length===0)return[];let r=t.flatMap(i=>Y(e,i)).filter(i=>!e.isIgnored(i.relativePath));return n.onlyDocumented&&(r=r.filter(i=>i.documentation!==null&&i.documentation!=="")),n.sort&&(r=r.sort((i,o)=>i.relativePath.localeCompare(o.relativePath)||i.startLine-o.startLine||i.endLine-o.endLine)),r.map(i=>({startLine:i.startLine,endLine:i.endLine,symbol:i.symbol,shortName:I(i.symbol),signature:Yt(Xt(i.documentation)),relativePath:i.relativePath,enclosingSymbol:i.enclosingSymbol}))}function Dl(e){let t=new Map,n=e.map((r,i)=>({definition:r,index:i,span:r.endLine-r.startLine})).sort((r,i)=>r.span-i.span||r.index-i.index);for(let{definition:r}of n)for(let i=r.startLine;i<=r.endLine;i+=1)t.has(i)||t.set(i,r);return t}function Dt(e,t){let n=Yp.get(e);return n||(n=Dl(e),Yp.set(e,n)),n.get(t)??null}function Cs(e,t){let n=Y(e,t.relative_path).find(r=>r.symbolId===t.id);return n?{symbolId:n.symbolId,symbol:n.symbol,documentId:n.documentId,startLine:n.startLine,startChar:n.startChar,endLine:n.endLine,endChar:n.endChar,relativePath:n.relativePath}:{symbolId:t.id,symbol:t.symbol,documentId:t.document_id,startLine:t.start_line,startChar:t.start_char??0,endLine:t.end_line,endChar:t.end_char??0,relativePath:t.relative_path}}function ig(e,t,n){let r=ut(e).forFile(t,{text:!0}).text,i=Kc(e,t);return i?zk(n,i,r):r?$k(n,r):n}function $k(e,t){let n=t.split(/\r?\n/),r=Hk(e,n),i=Uk(e,r),o=Wk(i,n);return Gk(e,o)}function Hk(e,t){let n=e.some(i=>xs(i.symbol))?Qk(t):null,r=new Map;for(let i of e)r.set(i.symbolId,Xk(t,n,i));return r}function Uk(e,t){return e.filter(n=>xs(n.symbol)).map(n=>({definition:n,startLine:t.get(n.symbolId)??n.startLine})).sort((n,r)=>n.startLine-r.startLine||n.definition.startLine-r.definition.startLine||n.definition.symbol.localeCompare(r.definition.symbol))}function Wk(e,t){let n=new Map;for(let r=0;r<e.length;r+=1){let i=e[r],o=e[r+1],s=o?Math.max(i.startLine,o.startLine-1):t.length-1;n.set(i.definition.symbolId,{startLine:i.startLine,endLine:Zk(t,i.definition,i.startLine,s)})}return n}function Gk(e,t){return e.map(n=>{let r=t.get(n.symbolId);return r?{...n,startLine:r.startLine,endLine:r.endLine}:n})}function zk(e,t,n=null){let r=new Map;for(let i of t){let o=r.get(i.name);o?o.push(i):r.set(i.name,[i])}return e.map(i=>{if(!Yk(i)||!i.leaf)return Qp(i,n);let o=r.get(i.leaf);if(!o||o.length===0)return Qp(i,n);let s=n?Vk(i,o,n):null;if(s)return{...i,startLine:s.startLine,endLine:s.endLine};let a=o[0],c=Math.abs(a.startLine-i.startLine);for(let l=1;l<o.length;l+=1){let u=o[l],d=Math.abs(u.startLine-i.startLine);d<c&&(a=u,c=d)}return{...i,startLine:a.startLine,endLine:a.endLine}})}function Vk(e,t,n){let r=qk(e.symbol);if(!r)return null;let i=n.split(/\r?\n/),o=new RegExp(`\\b${$(r)}\\b`);for(let s of t){let a=Kk(i,s.startLine);if(a&&o.test(a))return s}return null}function qk(e){return e.match(/\/impl#\[([^\]]+)\]/)?.[1]??null}function Kk(e,t){for(let n=t;n>=0;n-=1){let r=e[n]?.trim()??"";if(r){if(/^impl\b/.test(r))return Jk(e,n,t);if(/^(?:struct|enum|trait|mod)\b/.test(r))return null}}return null}function Jk(e,t,n){let r=[];for(let i=t;i<=n;i+=1){let o=e[i]??"";if(r.push(o),o.includes("{"))break}return r.join(" ")}function Yk(e){return xs(e.symbol)?!0:ue(e.symbol)==="term"&&wt(e.symbol)===null}function Qp(e,t){if(!t||!e.leaf||ue(e.symbol)!=="term"||wt(e.symbol)!==null)return e;let n=$(e.leaf),r=new RegExp(`\\b(?:export\\s+)?(?:const|let|var)\\s+${n}\\b`),o=t.split(/\r?\n/).findIndex(s=>r.test(s));return o>=0?{...e,startLine:o,endLine:o}:e}function Xk(e,t,n){if(!xs(n.symbol))return n.startLine;let r=Math.max(0,Math.min(n.startLine,e.length-1));if(!t)return r;let i=t.get(n.leaf);if(!i||i.length===0)return r;let o=null;for(let s of i){let a=Math.abs(s-n.startLine);(!o||a<o.distance)&&(o={line:s,distance:a})}return o?.line??r}function Qk(e){let t=/\b(?:function|def|fn)\s+([A-Za-z_$][\w$]*)/g,n=/\b([A-Za-z_$][\w$]*)\s*[:=]\s*(?:async\s*)?(?:function\b|\()/g,r=/^\s*(?:(?:export|public|private|protected|static|readonly|async|abstract|get|set)\s+)*([A-Za-z_$][\w$]*)\s*(?:<[^(]*>)?\s*\(/,i=/\b([A-Za-z_$][\w$]*)\s*\(/g,o=new Map,s=(a,c)=>{let l=o.get(a);if(!l){o.set(a,[c]);return}l[l.length-1]!==c&&l.push(c)};for(let a=0;a<e.length;a+=1){let c=e[a]??"";for(let u of c.matchAll(t))u[1]&&s(u[1],a);for(let u of c.matchAll(n))u[1]&&s(u[1],a);let l=c.match(r);l?.[1]&&s(l[1],a);for(let u of c.matchAll(i))u[1]&&s(u[1],a)}return o}function Zk(e,t,n,r){let i=Math.max(n,Math.min(e.length-1,r)),o=Math.max(n,Math.min(i,t.endLine)),s=0,a=0,c=!1;for(let l=n;l<=i;l+=1){let u=eT(e[l]??"");for(let d of u)d==="{"?(s+=1,c=!0):d==="}"?s=Math.max(0,s-1):d==="("?a+=1:d===")"&&(a=Math.max(0,a-1));if(c&&s===0||!c&&a===0&&l>=o)return l}return o}function eT(e){let t="",n=null,r=!1;for(let i=0;i<e.length;i+=1){let o=e[i],s=e[i+1];if(!n&&o==="/"&&s==="/"){t+=" ".repeat(e.length-i);break}if(n){if(r){r=!1,t+=" ";continue}if(o==="\\"){r=!0,t+=" ";continue}o===n&&(n=null),t+=" ";continue}if(o==='"'||o==="'"||o==="`"){n=o,t+=" ";continue}t+=o}return t}function xs(e){return e.includes("().")}function Rs(e){let t=ye(e);if("kind"in t)return[];let n=[];for(let r=t.descriptors.length-2;r>=0;r-=1){let i=t.descriptors[r];i?.suffix==="type"&&i.name&&n.push(i.name)}return n}var tT=j("symbol-resolution",{clearGroups:[]});function B(e,t){return wi(e,t).match}function wi(e,t){return tT.get(e,t,()=>{let n=sg(e,t.trim()).filter(o=>!e.isIgnored(o.relative_path));if(n.length>0)return Ii(e,n);let r=cT(e,t);if(r&&!e.isIgnored(r.relative_path))return Ii(e,[r]);let i=nT(e,t);return i.length>0?Ii(e,i):sT(e,t)})}function nT(e,t){let n=Is(t),r=Pl(n);if(!r)return[];let i=`%${r.path}%`,o=r.leaf;return rT(e,i,o,n)}function rT(e,t,n,r){let i=Rn([],[...iT(e,t,n),...oT(e,t,n)]).filter(o=>!e.isIgnored(o.relative_path)).filter(o=>_r(o,r)>1);return i.sort((o,s)=>_r(s,r)-_r(o,r)||o.end_line-o.start_line-(s.end_line-s.start_line)||o.start_line-s.start_line||o.symbol.localeCompare(s.symbol)),i}function iT(e,t,n){return Kn(e,{where:"d.relative_path LIKE ? AND (gs.display_name = ? OR gs.symbol LIKE ?)",params:[t,n,`%/${n}.%`]})}function oT(e,t,n){return Fr(e,{where:"d.relative_path LIKE ? AND (gs.display_name = ? OR gs.symbol LIKE ?)",params:[t,n,`%/${n}.%`]})}function sT(e,t){let n=Is(t),r=pT(t),i=mT(e,r),o=gT(i,t,n).filter(a=>!e.isIgnored(a.relative_path));if(o.length>0)return Ii(e,o);let s=[];for(let a of i){if(e.isIgnored(a.relative_path))continue;let c=fT(a,t,n,r);c<=0||s.push({row:a,score:c})}return s.sort((a,c)=>c.score-a.score||a.row.end_line-a.row.start_line-(c.row.end_line-c.row.start_line)||a.row.relative_path.localeCompare(c.row.relative_path)||a.row.symbol.localeCompare(c.row.symbol)),Ii(e,s.map(a=>a.row))}function Ii(e,t){let n=t.map(i=>Cs(e,i)),r=n[0]??null;return{match:r,candidates:r?aT(n,r):[],total:n.length}}function aT(e,t){let n=new Set([`${t.symbolId}:${t.relativePath}:${t.startLine}`]),r=[];for(let i of e){let o=`${i.symbolId}:${i.relativePath}:${i.startLine}`;if(!n.has(o)&&(n.add(o),r.push({symbol:i.symbol,shortName:I(i.symbol),relativePath:i.relativePath,startLine:i.startLine}),r.length>=5))break}return r}function cT(e,t){let n=t.match(/^(.+):(\d+)-(\d+)$/);if(!n)return;let[,r,i,o]=n,s=Math.max(0,parseInt(i,10)-1),a=Math.max(s,parseInt(o,10)-1);return lT(e,r,s,a)??uT(e,r,s,a)}function lT(e,t,n,r){return Kn(e,{where:"d.relative_path LIKE ? AND der.start_line <= ? AND der.end_line >= ?",params:[`%${t}%`,n,r],orderBy:"(der.end_line - der.start_line) ASC",limit:1})[0]}function uT(e,t,n,r){return Fr(e,{where:"d.relative_path LIKE ? AND c.start_line <= ? AND c.end_line >= ?",params:[`%${t}%`,n,r],orderBy:"(MAX(c.end_line) - MIN(c.start_line)) ASC",limit:1})[0]}function Ei(e,t){let n=sg(e,t).find(r=>!e.isIgnored(r.relative_path));return n?Cs(e,n):null}function sg(e,t){let n=Kn(e,{where:"gs.symbol = ?",params:[t],orderBy:"d.relative_path, der.start_line"}),r=n.length>0?[]:Fr(e,{where:"gs.symbol = ?",params:[t],orderBy:"d.relative_path, start_line"});return Rn(n,r)}function vs(e,t){if("symbol"in t&&"relativePath"in t)return t;let n=dT(e,t.symbolId)[0];return n?Cs(e,n):null}function dT(e,t){let n=Kn(e,{where:"gs.id = ?",params:[t],orderBy:"der.start_line, der.end_line"}),r=Fr(e,{where:"gs.id = ?",params:[t],orderBy:"start_line, end_line"});return Rn(n,r)}function mT(e,t){let n=t.map(()=>"(gs.symbol LIKE ? OR d.relative_path LIKE ? OR COALESCE(gs.display_name, '') LIKE ?)"),r=t.flatMap(a=>{let c=`%${a}%`;return[c,c,c]}),i=n.join(`
224
+ AND `),o=Kn(e,{where:i,params:r,limit:200}),s=Fr(e,{where:i,params:r,limit:200});return Rn(o,s)}function fT(e,t,n,r){let i=t.trim(),o=n,s=o.replace(/\(\)$/,""),a=t.toLowerCase(),c=n.toLowerCase(),l=c.replace(/\(\)$/,""),u=e.symbol,d=I(e.symbol),m=T(e.symbol),f=e.display_name??"",p=e.symbol.toLowerCase(),g=d.toLowerCase(),y=m.toLowerCase(),h=f.toLowerCase(),x=e.relative_path.toLowerCase(),b=/[/:.]/.test(n),C=Pl(n),S=C?.leaf.toLowerCase(),v=0;return(u===i||u===o)&&(v+=1150),(d===i||d===o)&&(v+=1100),f===s&&(v+=1180),m===s&&(v+=1160),(`${m}()`===i||`${m}()`===o)&&(v+=955),(p===a||p===c)&&(v+=1e3),(g===a||g===c)&&(v+=950),(x===a||x===c)&&(v+=925),(x.endsWith(`/${c}`)||x.endsWith(`/${a}`))&&(v+=875),h===l&&(v+=850),y===l&&(v+=825),(`${y}()`===a||`${y}()`===c)&&(v+=820),(g.endsWith(`:${c}`)||g.endsWith(`:${l}`)||g.endsWith(`:${l}()`))&&(v+=800),p.includes(c)&&(v+=120),g.includes(c)&&(v+=140),x.includes(c)&&(v+=140),h.includes(c)&&(v+=110),r.every(R=>{let D=R.toLowerCase();return p.includes(D)||g.includes(D)||x.includes(D)||h.includes(D)})&&(v+=100+r.length*15),C&&x.includes(C.path.toLowerCase())&&(v+=360,S&&(y===S||`${y}()`===S||`${y}()`==`${S}()`)&&(v+=700),le(e.symbol)&&(v+=180)),te(e.symbol)&&y===l&&(v+=60),!b&&gn(e.symbol)&&(v-=160),v-=Math.min(50,Math.max(0,e.end_line-e.start_line)),v}function Pl(e){let t=e.trim().replace(/\\/g,"/"),n=t.lastIndexOf("/");if(n<=0||n===t.length-1)return null;let r=t.slice(n+1).replace(/\(\)$/,"");return!r||r.includes(".")?null:{path:t.slice(0,n),leaf:r}}function Is(e){return e.trim().replace(/\(\)$/,"").replace(/\(.*$/,"")}function pT(e){let t=Is(e),n=t.split(/[^A-Za-z0-9_]+/).map(r=>r.trim()).filter(r=>r.length>0);return n.length>0?[...new Set(n)]:[t]}function gT(e,t,n){let r=t.trim(),i=e.filter(o=>{let s=I(o.symbol),a=(o.display_name??"").trim();return o.symbol===r||s===r||s===n||a===r||a===n||`${a}()`===r||_r(o,n)>1||o.relative_path===r});return i.length===0?[]:(i.sort((o,s)=>_r(s,n)-_r(o,n)||o.end_line-o.start_line-(s.end_line-s.start_line)||o.relative_path.localeCompare(s.relative_path)||o.symbol.localeCompare(s.symbol)),i)}function _r(e,t){let n=Pl(t);if(!n)return 0;let r=e.relative_path.toLowerCase(),i=T(e.symbol).toLowerCase(),o=n.path.toLowerCase(),s=n.leaf.toLowerCase();return r.includes(o)?i!==s?1:le(e.symbol)?wt(e.symbol)===null?5:4:wt(e.symbol)===null?3:2:0}function $8(e,t,n=5){let r=og(t);if(!r)return[];let i=Kn(e,{where:"1 = 1",orderBy:"d.relative_path, der.start_line",limit:5e3}),o=new Map;for(let s of i){if(e.isIgnored(s.relative_path))continue;let a=I(s.symbol),c=T(s.symbol),l=s.display_name??c,u=[a,c,l].filter(f=>f.trim().length>0),d=Math.min(...u.map(f=>hT(og(f),r))),m=o.get(a);(!m||d<m.distance)&&o.set(a,{shortName:a,distance:d})}return[...o.values()].sort((s,a)=>s.distance-a.distance||s.shortName.localeCompare(a.shortName)).slice(0,n).map(s=>s.shortName)}function og(e){return Is(e).toLowerCase().replace(/[^a-z0-9_]+/g,"")}function hT(e,t){if(e===t)return 0;if(e.length===0)return t.length;if(t.length===0)return e.length;let n=Array.from({length:t.length+1},(r,i)=>i);for(let r=0;r<e.length;r++){let i=[r+1];for(let o=0;o<t.length;o++){let s=e[r]===t[o]?0:1;i[o+1]=Math.min(i[o]+1,n[o+1]+1,n[o]+s)}n=i}return n[t.length]}function ws(e,t,n,r={}){if(!n)return[];let i=k(e,t);return i?i.indexOf(n)===-1?[]:(Qt(e,t).get(n)??[]).filter(s=>!yT(s,r)):[]}function yT(e,t){return typeof t.excludeStartLine=="number"&&typeof t.excludeEndLine=="number"&&e>=t.excludeStartLine&&e<=t.excludeEndLine}var bT=j("file-identifiers",{clearGroups:["whole-project","source-file"]});function ag(e,t){let n=z(e,t);return n?n.fileIdentifiers:bT.get(e,t,()=>new Set(Qt(e,t).keys()))}var ST=j("file-ident-lines",{clearGroups:["whole-project","source-file"]});function Qt(e,t){let n=z(e,t);return n?n.identifierLineMap:ST.get(e,t,()=>xT(e,t))}var CT=j("file-idents-by-line",{clearGroups:["whole-project","source-file"]});function cg(e,t){let n=z(e,t);return n?n.identifiersByLine:CT.get(e,t,()=>{let r=Qt(e,t),i=0;for(let s of r.values()){let a=s[s.length-1];a!==void 0&&a>i&&(i=a)}let o=new Array(i+1);for(let s=0;s<=i;s+=1)o[s]=new Set;for(let[s,a]of r)for(let c of a)o[c].add(s);return o})}function xT(e,t){let n=new Map,r=(a,c)=>{let l=n.get(a);if(!l){n.set(a,[c]);return}l[l.length-1]!==c&&l.push(c)},i=k(e,t);if(!i)return n;let o=st(i).split(/\r?\n/),s=/\b([A-Za-z_$][\w$]*)\b/g;for(let a=0;a<o.length;a+=1){let c=o[a]??"";for(let l of c.matchAll(s))l[1]&&r(l[1],a)}return n}function lg(e,t){return Es(e,t,n=>{let r=n?`AND m.symbol_id IN (${n.map(()=>"?").join(",")})`:"";return e.all(`SELECT
225
+ m.symbol_id,
226
+ d.relative_path,
227
+ COUNT(*) AS ref_count
228
+ FROM mentions m
229
+ JOIN chunks c ON m.chunk_id = c.id
230
+ JOIN documents d ON c.document_id = d.id
231
+ WHERE m.role != 1
232
+ ${r}
233
+ ${e.pathExclusionsFor("d")}
234
+ GROUP BY m.symbol_id, d.relative_path`,...n??[])})}function ug(e,t){return Es(e,t,n=>{let r=n?`AND m.symbol_id IN (${n.map(()=>"?").join(",")})`:"";return e.all(`SELECT DISTINCT m.symbol_id, d.relative_path
235
+ FROM mentions m
236
+ JOIN chunks c ON m.chunk_id = c.id
237
+ JOIN documents d ON c.document_id = d.id
238
+ WHERE m.role != 1
239
+ ${r}
240
+ ${e.pathExclusionsFor("d")}`,...n??[])}).filter(n=>n.symbol_id!==null)}function dg(e,t){return Es(e,t,n=>{let r=n?`AND m.symbol_id IN (${n.map(()=>"?").join(",")})`:"";return e.all(`SELECT DISTINCT m.symbol_id
241
+ FROM mentions m
242
+ WHERE m.role != 1
243
+ ${r}`,...n??[])}).filter(n=>n.symbol_id!==null)}function Lr(e,t){return Es(e,t,n=>{let r=n?`AND m.symbol_id IN (${n.map(()=>"?").join(",")})`:"";return e.all(`SELECT DISTINCT m.symbol_id, d.relative_path, c.document_id,
244
+ c.start_line AS chunk_start, c.end_line AS chunk_end
245
+ FROM mentions m
246
+ JOIN chunks c ON m.chunk_id = c.id
247
+ JOIN documents d ON c.document_id = d.id
248
+ WHERE m.role != 1
249
+ ${r}
250
+ ${e.pathExclusionsFor("d")}
251
+ ORDER BY d.relative_path, c.start_line`,...n??[])})}function Es(e,t,n){if(!t)return n();if(t.length===0)return[];let r=[];for(let i=0;i<t.length;i+=750)r.push(...n(t.slice(i,i+750)));return r}function Ds(e,t){let n=mg(e);return n?t.filter(r=>mg(r.file)===n):t}function Ps(e,t,n,r){let i=n.find(o=>o.file===t);if(i)return i;if(r){let o=new Set(Z(e,t).map(s=>s.sourcePath).filter(s=>!!s));for(let s of n)for(let a of o)if(Ve(a,s.file))return s;return null}return n.length===1?n[0]:null}function mg(e){let t=M(e);return t?t==="typescript"||t==="tsx"||t==="javascript"?"javascript-family":t:null}var RT=X("global-leaf-index",{clearGroups:["whole-project"]});function Zt(e){return RT.get(e,()=>{let t=e.all(`SELECT gs.id, gs.symbol,
252
+ COALESCE(der_doc.relative_path, mention_doc.relative_path) AS relative_path
253
+ FROM global_symbols gs
254
+ LEFT JOIN defn_enclosing_ranges der ON der.symbol_id = gs.id
255
+ LEFT JOIN documents der_doc ON der_doc.id = der.document_id
256
+ LEFT JOIN (
257
+ SELECT m.symbol_id, MIN(d.relative_path) AS relative_path
258
+ FROM mentions m
259
+ JOIN chunks c ON m.chunk_id = c.id
260
+ JOIN documents d ON c.document_id = d.id
261
+ WHERE m.role = 1
262
+ GROUP BY m.symbol_id
263
+ ) mention_doc ON mention_doc.symbol_id = gs.id
264
+ WHERE 1 = 1
265
+ ${e.symbolNoiseFor("gs")}`),n=new Map;for(let r of t){if(!r.relative_path||e.isIgnored(r.relative_path))continue;let i=T(r.symbol);if(!i)continue;let o=n.get(i);o||(o=[],n.set(i,o)),o.some(s=>s.symbolId===r.id)||o.push({symbol:r.symbol,symbolId:r.id,file:r.relative_path})}return n})}var fg=/[A-Za-z_$][A-Za-z0-9_$]*/g,pg=/^[A-Za-z_$][A-Za-z0-9_$]*$/,vT=512;function Di(e){let t=[],n=!1;for(let r of e)r&&(n=!0,pg.test(r)||t.push(r));return{candidateNames:e,hasUsableCandidate:n,nonIdentifierNames:t}}function ks(e,t){let n=IT(t)?t:Di(t);if(n.candidateNames.size===0||!n.hasUsableCandidate)return!0;if(n.candidateNames.size<=vT){for(let i of n.candidateNames)if(i){if(pg.test(i)){if(wT(i).test(e))return!0;continue}if(e.includes(i))return!0}return!1}fg.lastIndex=0;let r;for(;(r=fg.exec(e))!==null;)if(n.candidateNames.has(r[0]))return!0;for(let i of n.nonIdentifierNames)if(e.includes(i))return!0;return!1}function IT(e){return"candidateNames"in e}function wT(e){return new RegExp(`(?<![A-Za-z_$0-9])${$(e)}(?![A-Za-z_$0-9])`)}var ET=j("source-import-paths-by-local-name",{clearGroups:["whole-project","source-file"]});function Ts(e,t){let n=yn(t);return ET.get(e,n,()=>DT(e,n))}function DT(e,t){let n=new Map;for(let r of Z(e,t)){if(!r.sourcePath)continue;let i=r.localName??r.importedName;if(i&&gg(n,i,r.sourcePath),r.kind==="namespace")for(let o of r.usedMembers)gg(n,o,r.sourcePath)}return n}function gg(e,t,n){let r=e.get(t);r||(r=new Set,e.set(t,r)),r.add(n)}function Nr(e,t,n){let r=Zt(e).get(n);if(!r||r.length===0)return[];if(r.length===1)return[Pi(r[0])];let i=r.filter(c=>c.file===t);if(i.length>0)return i.map(Pi);let o=Ts(e,t),s=o.get(n);if(s)for(let c of s){let l=r.filter(u=>Ve(c,u.file));if(l.length>0)return l.map(Pi)}let a=new Set;for(let c of o.values())for(let l of c)a.add(l);for(let c of a){let l=r.filter(u=>Ve(c,u.file));if(l.length>0&&l.length===r.length)return l.map(Pi)}return[]}function hg(e,t,n){let r=Nr(e,t,n);if(r.length>0)return r;let i=Zt(e).get(n);return!i||i.length===0?[]:i.map(Pi)}function yg(e,t,n={}){let r=vs(e,t);if(!r)return[];let i=T(r.symbol);if(!i)return[];if(n.semantic!==!1&&n.semanticEvidence){let s=n.semanticEvidence.references(e,{...r,leaf:i,parentTypeName:null,isFunctionLike:!1,isTypeLike:!1,kind:null,documentation:null,enclosingSymbol:null});if(s.length>0){let a=new Map;for(let c of s){let l=a.get(c.file)??[];l.push(c.line),a.set(c.file,l)}return Fs(e,a)}}let o=new Map;for(let s of $e(e)){let a=k(e,s);if(!a||a.indexOf(i)===-1||s!==r.relativePath&&!Nr(e,s,i).some(u=>u.symbolId===r.symbolId))continue;let c=ws(e,s,i,s===r.relativePath?{excludeStartLine:r.startLine,excludeEndLine:r.endLine}:{});c.length>0&&o.set(s,c)}return Fs(e,o)}function bg(e,t,n={}){let r=new Map;for(let c of t){if(!c.leaf)continue;let l=r.get(c.leaf)??[];l.push(c),r.set(c.leaf,l)}if(r.size===0)return new Map;let i=new Set(t.map(c=>c.symbolId)),o=new Set(r.keys()),s=Di(o),a=new Map;for(let c of $e(e)){if(n.skipPath?.(c)||!ks(k(e,c),s))continue;let l=ag(e,c);if(l.size!==0){for(let u of l)if(r.has(u))for(let d of Nr(e,c,u)){if(!i.has(d.symbolId)||c===d.relativePath)continue;let m=a.get(d.symbolId);m||(m=new Set,a.set(d.symbolId,m)),m.add(c)}}}return a}function Pi(e){return{symbolId:e.symbolId,symbol:e.symbol,relativePath:e.file}}function Fs(e,t){let n=[],r=new Set;for(let[i,o]of t){let s=Y(e,i);for(let a of o){let c=Dt(s,a),l=`${i}|${a}|${c?.symbol??""}`;r.has(l)||(r.add(l),n.push({file:i,line:a,enclosingSymbol:c?.symbol??null}))}}return n}function ki(e,t){let n=LT(e,t);return n?Fs(e,kT(e,n.match,n.identifier)):[]}function Pt(e,t,n={}){return PT(e,t,n).map(r=>({file:r.file,line:r.line,enclosingSymbol:r.enclosingSymbol}))}function PT(e,t,n={}){let r=yg(e,t,{semantic:n.semantic,semanticEvidence:n.semanticEvidence}),i=r.length>0?Sg(r,"source-attribution"):Sg(ki(e,t),"scip-reference-chunk");return n.includeIgnored===!0?i:i.filter(o=>!e.isIgnored(o.file))}function Sg(e,t){return e.map(n=>({...n,provenance:t}))}function kT(e,t,n){let r=new Map;for(let[i,o]of TT(e,t.symbolId))r.set(i,FT(e,i,o,t,n));return r}function TT(e,t){let n=new Map;for(let r of Lr(e,[t])){if(e.isIgnored(r.relative_path))continue;let i=n.get(r.relative_path);i||(i=[],n.set(r.relative_path,i)),i.push({start_line:r.chunk_start,end_line:r.chunk_end})}return n}function FT(e,t,n,r,i){let o=t===r.relativePath?{excludeStartLine:r.startLine,excludeEndLine:r.endLine}:{},s=i?ws(e,t,i,o):[];return n.flatMap(a=>_T(s,a))}function _T(e,t){let n=e.filter(r=>r>=t.start_line&&r<=t.end_line);return n.length>0?n:[t.start_line]}function LT(e,t){let n=vs(e,t);return n?{match:n,identifier:T(n.symbol)||null}:null}var Cg=$n({kind:"file-dependency-graph",invalidation:J("file-dependency-graph"),serialize:e=>JSON.stringify(e),deserialize:$T}),NT=j("file-dep-graph",{clearGroups:["whole-project"]});function ie(e,t,n={}){let r=n.scipEdges??"all-references",i=n.sourceEdges??"imports-only",o=OT(t,r,i);return NT.get(e,o,()=>{let s=new Set(N(e,{includeIgnored:!1})),a=Te(e),c=0,l=0,u=null,d=!1,m=0,f=0;return E("file-dep-graph.product",()=>{if(a){let h=Cg.read(e,o,a);if(h){d=!0;let x=BT(h);return c=h.sourceFileCount,l=h.sourceEdgeCount,m=h.scipEdgeCount,f=x.size,u=h.sourceDependencyFingerprint,x}}let p=E("file-dep-graph.source-imports",()=>{let h=AT(e,s,t,i);return c=h.files.length,l=h.edges.length,u=h.fingerprint,h},()=>({scope:t??null,sourceEdges:i,files:c,edges:l})),g=new Map,y=(h,x)=>GT(e,g,s,h,x);E("file-dep-graph.scip-edges",()=>{for(let h of WT(e,t,r))m+=1,y(h.from_file,h.to_file)},()=>({scope:t??null,edges:m}));for(let h of p.edges)y(h.fromFile,h.toFile);return f=g.size,a&&Cg.write(e,o,a,{sourceDependencyFingerprint:p.fingerprint,sourceFileCount:p.files.length,sourceEdgeCount:p.edges.length,scipEdgeCount:m,graph:jT(g)}),g},()=>({scope:t??null,available:a!==null,hit:d,files:c,sourceEdges:l,sourceEdgeMode:i,scipEdges:m,graphFiles:f,sourceDependencyFingerprint:u}))})}function AT(e,t,n,r){let i=[],o=[];for(let s of t)if(!(n&&!s.includes(n))){i.push(s);for(let a of Z(e,s))a.sourcePath&&o.push({fromFile:s,toFile:a.sourcePath});if(r==="imports-and-reexports")for(let a of Jt(e,s))a.sourcePath&&o.push({fromFile:s,toFile:a.sourcePath})}return{files:i,edges:o,fingerprint:MT(i,o)}}function MT(e,t){let n=t.map(r=>`${r.fromFile}\0${r.toFile}`).sort();return he(JSON.stringify({files:e,edges:n}))}function OT(e,t,n){return`edge-mode-v3:${t}:${n}:${e??"<all>"}`}function jT(e){return[...e].map(([t,n])=>[t,[...n]])}function BT(e){return new Map(e.graph.map(([t,n])=>[t,new Set(n)]))}function $T(e){let t=JSON.parse(e);return HT(t)?t:null}function HT(e){if(!e||typeof e!="object")return!1;let t=e;return typeof t.sourceDependencyFingerprint=="string"&&typeof t.sourceFileCount=="number"&&typeof t.sourceEdgeCount=="number"&&typeof t.scipEdgeCount=="number"&&Array.isArray(t.graph)&&t.graph.every(UT)}function UT(e){return Array.isArray(e)&&e.length===2&&typeof e[0]=="string"&&Array.isArray(e[1])&&e[1].every(t=>typeof t=="string")}function WT(e,t,n){let r=t?"AND d1.relative_path LIKE ?":"",i=t?[`%${t}%`]:[],o=n==="imports-only"?"AND m.role = 2":"AND m.role != 1";return e.all(`SELECT DISTINCT
266
+ d1.relative_path AS from_file,
267
+ d2.relative_path AS to_file
268
+ FROM mentions m
269
+ JOIN chunks c ON m.chunk_id = c.id
270
+ JOIN documents d1 ON c.document_id = d1.id
271
+ JOIN global_symbols gs ON m.symbol_id = gs.id
272
+ JOIN (
273
+ SELECT m2.symbol_id, c2.document_id
274
+ FROM mentions m2
275
+ JOIN chunks c2 ON m2.chunk_id = c2.id
276
+ WHERE m2.role = 1
277
+ GROUP BY m2.symbol_id
278
+ ) sym_def ON sym_def.symbol_id = gs.id
279
+ JOIN documents d2 ON sym_def.document_id = d2.id
280
+ WHERE d1.id != d2.id
281
+ ${o}
282
+ ${e.pathExclusionsFor("d1","d2")}
283
+ ${r}`,...i)}function GT(e,t,n,r,i){if(r===i||e.isIgnored(r)||e.isIgnored(i)||!n.has(i))return;let o=t.get(r);o||(o=new Set,t.set(r,o)),o.add(i)}function _s(e){let t=new Map;for(let n of e){let r=t.get(n.relativePath)??[];r.push(n),t.set(n.relativePath,r)}return t}function xg(e){let t=new Map,n=VT(e),r=new Map;return i=>{let o=zT(i),s=r.get(o);if(s!==void 0)return s;if(!n.has(i.file))return r.set(o,i.symbol),i.symbol;let a=t.get(i.file);a||(a=qT(Y(e,i.file)),t.set(i.file,a));let c=KT(a,i);return r.set(o,c),c}}function zT(e){return`${e.file}\0${e.symbol}\0${e.line}`}function VT(e){return new Set(e.all("SELECT relative_path FROM documents").map(t=>t.relative_path))}function qT(e){let t=new Map,n=new Map;for(let r of e){let i=t.get(r.leaf);i?i.push(r):t.set(r.leaf,[r]);let o=n.get(r.startLine);o?o.push(r):n.set(r.startLine,[r])}return{definitions:e,byLeaf:t,byStartLine:n}}function KT(e,t){if(e.definitions.length===0)return t.symbol;let n=XT(t.symbol),r=JT(e.byLeaf,n),i=YT(r,t.line);if(i)return i.symbol;let o=e.byStartLine.get(t.line)??[];return o.length===1?o[0].symbol:t.symbol}function JT(e,t){let n=[],r=new Set;for(let i of t)for(let o of e.get(i)??[])r.has(o.symbolId)||(r.add(o.symbolId),n.push(o));return n}function YT(e,t){let n=null;for(let r of e)if(!(r.startLine>t||r.endLine<t)){if(r.startLine===t)return r;(!n||r.endLine-r.startLine<n.endLine-n.startLine)&&(n=r)}return n}function XT(e){let t=new Set([e]),r=e.split(/::|\.|#/).filter(Boolean).at(-1);return r&&t.add(r),t}function Rg(e,t){let r=Z(e,t).map(i=>ZT(t,i));return{usage:r,positions:eF(e,t,r)}}function vg(e,t){return{importUsage(n){let r=e.importUsageFacts(n);if(!t||r.positions.length===0)return r.usage;let i=t.importDefinitionsForFile(n,r.positions);return i.available?QT(r.usage,i.sourcePaths):r.usage}}}function QT(e,t){return e.map((n,r)=>{let i=t.get(String(r));return i?{...n,sourcePath:i}:n})}function ZT(e,t){let n=t.isTypeOnly===!0,r=t.kind==="side-effect"||n||t.used;return{importer:e,sourcePath:t.sourcePath,importedName:t.importedName,localName:t.localName,kind:t.kind,isTypeOnly:n,isUsed:r,isTypeUsed:n,isValueUsed:t.kind==="side-effect"||!n&&t.used,references:[]}}function eF(e,t,n){let r=K(e,t);if(!r)return[];let i=tF(r.rootNode),o=new Map;for(let a of i){let c=o.get(Tl(a.importedName,a.localName));c?c.push(a.position):o.set(Tl(a.importedName,a.localName),[a.position])}let s=[];return n.forEach((a,c)=>{let l=o.get(Tl(a.importedName,a.localName??a.importedName))?.shift();l&&s.push({...l,id:String(c),file:t})}),s}function tF(e){let t=[];for(let n of e.descendantsOfType("use_declaration")){let r=n.namedChildren.find(i=>i.type!=="visibility_modifier");r&&t.push(...Ls(r,""))}return t.filter(n=>n.importedName!=="*")}function Ls(e,t){switch(e.type){case"identifier":case"super":case"self":case"crate":return[{importedName:e.text,localName:e.text,position:kl(e,e.text)}];case"scoped_identifier":{let n=e.text.split("::").pop()??e.text;return[{importedName:n,localName:n,position:kl(e,n)}]}case"scoped_use_list":{let n=e.namedChild(0),r=e.namedChild(1);if(!n||!r)return[];let i=Tr(t,n.text);return r.namedChildren.flatMap(o=>Ls(o,i))}case"use_list":return e.namedChildren.flatMap(n=>Ls(n,t));case"use_as_clause":{let n=e.namedChild(0),r=e.namedChild(1);return!n||!r?[]:Ls(n,t).map(i=>({...i,localName:r.text}))}case"use_wildcard":{let n=e.namedChild(0),r="*";return[{importedName:r,localName:r,position:kl(n??e,r)}]}default:return[]}}function kl(e,t){let n=Math.max(0,e.text.lastIndexOf(t));return{id:"",file:"",line:e.startPosition.row,column:e.startPosition.column+n+nF(t)}}function nF(e){return Math.max(0,Math.min(e.length-1,1))}function Tl(e,t){return`${e}\0${t}`}import{spawnSync as Kl}from"child_process";import{existsSync as Jl}from"fs";import{fileURLToPath as w_}from"url";function vn(e){if(!e)return;let t=Number(e);return Number.isInteger(t)&&t>0?t:void 0}import{execFileSync as Pg}from"child_process";import{existsSync as _l,readFileSync as cF}from"fs";import{createRequire as lF}from"module";import{platform as kg}from"os";import{dirname as Dg,join as Ns}from"path";import{execFileSync as Ig,spawnSync as rF}from"child_process";import{platform as iF}from"os";var wg=iF()==="win32";function HZ(e,t=rF){try{return t(e,["--version"],{stdio:"ignore",timeout:1e4}).status===0}catch{return!1}}function Fl(e){let t=wg?"where":"which";try{return Ig(t,[e],{stdio:"pipe"}),!0}catch{return!1}}var oF=/\.(?:c|m)?js$/i,sF=/\.(?:exe|com)$/i;function UZ(e,t){return oF.test(e)?{binary:process.execPath,args:[e,...t]}:{binary:e,args:[...t]}}function aF(e,t){return Ig(e,t,{stdio:["ignore","pipe","ignore"],encoding:"utf8"})}function Eg(e,t={}){let n=t.isWindows??wg,r=t.lookup??aF,i;try{i=r(n?"where":"which",[e])}catch{return null}let o=i.split(/\r?\n/).map(s=>s.trim()).filter(Boolean);return n?o.find(s=>sF.test(s))??null:o[0]??null}var uF=lF(import.meta.url),Tg={language:"rust",indexerBinary:"rust-analyzer",installUrl:"https://github.com/rust-lang/rust-analyzer"};function Ll(e){return[e.indexerBinary,...e.binaryAliases??[]]}function dF(e){let t=Ll(e);return t.length===1?t[0]:t.join(" or ")}function Nl(e){for(let t of Ll(e))if(kg()==="win32"){let n=Eg(t);if(n)return n}else if(Fl(t))return t;return fF(e)}function YZ(e){return Nl(e)!==null||mF(e)}function mF(e){return Fg(e)!==null}function fF(e){let t=Fg(e);if(!t)return null;let r=JSON.parse(cF(t,"utf8")).bin;if(!r)return null;if(typeof r=="string")return Ns(Dg(t),r);for(let i of Ll(e)){let o=r[i];if(o)return Ns(Dg(t),o)}return null}function Fg(e){if(!e.bundledNpmPackage)return null;try{return uF.resolve(`${e.bundledNpmPackage}/package.json`)}catch{return null}}function pF(e,t){for(let n of e.projectLocalBinaries??[]){let r=Ns(t,n);if(_l(r))return r}return null}function gF(e,t){return pF(e,t)??Nl(e)}function XZ(e,t=process.env,n=e.indexerBinary){if(e.indexerBinary!=="scip-dotnet"||Al(n,t))return t;let r=Lg(n,t);return r?{...t,DOTNET_ROOT:r}:t}function _g(e,t){let n=dF(e),r=t?gF(e,t):Nl(e);if(!r)return{language:e.language,binaryLabel:n,installed:!1,runnable:!1,resolvedBinary:null,installUrl:e.installUrl};if(e.indexerBinary!=="scip-dotnet")return{language:e.language,binaryLabel:n,installed:!0,runnable:!0,resolvedBinary:r};let i=hF(r);return{language:e.language,binaryLabel:n,installed:!0,runnable:i.runnable,resolvedBinary:r,installUrl:e.installUrl,note:i.note}}function hF(e){if(Al(e,process.env))return{runnable:!0};let t=Lg(e,process.env);if(t)return{runnable:!0,note:`using .NET 9 runtime from ${t}`};let n=Ng(process.env);return{runnable:!1,note:n.length>0?`.NET 9 runtime still unavailable after checking ${n.join(", ")}`:"binary is present, but scip-dotnet still needs a .NET 9 runtime"}}function Lg(e,t){for(let n of Ng(t))if(Al(e,{...t,DOTNET_ROOT:n}))return n;return null}function Ng(e){let t=[],n=e.DOTNET_ROOT;if(n&&_l(n)&&t.push(n),kg()==="darwin"&&Fl("brew"))try{let r=Pg("brew",["--prefix","dotnet@9"],{stdio:"pipe",env:e}).toString().trim(),i=Ns(r,"libexec");_l(i)&&!t.includes(i)&&t.push(i)}catch{}return t}function Al(e,t){try{return Pg(e,["--version"],{stdio:"pipe",env:t}),!0}catch{return!1}}function As(e){let t=_g(Tg,e),n=t.runnable;return{available:n,dependencyAvailable:n,resolvedBinary:t.resolvedBinary??void 0,reason:n?"rust-analyzer semantic reference queries are enabled.":"rust-analyzer is not runnable; Rust semantic checks will use SCIP/source evidence only."}}import{existsSync as u_,mkdtempSync as dh,readFileSync as mh,rmSync as Ul}from"fs";import{tmpdir as zl}from"os";import{join as Wl}from"path";import{fileURLToPath as Ai,pathToFileURL as d_}from"url";import{SHARE_ENV as m_,Worker as f_}from"worker_threads";function dt(e){try{return process.kill(e,0),!0}catch(t){return typeof t=="object"&&t!==null&&"code"in t&&t.code==="EPERM"}}function In(e,t,n=new Set){let r=new Map;for(let i of e)n.has(i.symbolId)||r.set(i.symbolId,t.get(i.symbolId)??[]);return r}function Jn(e,t,n){let r=vn(process.env.SCIP_RUST_SEMANTIC_BATCH_TIMEOUT_MS)??0;if(r>0)return r;let i=Math.max(1,Math.ceil(e/Math.max(1,n)));return Math.max(12e4,3e4+i*t)}import{spawn as XF}from"child_process";import{createHash as QF,randomUUID as ZF}from"crypto";import{existsSync as ih,mkdirSync as Zg,readFileSync as $s,realpathSync as e_,rmSync as $l}from"fs";import{tmpdir as t_}from"os";import{resolve as kt}from"path";import{mkdirSync as yF,renameSync as bF,writeFileSync as SF}from"fs";import{dirname as CF}from"path";function Fe(e,t,n={}){yF(CF(e),{recursive:!0});let r=`${e}.${process.pid}.${Date.now()}.tmp`,i=JSON.stringify(t,null,n.spacing);SF(r,n.trailingNewline?`${i}
284
+ `:i),bF(r,e)}import{execFileSync as kF}from"child_process";import{existsSync as xF,readFileSync as RF}from"fs";import{deserializeSCIP as vF,SymbolRole as IF}from"@c4312/scip";import{existsSync as c3,readFileSync as l3}from"fs";import{relative as d3,resolve as m3,sep as f3}from"path";import{fileURLToPath as g3,pathToFileURL as h3}from"url";function Ms(e){let t=new Map;for(let n of e)t.set(`${n.file}\0${n.line}\0${n.column}`,n);return[...t.values()].sort((n,r)=>{let i=n.file.localeCompare(r.file);return i!==0?i:n.line!==r.line?n.line-r.line:n.column-r.column})}var Ml=new WeakMap,wF="SCIP_RUST_SCIP_OCCURRENCE_REFERENCE_MODE";function Ag(e,t){let n=new Map,r=Os(),i=t.filter(s=>jg(s,r));if(i.length===0)return n;let o=Bg(e);if(!o)return n;for(let s of i){let a=Og(o,s);a!==null&&n.set(s.symbolId,a)}return n}function Mg(e,t){if(!jg(t,Os()))return null;let n=Bg(e);return n?Og(n,t):null}function Og(e,t){return e.referencesBySymbol.get(t.symbol)??[]}function jg(e,t="safe"){if(!e.symbol.startsWith("rust-analyzer ")||!e.relativePath.endsWith(".rs")||Ie(e.symbol)||/impl#\[[^\]]+\]\[Default\]default\(\)\.$/.test(e.symbol))return!1;if(t==="all")return!0;let n=ue(e.symbol);if(n==="method")return!0;if(n!=="term")return!1;let r=ye(e.symbol);return"kind"in r?!1:!EF(r)}function EF(e){for(let t=0;t<e.descriptors.length-1;t+=1)if(e.descriptors[t]?.suffix==="type")return!0;return!1}function Bg(e){if(Ml.has(e))return Ml.get(e)??null;let t=DF(e);return Ml.set(e,t),t}function DF(e){if(!xF(e.config.indexPath))return null;try{let t=vF(RF(e.config.indexPath)),n=new Map;for(let r of t.documents??[]){let i=r.relativePath;if(!(!i||e.isIgnored(i)))for(let o of r.occurrences??[]){if(!o.symbol||(o.symbolRoles&IF.Definition)!==0)continue;let s=PF(i,o.range);if(!s)continue;let a=n.get(o.symbol)??[];a.push(s),n.set(o.symbol,a)}}for(let[r,i]of n)n.set(r,Ms(i));return{referencesBySymbol:n}}catch{return null}}function PF(e,t){if(t.length<3)return null;let n=t[0],r=t[1];return!Number.isInteger(n)||!Number.isInteger(r)?null:{file:e,line:n,column:r}}function Os(){return process.env[wF]==="all"?"all":"safe"}var $g=new Map;function Ol(e){let n=As(e).resolvedBinary??null;return{engine:"rust-analyzer",resolvedBinary:n,version:n?TF(e,n):"unavailable"}}function Yn(e){return{...Ol(e),scipOccurrenceReferenceMode:Os()}}function TF(e,t){let n=`${e}\0${t}`,r=$g.get(n);if(r)return r;let i;try{i=kF(t,["--version"],{cwd:e,encoding:"utf8",stdio:["ignore","pipe","ignore"],timeout:2e3}).trim()}catch{i="unknown"}return $g.set(n,i),i}import{createHash as KF}from"crypto";import{execFileSync as NF}from"child_process";import{createHash as Kg}from"crypto";import{lstatSync as AF,readdirSync as MF,readFileSync as OF,readlinkSync as jF,realpathSync as Jg}from"fs";import{isAbsolute as BF,join as Yg,relative as $F,sep as HF}from"path";function jl(e,t){let n=e.split("/").at(-1)??e;if(Vg.has(n)||n===".scipquery.json"||/^tsconfig(?:\..+)?\.json$/.test(n))return"config";if(/\.d\.(?:ts|mts|cts)$/.test(e.toLowerCase()))return"ambient";let r=e.includes(".")?`.${e.split(".").at(-1).toLowerCase()}`:"";return t.some(i=>(qg[i]??[]).includes(r))?"source":"other"}function Gg(e,t,n){let r=e.split("/").at(-1)??e;if(n?.includes(e)||n?.includes(r)||Vg.has(r))return!0;let i=e.includes(".")?`.${e.split(".").at(-1).toLowerCase()}`:"";return(qg[t]??[]).includes(i)}function zg(e){if(typeof e!="object"||e===null)return null;let t=e;return typeof t.version!="number"||!Hg(t.languages)||typeof t.pnpmWorkspaces!="boolean"||typeof t.typescriptProjectMode!="string"||!Hg(t.typescriptProjects)||t.clojureConfigPath!==void 0&&typeof t.clojureConfigPath!="string"||!Array.isArray(t.files)||!t.files.every(FF)?null:t}function D3(e,t){let n=new Map((e?.files??[]).map(a=>[a.path,a])),r=new Map(t.files.map(a=>[a.path,a])),i=new Set([...n.keys(),...r.keys()]),o=[];for(let a of[...i].sort()){let c=n.get(a),l=r.get(a),u=jl(a,t.languages);!c&&l?o.push({kind:"added",path:a,inputKind:u,after:l}):c&&!l?o.push({kind:"deleted",path:a,inputKind:u,before:c}):c&&l&&(c.hash!==l.hash||c.size!==l.size)&&o.push({kind:"modified",path:a,inputKind:u,before:c,after:l})}let s=new Set;return e||s.add("prior-snapshot-unavailable"),e&&e.version!==t.version&&s.add("snapshot-version-changed"),(Ug(e?.files??[])||Ug(t.files))&&s.add("duplicate-input-path"),[...e?.files??[],...t.files].some(_F)&&s.add("unreadable-input"),{version:1,changes:o,projectIdentityChanged:e?!LF(e,t):!0,uncertainty:[...s].sort()}}function Hg(e){return Array.isArray(e)&&e.every(t=>typeof t=="string")}function Ug(e){return new Set(e.map(t=>t.path)).size!==e.length}function FF(e){if(typeof e!="object"||e===null)return!1;let t=e;return typeof t.path=="string"&&typeof t.size=="number"&&typeof t.hash=="string"}function _F(e){return e.hash==="unreadable"||e.size<0}function LF(e,t){return Wg(e.languages,t.languages)&&e.pnpmWorkspaces===t.pnpmWorkspaces&&e.typescriptProjectMode===t.typescriptProjectMode&&Wg(e.typescriptProjects,t.typescriptProjects)&&e.clojureConfigPath===t.clojureConfigPath}function Wg(e,t){if(e.length!==t.length)return!1;let n=[...e].sort(),r=[...t].sort();return n.every((i,o)=>i===r[o])}var Vg=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"]),qg={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"]};function UF(e){return[...new Set((e??[]).map(t=>t.trim()).filter(Boolean))].sort((t,n)=>t.localeCompare(n))}function WF(e){return(zF(e)??VF(e)).filter(t=>t&&!Xg(t)).sort()}function Bl(e,t={}){let n=WF(e).filter(i=>!t.language||Gg(i,t.language,t.markerFiles)).filter(i=>!t.includePath||t.includePath(i)),r=Jg(e);return n.map(i=>{let o=Yg(e,i);try{if(AF(o).isSymbolicLink()){let a=Jg(o),c=$F(r,a);if(c===".."||c.startsWith(`..${HF}`)||BF(c))throw new Error("external symlink");let l=jF(o);return{path:i,size:Buffer.byteLength(l),hash:Kg("sha256").update("symlink\0").update(l).digest("hex")}}let s=OF(o);return{path:i,size:s.byteLength,hash:Kg("sha256").update(s).digest("hex")}}catch{return{path:i,size:-1,hash:"unreadable"}}})}function Ti(e,t,n){return{version:2,languages:[...t].sort(),pnpmWorkspaces:n.typescriptProjectMode!=="workspace"&&n.pnpmWorkspaces===!0,typescriptProjectMode:n.typescriptProjectMode??"single",typescriptProjects:UF(n.typescriptProjects),clojureConfigPath:GF(n.clojureConfigPath),files:Bl(e)}}function GF(e){return e?.trim()||void 0}function zF(e){try{return NF("git",["-C",e,"ls-files","-co","--exclude-standard","--","."],{encoding:"utf-8",maxBuffer:50*1024*1024,stdio:["ignore","pipe","ignore"]}).split(`
285
+ `).filter(Boolean)}catch{return null}}function VF(e){let t=[],n=[""];for(;n.length>0;){let r=n.pop(),i=r?Yg(e,r):e,o;try{o=MF(i,{withFileTypes:!0})}catch{continue}for(let s of o){let a=r?`${r}/${s.name}`:s.name;if(s.isDirectory()){Xg(a)||n.push(a);continue}t.push(a)}}return t}function Xg(e){let t=e.split("/");return e==="meta.json"||t.some(n=>qF.has(n))||e.endsWith(".db")||e.endsWith(".db-wal")||e.endsWith(".db-shm")||e.endsWith(".scip")}var qF=new Set([".git","node_modules",".scipquery-cache",".scipquery-generations",".stryker-tmp","dist","build","coverage",".next",".nuxt","target"]);var JF=new Set(["Cargo.lock","Cargo.toml","rust-project.json","rust-toolchain","rust-toolchain.toml"]);function Qg(e){let t=Bl(e,{includePath:YF});return KF("sha256").update(JSON.stringify(t)).digest("hex")}function YF(e){let t=e.replaceAll("\\","/"),n=t.split("/").at(-1)??t;return t.endsWith(".rs")||JF.has(n)?!0:t===".cargo/config"||t===".cargo/config.toml"||t.endsWith("/.cargo/config")||t.endsWith("/.cargo/config.toml")}var oh=2,n_=5e3,r_=5e3,sh=10,i_=3e4;function eh(e,t,n,r=uh){let i=r.engineIdentity(e),o={protocolVersion:oh,projectRoot:r.canonicalProjectRoot(e),projectFingerprint:r.projectFingerprint(e),engine:{engine:i.engine,resolvedBinary:i.resolvedBinary,version:i.version},workerFingerprint:r.fileFingerprint(t),environment:ah(r.environment())};return{key:Bs(js(o)),...o}}function Fi(e,t,n){return e.protocolVersion===oh&&(t-e.heartbeatAtMs<=n_||e.busyUntilMs!==void 0&&t<=e.busyUntilMs)&&n(e.pid)}function Hl(e,t,n){let r;try{r=Bs($s(t))}catch{r="missing"}let i=Bs(js({projectRoot:kt(e),serverPath:kt(t),serverFingerprint:r})).slice(0,20);return kt(n,`scip-query-rust-session-${i}`)}function th(e){let t=e===void 0?Number.NaN:Number(e);return Number.isInteger(t)&&t>=0?t:0}function ah(e){return Object.fromEntries(Object.entries(e).filter(([t])=>lh(t)).sort(([t],[n])=>t.localeCompare(n)).map(([t,n])=>[t,n??null]))}function ch(e,t){let n=t.runtime??l_,r=t.identityRuntime??uh,i=Hl(e,t.serverPath,t.tempRoot??t_()),o=!1,s=(a,c)=>{if(o)throw new Error("Durable Rust semantic session was already disposed.");return s_(i,t.serverPath,t.semanticWorkerPath,a,c,n)};return{requestSemantic(a,c){let l=eh(e,t.semanticWorkerPath,a,r),u=n.now()+Math.max(1,c-1e3);return s({kind:"semantic",identityKey:l.key,workerEnvironment:rh(),request:{...a,readinessDeadlineMs:u,referenceRetryTimeoutMs:o_(process.env.SCIP_RUST_SEMANTIC_REFERENCE_RETRY_TIMEOUT_MS,a.referenceRetryTimeoutMs),settleDelayMs:process.env.SCIP_RUST_SEMANTIC_SETTLE_MS===void 0?a.settleDelayMs:th(process.env.SCIP_RUST_SEMANTIC_SETTLE_MS)},timeoutMs:c},c)},requestImportDefinitions(a,c){let l=eh(e,t.semanticWorkerPath,a,r),u=n.now()+Math.max(1,c-1e3);return s({kind:"import-definitions",identityKey:l.key,workerEnvironment:rh(),request:{...a,readinessDeadlineMs:u,settleDelayMs:process.env.SCIP_RUST_SEMANTIC_SETTLE_MS===void 0?a.settleDelayMs:th(process.env.SCIP_RUST_SEMANTIC_SETTLE_MS)},timeoutMs:c},c)},shutdown(){o=!0}}}function o_(e,t){return t!==void 0?t:e===void 0?i_:void 0}function s_(e,t,n,r,i,o){let s=o.randomId(),a=o.now(),c=kt(e,"requests"),l=kt(e,"responses"),u=kt(c,`${s}.json`),d=kt(l,`${s}.json`);Zg(c,{recursive:!0}),Zg(l,{recursive:!0}),Fe(u,{id:s,request:r});let m=o.now()+i;try{for(nh(e,t,n,m,o);o.now()<=m;){if(ih(d)){let p=a_($s(d,"utf8"));if(!p.ok)throw new Error(p.error);return U()&&pn({type:"span",name:"rust.semantic.durable-session.request",durationMs:o.now()-a,ok:!0,session:p.session,kind:r.kind}),p.response}let f=_i(e);(!f||!Fi(f,o.now(),o.isProcessAlive))&&nh(e,t,n,m,o),o.sleep(sh)}throw new Error(`Durable Rust semantic session timed out after ${(i/1e3).toFixed(0)}s.`)}finally{$l(u,{force:!0}),$l(d,{force:!0})}}function nh(e,t,n,r,i){let o=_i(e);if(o&&Fi(o,i.now(),i.isProcessAlive))return;$l(kt(e,"server.json"),{force:!0}),i.spawnServer(t,e,n);let s=Math.min(r,i.now()+r_);for(;i.now()<=s;){let a=_i(e);if(a&&Fi(a,i.now(),i.isProcessAlive))return;i.sleep(sh)}throw new Error("Durable Rust semantic session helper did not become ready within 5s.")}function _i(e){try{let t=JSON.parse($s(kt(e,"server.json"),"utf8"));return typeof t.protocolVersion!="number"||typeof t.pid!="number"||typeof t.heartbeatAtMs!="number"||t.busyUntilMs!==void 0&&typeof t.busyUntilMs!="number"?null:{protocolVersion:t.protocolVersion,pid:t.pid,heartbeatAtMs:t.heartbeatAtMs,...t.busyUntilMs===void 0?{}:{busyUntilMs:t.busyUntilMs}}}catch{return null}}function a_(e){try{let t=JSON.parse(e);return t.ok===!0&&(t.session==="created"||t.session==="reused"||t.session==="invalidated")&&t.response&&typeof t.response=="object"?{ok:!0,session:t.session,response:t.response}:{ok:!1,error:typeof t.error=="string"?t.error:"helper wrote an invalid response"}}catch(t){return{ok:!1,error:`helper wrote malformed JSON: ${t instanceof Error?t.message:String(t)}`}}}function rh(){return Object.fromEntries(Object.entries(process.env).filter(([e])=>c_(e)).sort(([e],[t])=>e.localeCompare(t)).map(([e,t])=>[e,t??null]))}function lh(e){return e==="HOME"||e==="PATH"||e.startsWith("CARGO_")||e.startsWith("RA_")||e.startsWith("RUST")}function c_(e){return lh(e)||e.startsWith("SCIP_RUST_")||e==="SCIP_QUERY_PROFILE"||e==="SCIP_QUERY_PROFILE_CACHE_STATE"||e==="SCIP_QUERY_PROFILE_COMMAND"||e==="SCIP_QUERY_PROFILE_OUT"||e==="SCIP_QUERY_PROFILE_RUN_ID"||e==="SCIP_QUERY_PROFILE_WORKLOAD_IDENTITY"||e==="SCIP_QUERY_PROFILE_WORKLOAD_IDENTITY_KIND"||e==="SCIP_QUERY_PROFILE_MIN_MS"}var uh={canonicalProjectRoot(e){try{return e_(e)}catch{return kt(e)}},projectFingerprint(e){return Qg(e)},engineIdentity:Ol,fileFingerprint(e){return Bs($s(e))},environment(){return ah(process.env)}},l_={now:Date.now,randomId:ZF,isProcessAlive:dt,spawnServer(e,t,n){if(!ih(e))throw new Error(`Durable Rust semantic session helper was not found at ${e}. Run npm run build first.`);XF(process.execPath,[e,t,n],{detached:!0,stdio:"ignore"}).unref()},sleep(e){let t=new Int32Array(new SharedArrayBuffer(4));Atomics.wait(t,0,0,e)}};function js(e){return Array.isArray(e)?`[${e.map(js).join(",")}]`:e&&typeof e=="object"?`{${Object.entries(e).sort(([t],[n])=>t.localeCompare(n)).map(([t,n])=>`${JSON.stringify(t)}:${js(n)}`).join(",")}}`:JSON.stringify(e)}function Bs(e){return QF("sha256").update(e).digest("hex")}var fh=15e3,ph=8,hh=5e3,p_=64,g_=96,Vl=class{constructor(t,n,r={}){this.projectRoot=t;this.status=n;this.opts=r;this.requester=r.requester??b_(t,process.env.SCIP_RUST_SEMANTIC_DURABLE_SESSION)}projectRoot;status;opts;requester;referencesForDefinitions(t){let n=this.status(this.projectRoot);if(!n.available||!n.resolvedBinary)return{available:!1,resolvedBinary:n.resolvedBinary,reason:n.reason,references:Li(t)};try{let r=this.requestSession(n.resolvedBinary,t,{includeReferences:!0});return{available:r.available,resolvedBinary:n.resolvedBinary,reason:r.reason,references:In(t,new Map(r.references),new Set(r.incompleteReferenceSymbolIds??[]))}}catch(r){return this.opts.fallbackReferenceResolver?.referencesForDefinitions(t)??{available:!1,resolvedBinary:n.resolvedBinary,reason:r instanceof Error?r.message:String(r),references:Li(t)}}}calleesForDefinitions(t){let n=this.status(this.projectRoot);if(!n.available||!n.resolvedBinary)return{available:!1,resolvedBinary:n.resolvedBinary,reason:n.reason,callees:Ni(t)};try{let r=this.requestSession(n.resolvedBinary,t,{includeReferences:!1,includeCallees:!0});return{available:r.available,resolvedBinary:n.resolvedBinary,reason:r.reason,callees:Gl(t,new Map(r.callees??[]))}}catch(r){return this.opts.fallbackCalleeResolver?.calleesForDefinitions(t)??{available:!1,resolvedBinary:n.resolvedBinary,reason:r instanceof Error?r.message:String(r),callees:Ni(t)}}}referencesAndCalleesForDefinitions(t,n){let r=this.status(this.projectRoot);if(!r.available||!r.resolvedBinary)return{available:!1,resolvedBinary:r.resolvedBinary,reason:r.reason,references:Li(t),callees:Ni(n)};let i=[...t,...n];try{let o=this.requestSession(r.resolvedBinary,i,{includeReferences:t.length>0,includeCallees:n.length>0,referenceDefinitions:t,calleeDefinitions:n});return{available:o.available,resolvedBinary:r.resolvedBinary,reason:o.reason,references:In(t,new Map(o.references),new Set(o.incompleteReferenceSymbolIds??[])),callees:Gl(n,new Map(o.callees??[]))}}catch(o){return this.fallbackReferencesAndCallees(r,t,n,o)}}signaturesForDefinitions(t){let n=this.status(this.projectRoot);if(!n.available||!n.resolvedBinary)return{available:!1,resolvedBinary:n.resolvedBinary,reason:n.reason,signatures:gh(t)};try{let r=this.requestSession(n.resolvedBinary,t,{includeReferences:!1,includeCallees:!1,includeSignatures:!0});return{available:r.available,resolvedBinary:n.resolvedBinary,reason:r.reason,signatures:v_(t,new Map(r.signatures??[]))}}catch(r){return this.opts.fallbackSignatureResolver?.signaturesForDefinitions(t)??{available:!1,resolvedBinary:n.resolvedBinary,reason:r instanceof Error?r.message:String(r),signatures:gh(t)}}}importDefinitionsForFile(t,n){let r=this.status(this.projectRoot);if(n.length===0)return{available:r.available,resolvedBinary:r.resolvedBinary,reason:r.reason,sourcePaths:new Map};if(!r.available||!r.resolvedBinary)return{available:!1,resolvedBinary:r.resolvedBinary,reason:r.reason,sourcePaths:new Map(n.map(i=>[i.id,null]))};try{let i=this.requestImportDefinitions(r.resolvedBinary,t,n);return{available:i.available,resolvedBinary:r.resolvedBinary,reason:i.reason,sourcePaths:new Map(i.sourcePaths)}}catch(i){return{available:!1,resolvedBinary:r.resolvedBinary,reason:i instanceof Error?i.message:String(i),sourcePaths:new Map(n.map(o=>[o.id,null]))}}}dispose(){this.requester.shutdown()}requestSession(t,n,r){let i=Hs(process.env.SCIP_RUST_SEMANTIC_REQUEST_TIMEOUT_MS,fh),o=Us(process.env.SCIP_RUST_SEMANTIC_REFERENCE_RETRY_TIMEOUT_MS,0),s=Hs(process.env.SCIP_RUST_SEMANTIC_CONCURRENCY,ph),a=Us(process.env.SCIP_RUST_SEMANTIC_DIAGNOSTICS_TIMEOUT_MS,Math.min(i,1e4)),c=r.referenceDefinitions?[...r.referenceDefinitions]:void 0,l=r.calleeDefinitions?[...r.calleeDefinitions]:void 0,u=r.signatureDefinitions?[...r.signatureDefinitions]:void 0,d=Mi(process.env.SCIP_RUST_SEMANTIC_SETTLE_MS,{definitionCount:n.length,...r}),m={projectRoot:this.projectRoot,rustAnalyzerBinary:t,definitions:[...n],...c?{referenceDefinitions:c}:{},...l?{calleeDefinitions:l}:{},...u?{signatureDefinitions:u}:{},requestTimeoutMs:i,...r.includeReferences!==!1&&o>0?{referenceRetryTimeoutMs:o}:{},diagnosticsTimeoutMs:a,settleDelayMs:d,concurrency:s,includeReferences:r.includeReferences,includeCallees:r.includeCallees,includeSignatures:r.includeSignatures},f=I_(m);return E("rust.semantic.session.request",()=>this.requester.requestSemantic(m,Jn(f,ql(i,m.referenceRetryTimeoutMs),s)),()=>({definitions:n.length,operationDefinitions:f,referenceDefinitions:m.referenceDefinitions?.length,calleeDefinitions:m.calleeDefinitions?.length,signatureDefinitions:m.signatureDefinitions?.length,references:m.includeReferences!==!1,callees:m.includeCallees===!0,signatures:m.includeSignatures===!0,referenceRetryTimeoutMs:m.referenceRetryTimeoutMs}))}fallbackReferencesAndCallees(t,n,r,i){let o=n.length===0?{available:!0,references:Li(n)}:this.opts.fallbackReferenceResolver?.referencesForDefinitions(n),s=r.length===0?{available:!0,callees:Ni(r)}:this.opts.fallbackCalleeResolver?.calleesForDefinitions(r);return o&&s?{available:o.available&&s.available,resolvedBinary:o.resolvedBinary??s.resolvedBinary??t.resolvedBinary,reason:o.reason??s.reason,references:In(n,o.references),callees:Gl(r,s.callees)}:{available:!1,resolvedBinary:t.resolvedBinary,reason:i instanceof Error?i.message:String(i),references:Li(n),callees:Ni(r)}}requestImportDefinitions(t,n,r){let i=Hs(process.env.SCIP_RUST_SEMANTIC_REQUEST_TIMEOUT_MS,fh),o=Hs(process.env.SCIP_RUST_SEMANTIC_CONCURRENCY,ph),s=Us(process.env.SCIP_RUST_SEMANTIC_DIAGNOSTICS_TIMEOUT_MS,Math.min(i,1e4)),a=Us(process.env.SCIP_RUST_SEMANTIC_SETTLE_MS,hh),c={projectRoot:this.projectRoot,rustAnalyzerBinary:t,file:n,positions:[...r],requestTimeoutMs:i,diagnosticsTimeoutMs:s,settleDelayMs:a,concurrency:o};return E("rust.semantic.import-definitions.session.request",()=>this.requester.requestImportDefinitions(c,Jn(r.length,i,o)),()=>({file:n,positions:r.length}))}};function yh(e,t,n={}){return new Vl(e,t,n)}function Mi(e,t){let n=xh(e);if(n!==null)return n;let r=t.includeReferences!==!1;return r&&t.includeCallees!==!0&&t.includeSignatures!==!0&&t.definitionCount<=p_||r&&t.includeCallees===!0&&t.includeSignatures!==!0&&t.definitionCount<=g_?0:hh}function bh(e){let t=e?.trim().toLowerCase(),n=t==="0"||t==="false"||t==="off"||t==="worker",r=t==="1"||t==="true"||t==="on"||t==="durable",i=t===void 0||t==="";return{transport:n||!i&&!r?"worker":"durable",source:i?"default":"environment",fallback:"worker",valid:i||n||r,optOut:"SCIP_RUST_SEMANTIC_DURABLE_SESSION=0"}}function h_(e){return bh(e).transport}function o6(e,t){let n=bh(t);if(n.transport==="worker")return{...n,state:"per-command"};let r=Ai(Ch()),i=Hl(e,r,zl()),o=_i(i);return o?{...n,state:Fi(o,Date.now(),dt)?"live":"stale",pid:o.pid,heartbeatAtMs:o.heartbeatAtMs,...o.busyUntilMs===void 0?{}:{busyUntilMs:o.busyUntilMs}}:{...n,state:"stopped"}}function y_(e,t){let n=null,r=!1,i=!1,o=!1,s=()=>n??=t(),a=()=>{i||(e.shutdown(),i=!0)},c=(u,d,m)=>{let f=R_(u);r=!0;try{a()}catch{}U()&&pn({type:"span",name:"rust.semantic.durable-session.request",durationMs:m,ok:!1,kind:d,session:"worker-fallback",reason:f})},l=(u,d,m)=>{if(o)throw new Error("Rust semantic failover session was already disposed.");if(r)return m(s());let f=Date.now();try{return d(e)}catch(p){c(p,u,Date.now()-f)}return m(s())};return{requestSemantic(u,d){return l("semantic",m=>m.requestSemantic(u,d),m=>m.requestSemantic(u,d))},requestImportDefinitions(u,d){return l("import-definitions",m=>m.requestImportDefinitions(u,d),m=>m.requestImportDefinitions(u,d))},shutdown(){if(o)return;o=!0;let u=[];try{a()}catch(d){u.push(d)}try{n?.shutdown()}catch(d){u.push(d)}if(u.length>0)throw u[0]}}}function b_(e,t,n={worker:()=>S_(),durable:()=>ch(e,{serverPath:Ai(Ch()),semanticWorkerPath:Ai(Sh())})}){return h_(t)==="durable"?y_(n.durable(),n.worker):n.worker()}function S_(e={}){let t=null,n=null,r=1,i=!1,o=()=>{n&&(Ul(n,{recursive:!0,force:!0}),n=null)},s=()=>{let l=t;t=null,l&&l.terminate(),o()},a=()=>{if(t)return t;let l=e.semanticWorkerPath?d_(e.semanticWorkerPath):Sh();if(!u_(Ai(l)))throw new Error(`Rust semantic session worker was not found at ${Ai(l)}. Run npm run build before using built semantic Rust queries.`);return n=dh(Wl(zl(),"scip-query-rust-session-")),t=new f_(l,e.shareEnvironment?{env:m_}:void 0),t.unref(),t},c=()=>{let l=n??dh(Wl(zl(),"scip-query-rust-session-"));return n=l,Wl(l,`${r++}.json`)};return{requestSemantic(l,u){if(i)throw new Error("Rust semantic session was already disposed.");let d=a(),m=c(),f=new SharedArrayBuffer(4),p=new Int32Array(f);if(d.postMessage({kind:"semantic",request:l,responsePath:m,sharedBuffer:f}),Atomics.wait(p,0,0,u)==="timed-out")throw s(),new Error(`Rust semantic session worker timed out after ${(u/1e3).toFixed(0)}s`);try{let y=C_(mh(m,"utf8"));if(!y.ok)throw new Error(y.error);return y.response}finally{Ul(m,{force:!0})}},requestImportDefinitions(l,u){if(i)throw new Error("Rust semantic session was already disposed.");let d=a(),m=c(),f=new SharedArrayBuffer(4),p=new Int32Array(f);if(d.postMessage({kind:"import-definitions",request:l,responsePath:m,sharedBuffer:f}),Atomics.wait(p,0,0,u)==="timed-out")throw s(),new Error(`Rust semantic import-definition session worker timed out after ${(u/1e3).toFixed(0)}s`);try{let y=x_(mh(m,"utf8"));if(!y.ok)throw new Error(y.error);return y.response}finally{Ul(m,{force:!0})}},shutdown(){if(i)return;if(i=!0,!t){o();return}let l=c(),u=new SharedArrayBuffer(4),d=new Int32Array(u);t.postMessage({kind:"shutdown",responsePath:l,sharedBuffer:u}),Atomics.wait(d,0,0,5e3),s()}}}function C_(e){let t=JSON.parse(e);if(!t||typeof t!="object")return{ok:!1,error:"Rust semantic session worker wrote a non-object response."};let n=t;return n.ok===!0&&"response"in n?{ok:!0,response:n.response}:{ok:!1,error:typeof t.error=="string"?t.error:"Rust semantic session worker failed."}}function x_(e){let t=JSON.parse(e);if(!t||typeof t!="object")return{ok:!1,error:"Rust semantic session worker wrote a non-object response."};let n=t;return n.ok===!0&&"response"in n?{ok:!0,response:n.response}:{ok:!1,error:typeof t.error=="string"?t.error:"Rust semantic session worker failed."}}function R_(e){let t=e instanceof Error?`${e.name} ${e.message}`.toLowerCase():String(e).toLowerCase();return t.includes("readiness")?"readiness":t.includes("timeout")||t.includes("timed out")?"timeout":t.includes("helper")?"helper":"request"}function Li(e){return new Map(e.map(t=>[t.symbolId,[]]))}function Ni(e){return new Map(e.map(t=>[t.symbolId,[]]))}function gh(e){return new Map(e.map(t=>[t.symbolId,null]))}function Gl(e,t){return new Map(e.map(n=>[n.symbolId,t.get(n.symbolId)??[]]))}function v_(e,t){return new Map(e.map(n=>[n.symbolId,t.get(n.symbolId)??null]))}function I_(e){let t=0;return e.includeReferences!==!1&&(t+=(e.referenceDefinitions??e.definitions).length),e.includeCallees===!0&&(t+=(e.calleeDefinitions??e.definitions).length),e.includeSignatures===!0&&(t+=(e.signatureDefinitions??e.definitions).length),Math.max(1,t)}function ql(e,t){return t&&t>0?Math.max(e,t):e}function Sh(){return new URL("./rust-semantic-session-worker.js",import.meta.url)}function Ch(){return new URL("./rust-semantic-session-server.js",import.meta.url)}function Hs(e,t){return vn(e)??t}function Us(e,t){return xh(e)??t}function xh(e){if(!e)return null;let t=Number(e);return Number.isInteger(t)&&t>=0?t:null}var Yl=15e3,Xl=8;function wh(e,t={}){let n=t.status??As,r=P_(e,n),i=k_(e,n),o=T_(e,n),s=t.referenceResolver||t.calleeResolver||t.signatureResolver||!E_(t)?null:yh(e,n,{fallbackReferenceResolver:r,fallbackCalleeResolver:i,fallbackSignatureResolver:o}),a=t.referenceResolver??s??r,c=t.calleeResolver??s??i,l=t.signatureResolver??s??o,u=t.importUsageResolver??vg(t.sourceImportUsageResolver??D_(),t.importDefinitionResolver??s),d=t.calleeSymbolResolver,m=t.sourceZeroCalleeOracle,f=t.scipOccurrenceCalleeOracle,p=new Map,g=new Map,y=null,h=null,x=()=>(y??=n(e),y),b=()=>{let D=x();return D.dependencyAvailable?h??D:D},C=D=>{if(D.length===0)return new Map;let w=Oi(D);try{let P=a.referencesForDefinitions(w),L=x();return h={...L,available:P.available,resolvedBinary:P.resolvedBinary??L.resolvedBinary,reason:P.reason??L.reason},P.available?new Map(P.references):In(w,P.references)}catch(P){return h={...x(),available:!1,reason:P instanceof Error?P.message:String(P)},Xn(w)}},S=D=>{if(D.length===0)return new Map;let w=Oi(D),P=w.filter(Rh);if(P.length===0)return Qn(w);let L=new Map,re=Ih(P,f),Q=[];for(let _ of P)g.has(_.symbolId)?L.set(_.symbolId,g.get(_.symbolId)??[]):re.has(_.symbolId)?L.set(_.symbolId,re.get(_.symbolId)??[]):vh(_,m)?L.set(_.symbolId,[]):Q.push(_);if(Q.length===0)return Ar(w,L,void 0);try{let _=c.calleesForDefinitions(Q),ae=x();h={...ae,available:_.available,resolvedBinary:_.resolvedBinary??ae.resolvedBinary,reason:_.reason??ae.reason};let ee=Ar(Q,_.callees,d);for(let[dn,Rc]of ee)L.set(dn,Rc);return Ar(w,L,void 0)}catch(_){return h={...x(),available:!1,reason:_ instanceof Error?_.message:String(_)},Qn(w)}},v=(D,w)=>{let P=Oi(D),L=Oi(w),re=L.filter(Rh),Q=new Map,_=Ih(re,f),ae=[];for(let ee of re)_.has(ee.symbolId)?Q.set(ee.symbolId,_.get(ee.symbolId)??[]):vh(ee,m)?Q.set(ee.symbolId,[]):ae.push(ee);if(P.length===0&&ae.length===0)return{references:Xn(P),callees:Ar(L,Q,void 0)};try{let ee=s?s.referencesAndCalleesForDefinitions(P,ae):N_(a,c,{referenceDefinitions:P,calleeDefinitions:ae}),dn=x();h={...dn,available:ee.available,resolvedBinary:ee.resolvedBinary??dn.resolvedBinary,reason:ee.reason??dn.reason};let Rc=ee.available?new Map(ee.references):In(P,ee.references);for(let[vc,Ic]of ee.callees)Q.set(vc,Ic);let zm=Ar(L,Q,d);for(let[vc,Ic]of zm)g.set(vc,Ic);return{references:Rc,callees:zm}}catch(ee){return h={...x(),available:!1,reason:ee instanceof Error?ee.message:String(ee)},{references:Xn(P),callees:Qn(L)}}},R=D=>{if(D.length===0)return new Map;let w=Oi(D);try{let P=l.signaturesForDefinitions(w),L=x();return h={...L,available:P.available,resolvedBinary:P.resolvedBinary??L.resolvedBinary,reason:P.reason??L.reason},Eh(w,P.signatures)}catch(P){return h={...x(),available:!1,reason:P instanceof Error?P.message:String(P)},Ws(w)}};return{language:"rust",availability:b,dispose:()=>{s?.dispose()},importUsage:D=>{let w=p.get(D);if(w)return w;try{let P=u.importUsage(D);return p.set(D,P),P}catch(P){return h={...x(),available:!1,reason:P instanceof Error?P.message:String(P)},[]}},referencesFor:D=>C([D]).get(D.symbolId)??[],referencesForDefinitions:C,referencesAndCalleesForDefinitions:v,calleesFor:D=>S([D]).get(D.symbolId)??[],calleesForDefinitions:S,signatureFor:D=>R([D]).get(D.symbolId)??null}}function E_(e){if(e.usePersistentSession!==void 0)return e.usePersistentSession;let t=process.env.SCIP_RUST_SEMANTIC_SESSION;return t!=="0"&&t!=="false"}function D_(){return{importUsageFacts:()=>({usage:[],positions:[]})}}function Oi(e){return e.map(t=>{let n=t;return{...t,leaf:typeof n.leaf=="string"?n.leaf:T(t.symbol),parentTypeName:n.parentTypeName??null,isFunctionLike:typeof n.isFunctionLike=="boolean"?n.isFunctionLike:te(t.symbol),isTypeLike:n.isTypeLike??!1,kind:n.kind??null,documentation:n.documentation??null,enclosingSymbol:n.enclosingSymbol??null}})}function Rh(e){return e.isFunctionLike}function vh(e,t){if(!t)return!1;try{return t(e)}catch{return!1}}function Ih(e,t){if(!t||e.length===0)return new Map;try{return t(e)}catch{return new Map}}function P_(e,t){return{referencesForDefinitions:n=>F_(e,t,n)}}function k_(e,t){return{calleesForDefinitions:n=>__(e,t,n)}}function T_(e,t){return{signaturesForDefinitions:n=>L_(e,t,n)}}function F_(e,t,n){let r=t(e);if(!r.available||!r.resolvedBinary)return{available:!1,resolvedBinary:r.resolvedBinary,reason:r.reason,references:Xn(n)};let i=Ql();if(!Jl(i))return{available:!1,resolvedBinary:r.resolvedBinary,reason:`Rust semantic worker was not found at ${i}. Run npm run build before using built semantic Rust queries.`,references:Xn(n)};let o=Mr(process.env.SCIP_RUST_SEMANTIC_REQUEST_TIMEOUT_MS,Yl),s=Gs(process.env.SCIP_RUST_SEMANTIC_REFERENCE_RETRY_TIMEOUT_MS,0),a=Mr(process.env.SCIP_RUST_SEMANTIC_CONCURRENCY,Xl),c=Gs(process.env.SCIP_RUST_SEMANTIC_DIAGNOSTICS_TIMEOUT_MS,Math.min(o,1e4)),l=Mi(process.env.SCIP_RUST_SEMANTIC_SETTLE_MS,{definitionCount:n.length,includeReferences:!0}),u={projectRoot:e,rustAnalyzerBinary:r.resolvedBinary,definitions:[...n],requestTimeoutMs:o,...s>0?{referenceRetryTimeoutMs:s}:{},diagnosticsTimeoutMs:c,settleDelayMs:l,concurrency:a},d=Kl(process.execPath,[i],{cwd:e,input:JSON.stringify(u),encoding:"utf8",maxBuffer:50*1024*1024,timeout:Jn(n.length,ql(o,u.referenceRetryTimeoutMs),a)}),m=Zl(d.stdout);if(m)return{available:m.available,resolvedBinary:r.resolvedBinary,reason:m.reason,references:In(n,new Map(m.references),new Set(m.incompleteReferenceSymbolIds??[]))};let f=d.error instanceof Error?d.error.message:d.stderr.trim()||`Rust semantic worker exited with status ${d.status??"unknown"}.`;return{available:!1,resolvedBinary:r.resolvedBinary,reason:f,references:Xn(n)}}function __(e,t,n){let r=t(e);if(!r.available||!r.resolvedBinary)return{available:!1,resolvedBinary:r.resolvedBinary,reason:r.reason,callees:Qn(n)};let i=Ql();if(!Jl(i))return{available:!1,resolvedBinary:r.resolvedBinary,reason:`Rust semantic worker was not found at ${i}. Run npm run build before using built semantic Rust queries.`,callees:Qn(n)};let o=Mr(process.env.SCIP_RUST_SEMANTIC_REQUEST_TIMEOUT_MS,Yl),s=Mr(process.env.SCIP_RUST_SEMANTIC_CONCURRENCY,Xl),a=Gs(process.env.SCIP_RUST_SEMANTIC_DIAGNOSTICS_TIMEOUT_MS,Math.min(o,1e4)),c=Mi(process.env.SCIP_RUST_SEMANTIC_SETTLE_MS,{definitionCount:n.length,includeReferences:!1,includeCallees:!0}),l={projectRoot:e,rustAnalyzerBinary:r.resolvedBinary,definitions:[...n],requestTimeoutMs:o,diagnosticsTimeoutMs:a,settleDelayMs:c,concurrency:s,includeReferences:!1,includeCallees:!0},u=Kl(process.execPath,[i],{cwd:e,input:JSON.stringify(l),encoding:"utf8",maxBuffer:50*1024*1024,timeout:Jn(n.length,o,s)}),d=Zl(u.stdout);if(d)return{available:d.available,resolvedBinary:r.resolvedBinary,reason:d.reason,callees:Ar(n,new Map(d.callees??[]),void 0)};let m=u.error instanceof Error?u.error.message:u.stderr.trim()||`Rust semantic worker exited with status ${u.status??"unknown"}.`;return{available:!1,resolvedBinary:r.resolvedBinary,reason:m,callees:Qn(n)}}function L_(e,t,n){let r=t(e);if(!r.available||!r.resolvedBinary)return{available:!1,resolvedBinary:r.resolvedBinary,reason:r.reason,signatures:Ws(n)};let i=Ql();if(!Jl(i))return{available:!1,resolvedBinary:r.resolvedBinary,reason:`Rust semantic worker was not found at ${i}. Run npm run build before using built semantic Rust queries.`,signatures:Ws(n)};let o=Mr(process.env.SCIP_RUST_SEMANTIC_REQUEST_TIMEOUT_MS,Yl),s=Mr(process.env.SCIP_RUST_SEMANTIC_CONCURRENCY,Xl),a=Gs(process.env.SCIP_RUST_SEMANTIC_DIAGNOSTICS_TIMEOUT_MS,Math.min(o,1e4)),c=Mi(process.env.SCIP_RUST_SEMANTIC_SETTLE_MS,{definitionCount:n.length,includeReferences:!1,includeCallees:!1,includeSignatures:!0}),l={projectRoot:e,rustAnalyzerBinary:r.resolvedBinary,definitions:[...n],requestTimeoutMs:o,diagnosticsTimeoutMs:a,settleDelayMs:c,concurrency:s,includeReferences:!1,includeCallees:!1,includeSignatures:!0},u=Kl(process.execPath,[i],{cwd:e,input:JSON.stringify(l),encoding:"utf8",maxBuffer:50*1024*1024,timeout:Jn(n.length,o,s)}),d=Zl(u.stdout);if(d)return{available:d.available,resolvedBinary:r.resolvedBinary,reason:d.reason,signatures:Eh(n,new Map(d.signatures??[]))};let m=u.error instanceof Error?u.error.message:u.stderr.trim()||`Rust semantic worker exited with status ${u.status??"unknown"}.`;return{available:!1,resolvedBinary:r.resolvedBinary,reason:m,signatures:Ws(n)}}function N_(e,t,n){let r=n.referenceDefinitions.length>0?e.referencesForDefinitions(n.referenceDefinitions):{available:!0,references:Xn(n.referenceDefinitions)},i=n.calleeDefinitions.length>0?t.calleesForDefinitions(n.calleeDefinitions):{available:!0,callees:Qn(n.calleeDefinitions)};return{available:r.available&&i.available,resolvedBinary:r.resolvedBinary??i.resolvedBinary,reason:r.reason??i.reason,references:r.references,callees:i.callees}}function Xn(e){return new Map(e.map(t=>[t.symbolId,[]]))}function Qn(e){return new Map(e.map(t=>[t.symbolId,[]]))}function Ws(e){return new Map(e.map(t=>[t.symbolId,null]))}function Ar(e,t,n){let r=0,i=0;return E("rust.semantic.callees.complete-map",()=>{let o=new Map;for(let s of e){let a=t.get(s.symbolId)??[];a.length>0&&(r+=1),i+=a.length,o.set(s.symbolId,a.map(c=>({...c,symbol:n?n(c):c.symbol})))}return o},()=>({definitions:e.length,rows:r,callees:i,resolveSymbols:!!n}))}function Eh(e,t){return new Map(e.map(n=>[n.symbolId,t.get(n.symbolId)??null]))}function Ql(){return w_(new URL("./rust-semantic-worker.js",import.meta.url))}function Zl(e){try{let t=JSON.parse(e);if(!t||typeof t!="object")return null;let n=t;return typeof n.available!="boolean"||!Array.isArray(n.references)?null:{available:n.available,reason:typeof n.reason=="string"?n.reason:void 0,references:n.references,incompleteReferenceSymbolIds:Array.isArray(n.incompleteReferenceSymbolIds)?n.incompleteReferenceSymbolIds.filter(r=>typeof r=="number"):void 0,callees:Array.isArray(n.callees)?n.callees:void 0,signatures:Array.isArray(n.signatures)?n.signatures:void 0}}catch{return null}}function Mr(e,t){return vn(e)??t}function Gs(e,t){if(!e)return t;let n=Number(e);return Number.isInteger(n)&&n>=0?n:t}import{existsSync as A_,readFileSync as M_}from"fs";import{deserializeSCIP as O_,SymbolRole as j_}from"@c4312/scip";var eu=new WeakMap;function Ph(e,t){let n=t.filter(B_);if(n.length===0)return new Map;let r=!1,i=0,o=0;return E("rust.scip-occurrence.callees",()=>{let s=U_(e);if(r=!!s,!s)return new Map;let a=new Map;for(let c of n){let l=$_(e,s,c);l!==null&&(a.set(c.symbolId,l),i+=1,o+=l.length)}return a},()=>({definitions:t.length,candidates:n.length,indexAvailable:r,resolvedDefinitions:i,resolvedCallees:o}))}function B_(e){return!(!e.symbol.startsWith("rust-analyzer ")||!e.relativePath.endsWith(".rs")||!e.isFunctionLike||e.leaf==="main"||Ie(e.symbol))}function $_(e,t,n){let r=z(e,n.relativePath);if(!r||r.language!=="rust")return null;let i=r.callables.find(l=>l.startLine!==n.startLine||l.endLine!==n.endLine?!1:l.name===n.leaf||n.leaf.endsWith(l.name)||l.name.endsWith(n.leaf));if(!i)return null;let o=r.callSites.filter(l=>l.line>=i.startLine&&l.line<=i.endLine);if(o.length===0)return null;let s=(t.occurrencesByFile.get(n.relativePath)??[]).filter(l=>l.line>=i.startLine&&l.line<=i.endLine&&l.callee.symbol!==n.symbol);if(s.some(l=>l.traitImplMember)||!H_(o,s))return null;let a=[],c=new Set;for(let l of s){let u=`${l.callee.symbol}\0${l.callee.file}\0${l.callee.line}`;c.has(u)||(c.add(u),a.push(l.callee))}return a}function H_(e,t){let n=Dh(e),r=Dh(t);if(n.size!==r.size)return!1;for(let[i,o]of n)if(r.get(i)!==o)return!1;return!0}function Dh(e){let t=new Map;for(let n of e){let r=n.calleeLeaf??n.leaf;if(!r)continue;let i=`${n.line}\0${r}`;t.set(i,(t.get(i)??0)+1)}return t}function U_(e){if(eu.has(e))return eu.get(e)??null;let t=W_(e);return eu.set(e,t),t}function W_(e){if(!A_(e.config.indexPath))return null;try{let t=xe(e).filter(o=>o.symbol.startsWith("rust-analyzer ")&&o.relativePath.endsWith(".rs")&&o.isFunctionLike),n=new Map(t.map(o=>[o.symbol,o])),r=O_(M_(e.config.indexPath)),i=new Map;for(let o of r.documents??[]){let s=o.relativePath;if(!s||!s.endsWith(".rs")||e.isIgnored(s))continue;let a=[];for(let c of o.occurrences??[]){if(!c.symbol||(c.symbolRoles&j_.Definition)!==0)continue;let l=n.get(c.symbol);if(!l)continue;let u=c.range?.[0];Number.isInteger(u)&&a.push({line:u,leaf:l.leaf,traitImplMember:Ie(l.symbol),callee:{symbol:l.symbol,file:l.relativePath,line:l.startLine}})}i.set(s,a)}return{occurrencesByFile:i}}catch{return null}}var zs=class{sessions=new WeakMap;getOrCreate(t,n,r){let i=G_(t,n),o=this.sessions.get(t);o||(o=new Map,this.sessions.set(t,o));let s=o.get(i);if(s)return s.hits+=1,s.lastUsedAtMs=Date.now(),s.provider;let a=Date.now(),c=r();return o.set(i,{key:i,language:n,projectRoot:t.config.projectRoot,provider:c,createdAtMs:a,lastUsedAtMs:a,hits:1}),c}sessionsFor(t){return[...this.sessions.get(t)?.values()??[]]}clear(t){let n=this.sessions.get(t);if(n)for(let r of n.values())r.provider.dispose?.();this.sessions.delete(t)}};function G_(e,t){return`${e.config.projectRoot}:${t}-workspace`}import{randomUUID as FL}from"crypto";import{existsSync as _L,mkdirSync as ny,readFileSync as LL,rmSync as ry}from"fs";import{dirname as NL,resolve as iy}from"path";import{readFileSync as z_}from"fs";import{join as tu}from"path";var P6=4,kh=5e3,V_="watch.lock",q_="watch-state.json",K_="watch-activity.json";function Th(e){return{lockPath:tu(e,V_),statePath:tu(e,q_),activityPath:tu(e,K_)}}function nu(e){try{return J_(JSON.parse(z_(e,"utf8")))}catch{return null}}function J_(e){if(!e||typeof e!="object")return null;let t=e;return t.version!==1||typeof t.protocolVersion!="number"||typeof t.pid!="number"||!Number.isInteger(t.pid)||t.pid<=0||typeof t.projectRoot!="string"||t.worktreeId!==void 0&&(typeof t.worktreeId!="string"||t.worktreeId.length===0)||typeof t.cliVersion!="string"||!Ze(t.startedAt)||!Ze(t.heartbeatAt)||!Ze(t.lastActivityAt)||!Y_(t.watcher)||t.idleDeadlineAt!==void 0&&!Ze(t.idleDeadlineAt)||t.indexGeneration!==void 0&&!/^[a-f0-9]{64}$/.test(t.indexGeneration)||t.lastError!==void 0&&!X_(t.lastError)||t.lastRefresh!==void 0&&!Q_(t.lastRefresh)||t.reindexActivity!==void 0&&!Z_(t.reindexActivity)||t.typescriptSemantic!==void 0&&!eL(t.typescriptSemantic)||t.typescriptIndex!==void 0&&!tL(t.typescriptIndex)?null:t}function Ze(e){return typeof e=="string"&&Number.isFinite(Date.parse(e))}function Y_(e){if(!e||typeof e!="object"||!("state"in e))return!1;let t=e;switch(t.state){case"idle":return!0;case"waiting":return Qe(t.changedFiles)&&Qe(t.reindexAt);case"indexing":return Qe(t.startedAt);case"cooldown":return Qe(t.until)&&typeof t.dirty=="boolean";default:return!1}}function X_(e){if(!e||typeof e!="object")return!1;let t=e;return Ze(t.at)&&typeof t.message=="string"}function Q_(e){if(!e||typeof e!="object")return!1;let t=e;return typeof t.trigger?.kind=="string"&&typeof t.result=="string"&&Ze(t.startedAt)&&Ze(t.completedAt)&&Qe(t.durationMs)}function Z_(e){if(!e||typeof e!="object")return!1;let t=e;return!Ze(t.windowStartedAt)||!Ze(t.windowEndedAt)||!Xe(t.runs)||!Xe(t.rebuilt)||!Xe(t.reused)||!Xe(t.failed)||!Xe(t.suppressed)||!Qe(t.estimatedLogicalOutputBytes)||t.estimatedLogicalOutputBytes<0||!t.byTrigger||typeof t.byTrigger!="object"?!1:Object.values(t.byTrigger).every(n=>n===void 0||Xe(n))}function eL(e){if(!e||typeof e!="object")return!1;let t=e;return typeof t.protocolVersion=="number"&&(t.state==="idle"||t.state==="ready"||t.state==="unavailable"||t.state==="error")&&Qe(t.requests)&&Qe(t.sessionsCreated)&&Qe(t.sessionsReused)&&Qe(t.sessionsRefreshed)&&Qe(t.sessionsReplaced)&&Qe(t.projectsCreated)&&(t.lastRequestAt===void 0||Ze(t.lastRequestAt))&&(t.lastError===void 0||typeof t.lastError=="string")&&(t.busyUntil===void 0||Ze(t.busyUntil))}function tL(e){if(!e||typeof e!="object")return!1;let t=e;return typeof t.protocolVersion=="number"&&(t.state==="idle"||t.state==="ready"||t.state==="unavailable"||t.state==="error")&&Xe(t.requests)&&Xe(t.sessionsCreated)&&Xe(t.sessionsReplaced)&&Xe(t.initializations)&&Xe(t.programUpdates)&&Xe(t.documentsEmitted)&&Xe(t.documentsRemoved)&&(t.lastRequestAt===void 0||Ze(t.lastRequestAt))&&(t.lastDurationMs===void 0||Qe(t.lastDurationMs)&&t.lastDurationMs>=0)&&(t.lastError===void 0||typeof t.lastError=="string")&&(t.busyUntil===void 0||Ze(t.busyUntil))}function Qe(e){return typeof e=="number"&&Number.isFinite(e)}function Xe(e){return typeof e=="number"&&Number.isInteger(e)&&e>=0}import{performance as W}from"perf_hooks";function mt(e,t,n){if(e.has(t))return e.get(t);let r=n();return e.set(t,r),r}import Fh from"path";function nL(e,t){return e.getReferences().map(n=>{let r=n.getNode();return Vs(r,t)})}function rL(e){let t=e;return typeof t.findReferences=="function"?t.findReferences():[]}function _h(e,t,n,r){let i=[];for(let o of rL(e))for(let s of nL(o,r))s.file===t.relativePath&&s.line>=t.startLine&&s.line<=t.endLine||i.push(s);for(let o of n)i.push(o);return Or(i)}function Lh(e,t,n,r){let i=[],o=n?.getStart();for(let s of e.getReferences()){let a=s.getNode();jr(r,a.getSourceFile().getFilePath())===t&&(o!==void 0&&a.getStart()===o||i.push({location:Vs(a,r),node:a}))}return i}function Vs(e,t){let n=e.getSourceFile(),r=n.getLineAndColumnAtPos(e.getStart());return{file:jr(t,n.getFilePath())??n.getBaseName(),line:r.line-1,column:r.column-1}}function Nh(e,t,n){let r=e.getSourceFile(),i=iu(r,e),o=e.getText(),s=new RegExp(`\\b${$(o)}\\b`,"g"),a=r.getFullText().split(`
286
+ `),c=[];for(let l=0;l<a.length;l++){if(l===i)continue;let u=a[l]??"";s.lastIndex=0;let d;for(;(d=s.exec(u))!==null;)c.push({file:t,line:l,column:d.index})}return Or(c.filter(l=>jr(n,Fh.join(n,l.file))===t))}function ru(e){for(let t=e;t;t=t.getParent()){let n=t.getKindName();if(n.includes("Type")||n==="InterfaceDeclaration"||n==="TypeAliasDeclaration")return!0;if(n==="CallExpression"||n==="NewExpression"||n==="ExpressionStatement")return!1}return!1}function iu(e,t){return e.getLineAndColumnAtPos(t.getStart()).line-1}function Or(e){let t=new Set,n=[];for(let r of e){let i=`${r.file}:${r.line}:${r.column}`;t.has(i)||(t.add(i),n.push(r))}return n}function jr(e,t){let n=Fh.relative(e||process.cwd(),t).replace(/\\/g,"/");return!n||n.startsWith("..")?null:n}function Ah(e,t,n,r){let i=iL(t,r);return i.size===0?new Map:oL(e,n,i)}function iL(e,t){let n=new Map;for(let r of Y(e,t)){let i=T(r.symbol)??r.leaf;if(!i)continue;let o=n.get(i);o||(o=[],n.set(i,o)),o.push(r)}return n}function oL(e,t,n){let r=new Map,i=new Map;return t.forEachDescendant(o=>{for(let s of sL(e,o)){let a=n.get(s);if(!a)continue;let c=iu(t,o);for(let l of a){if(c<l.startLine-1||c>l.endLine+1)continue;let u=Math.abs(c-l.startLine),d=i.get(l.symbolId);d!==void 0&&d<=u||(i.set(l.symbolId,u),r.set(l.symbolId,o))}}}),r}function sL(e,t){let n=[],r=i=>{i&&!n.includes(i)&&n.push(i)};if("getNameNode"in t&&typeof t.getNameNode=="function"){let i=t.getNameNode();r(i?.getText())}if("getName"in t&&typeof t.getName=="function"){let i=t.getName();r(i)}return e.Node.isIdentifier(t)&&r(t.getText()),n}var aL=j("ts-definition-leaf-candidates",{clearGroups:["definition-catalog"]});function Mh(e,t,n,r){let i=au(e,t),o=ou(i.get(r)??[],n);if(o)return o;let s=[];for(let a of i.values())for(let c of a)((c.leaf||T(c.symbol)||"").includes(r)||c.symbol.includes(r))&&s.push(c);return ou(s,n)}function su(e,t,n,r){return ou(au(e,t).get(r)??[],n)}function Oh(e,t){let n=new Map;for(let[r,i]of au(e,t)){let o=i[0];o&&n.set(r,o)}return n}function au(e,t){return aL.get(e,t,()=>{let n=new Map;for(let r of Y(e,t)){let i=r.leaf||T(r.symbol);if(!i)continue;let o=n.get(i);o||(o=[],n.set(i,o)),o.push({...r,leaf:i})}for(let r of n.values())r.sort((i,o)=>i.startLine-o.startLine||i.endLine-o.endLine||i.symbolId-o.symbolId);return n})}function ou(e,t){let n=null,r=Number.POSITIVE_INFINITY;for(let i of e){let o=Math.abs(i.startLine-t);(o<r||o===r&&n&&i.startLine<n.startLine)&&(n=i,r=o)}return n}import cu from"path";var ji=[".ts",".tsx",".mts",".cts",".js",".jsx",".mjs",".cjs"];function Tt(e){let t=e.toLowerCase();return ji.some(n=>t.endsWith(n))}function jh(e,t){let n=new Map,r=null,i=null,o=()=>(i??=N(e,{extensions:ji}),i),s=()=>(r??=E("typescript.source-file-index",()=>cL(e.config.projectRoot,t,o()),()=>({projects:t.length,indexedDocuments:o().length})),r),a=c=>Tt(c)?mt(n,c,()=>{let l=Bi(cu.resolve(e.config.projectRoot,c));for(let{project:u,sourceFiles:d}of s()){let m=d.get(l)??null;if(m||(m=u.addSourceFileAtPathIfExists(l)??null,m&&d.set(Bi(m.getFilePath()),m)),m)return{project:u,sourceFile:m}}return null}):null;return{sourceFile:c=>a(c)?.sourceFile??null,sourceFileMatch:a,indexedTypeScriptLikeDocuments:o}}function cL(e,t,n){let r=t.map(({project:i})=>({project:i,sourceFiles:new Map(i.getSourceFiles().map(o=>[Bi(o.getFilePath()),o]))}));for(let i of n){let o=Bi(cu.resolve(e,i));for(let s of r){if(s.sourceFiles.has(o))break;let a=s.project.addSourceFileAtPathIfExists(o)??null;if(a){s.sourceFiles.set(Bi(a.getFilePath()),a);break}}}return r}function Bi(e){return cu.resolve(e)}function lu(e,t){for(let n of e)if(t===n.name||t.startsWith(`${n.name}/`))return n.name;return null}function Bh(e){let t=`${e.relativeDir}/src`;return[`${t}/index.ts`,`${t}/index.tsx`,`${t}/index.mts`,`${t}/index.cts`]}import{existsSync as $i,readFileSync as lL}from"fs";import _e from"path";var uu=["tsconfig.json","tsconfig.app.json","tsconfig.node.json","tsconfig.base.json"];function du(e,t){let r=t?_e.dirname(_e.join(e,t)):e,i=_e.resolve(e);for(;r.startsWith(i);){for(let s of uu){let a=_e.join(r,s);if($i(a))return a}let o=_e.dirname(r);if(o===r)break;r=o}for(let o of uu){let s=_e.join(e,o);if($i(s))return s}return null}function $h(e){let t=e.config.projectRoot,n=new Set(uL(t,e.config.semantic?.typescript?.tsconfigs)),r=N(e,{includeIgnored:!1,extensions:ji});for(let i of r){let o=du(t,i);o&&n.add(_e.resolve(o))}if(n.size===0){let i=du(t);i&&n.add(_e.resolve(i))}return[...n].filter(i=>!Hh(t,i)).sort((i,o)=>i.localeCompare(o))}function uL(e,t=[]){let n=new Set;for(let r of t){let i=_e.isAbsolute(r)?r:_e.join(e,r);$i(i)&&n.add(_e.resolve(i))}for(let r of dL(e))for(let i of uu){let o=_e.join(r,i);$i(o)&&n.add(_e.resolve(o))}if(n.size===0){let r=du(e);r&&n.add(_e.resolve(r))}return[...n].filter(r=>!Hh(e,r)).sort((r,i)=>r.localeCompare(i))}function dL(e){let t=_e.join(e,"package.json");if(!$i(t))return[];let n;try{n=JSON.parse(lL(t,"utf8"))}catch{return[]}return(Array.isArray(n.workspaces)?n.workspaces:n.workspaces?.packages??[]).flatMap(i=>tl(e,i))}function Hh(e,t){let n=_e.relative(e,t).replace(/\\/g,"/");return n.startsWith("..")||n.includes("/node_modules/")||n.startsWith("node_modules/")||n.includes("/dist/")||n.startsWith("dist/")}import{createRequire as mL}from"module";var Uh=mL(import.meta.url),Hi,qs;function mu(){if(Hi!==void 0)return Hi;try{Hi=Uh("ts-morph")}catch{Hi=null}return Hi}function Ks(){if(qs)return qs;let e=mu();if(!e)return"ts-morph:unavailable";let t="unknown";try{t=Uh("ts-morph/package.json").version??"unknown"}catch{}return qs=`ts-morph:${t}:typescript:${e.ts.version}`,qs}function Wh(e,t){return t.map(n=>({tsconfigPath:n,project:new e.Project({tsConfigFilePath:n,skipFileDependencyResolution:!0})}))}function Js(e,t,n){return{language:"typescript",availability:()=>({available:!1,reason:e,tsconfigPath:t,tsconfigPaths:n}),importUsage:()=>[],referencesFor:()=>[],calleesFor:()=>[],signatureFor:()=>null}}function Ys(e,t){let n=new Map(e.map(i=>[i.symbol,i])),r=new Map(e.map(i=>[i.symbolId,[]]));for(let i of t.values())for(let o of i){let s=n.get(o.targetSymbol);s&&r.get(s.symbolId).push(o.location)}for(let[i,o]of r)r.set(i,fL(o));return r}function Vh(e,t,n){let r=zh(e,t),i=zh(e,n),o=[...r].filter(d=>!i.has(d)).sort(),s=[...i].filter(d=>!r.has(d)).sort(),a=Gh(e,t),c=Gh(e,n),l=[...a].filter(d=>!c.has(d)).sort(),u=[...c].filter(d=>!a.has(d)).sort();return{passed:o.length===0&&s.length===0,expectedCount:r.size,actualCount:i.size,missing:o,extra:s,callerFiles:{passed:l.length===0&&u.length===0,expectedCount:a.size,actualCount:c.size,missing:l,extra:u}}}function Gh(e,t){let n=new Set;for(let r of e)for(let i of t.get(r.symbolId)??[])i.file!==r.relativePath&&n.add(`${r.symbol}\0${i.file}`);return n}function qh(e,t,n){let r=new Set(n),i=new Map(n.map(o=>[o,[]]));for(let o of e)for(let s of t.get(o.symbolId)??[])r.has(s.file)&&i.get(s.file).push({targetSymbol:o.symbol,location:s});for(let[o,s]of i)i.set(o,pL(s));return i}function zh(e,t){let n=new Set;for(let r of e)for(let i of t.get(r.symbolId)??[])n.add(`${r.symbol}\0${i.file}\0${i.line}\0${i.column}`);return n}function fL(e){let t=new Map;for(let n of e)t.set(`${n.file}\0${n.line}\0${n.column}`,n);return[...t.values()].sort(Kh)}function pL(e){let t=new Map;for(let n of e){let{location:r}=n;t.set(`${n.targetSymbol}\0${r.file}\0${r.line}\0${r.column}`,n)}return[...t.values()].sort((n,r)=>n.targetSymbol.localeCompare(r.targetSymbol)||Kh(n.location,r.location))}function Kh(e,t){return e.file.localeCompare(t.file)||e.line-t.line||e.column-t.column}var gL=32;function ey(e,t){let n=E("typescript.provider.load",()=>mu());if(!n)return Js("ts-morph is not installed");let r=E("typescript.provider.tsconfig-discovery",()=>$h(e));if(r.length===0)return Js("no tsconfig found");try{let i=E("typescript.provider.project-bundles",()=>Wh(n,r),()=>({tsconfigs:r.length}));return hL(e,n,i)}catch(i){return Js(i instanceof Error?i.message:String(i),r[0],r)}}function hL(e,t,n,r={}){return E("typescript.provider.construct",()=>new pu(e,t,n),()=>({tsconfigs:n.length,reusedProjects:r.reusedProjects===!0}))}var pu=class{constructor(t,n,r){this.db=t;this.tsMorph=n;this.projects=r;this.workspacePackages=Ir(t.config.projectRoot),this.sourceFiles=jh(t,r)}db;tsMorph;projects;language="typescript";importUsageCache=new Map;referencesCache=new Map;calleesCache=new Map;fileCalleesCache=new Map;signatureCache=new Map;definitionNodeCache=new Map;fileDefinitionNodeCache=new Map;indexedDefinitionLeafCache=new Map;compilerCheckerCache=new WeakMap;packageImportReferenceIndex=null;packageExportIndex=null;workspacePackages;sourceFiles;availability(){return{available:!0,tsconfigPath:this.projects[0]?.tsconfigPath,tsconfigPaths:this.projects.map(t=>t.tsconfigPath)}}importUsage(t){return mt(this.importUsageCache,t,()=>{let n=this.sourceFiles.sourceFile(t);if(!n)return[];let r=bL();return E("typescript.import-usage.file",()=>this.importUsageForSourceFile(t,n,r),()=>({file:t,...r}))})}referencesFor(t){return mt(this.referencesCache,t.symbolId,()=>{let n=this.nodeForDefinition(t);return this.referencesForDefinitionNode(t,n)})}referencesForDefinitions(t,n={}){let r=new Map,i=U(),o=[];for(let u of t){let d=this.referencesCache.get(u.symbolId);d?r.set(u.symbolId,d):o.push(u)}if(o.length===0)return r;let s=o,a=n.exact?[]:o.filter(u=>!Yh(u));if(a.length>=gL){let u=this.referencesForDefinitionsBySymbolScan(a);for(let d of a){let m=u.get(d.symbolId)??[];this.referencesCache.set(d.symbolId,m),r.set(d.symbolId,m)}if(s=o.filter(d=>Yh(d)),s.length===0)return r}let c=new Map;for(let u of s){let d=c.get(u.relativePath);d?d.push(u):c.set(u.relativePath,[u])}let l=[];for(let[u,d]of c){let m=Xh();E("typescript.references-map.file",()=>{let f=this.definitionNodesForFile(u);for(let p of d){i&&(m.cacheMisses+=1);let g=f.get(p.symbolId)??null;i&&(g?m.nodeHits+=1:m.nodeMisses+=1);try{let y=this.referencesForDefinitionNode(p,g,i?m:void 0);this.referencesCache.set(p.symbolId,y),r.set(p.symbolId,y)}catch{m.preciseSearchFailures+=1,l.push(p)}}},()=>({relativePath:u,definitions:d.length,...Qh(m)}))}if(l.length>0){let u=this.referencesForDefinitionsBySymbolScan(l);for(let d of l){let m=u.get(d.symbolId)??[];this.referencesCache.set(d.symbolId,m),r.set(d.symbolId,m)}}return r}referenceFragmentsForFiles(t){let n=xe(this.db).filter(o=>Tt(o.relativePath)),r=t.filter(o=>this.sourceFiles.sourceFile(o)!==null),i=this.referencesForDefinitionsBySymbolScan(n,r);return qh(n,i,r)}referencesForDefinitionsBySymbolScan(t,n){let r=U(),i=Xh(),o=new Map,s=new Set(t.map(c=>c.symbolId)),a=new Map(t.map(c=>[c.symbolId,c]));for(let c of t)o.set(c.symbolId,[]);return E("typescript.references-map.inverted-scan",()=>{let c=r?W.now():0,l=n?this.packageImportReferencesForFiles(n):this.packageImportReferences();for(let y of t){let h=l.get(y.symbolId)??[];if(h.length>0){let x=o.get(y.symbolId)??[];x.push(...h),o.set(y.symbolId,x)}r&&(i.packageReferenceCount+=h.length)}r&&(i.packageRefsMs+=W.now()-c);let u=new Map,d=new Map,m=this.hierarchyTargetsForDefinitions(t),f=new Set(t.map(y=>y.leaf).filter(Boolean)),p=r?W.now():0;for(let y of n??this.sourceFiles.indexedTypeScriptLikeDocuments()){if(this.db.isIgnored(y))continue;let h=this.sourceFiles.sourceFile(y);h&&(r&&(i.scanFiles+=1),this.addReferencesFromSourceFileScan(h,y,s,a,m,f,u,d,o,r?i:void 0))}r&&(i.scanMs+=W.now()-p);let g=r?W.now():0;this.addHierarchyMemberReferences(t,o,r?i:void 0),r&&(i.hierarchyMs+=W.now()-g);for(let[y,h]of o){let x=Or(h);o.set(y,x),r&&(i.referenceCount+=x.length)}},()=>({definitions:t.length,...Qh(i)})),o}addReferencesFromSourceFileScan(t,n,r,i,o,s,a,c,l,u){let d=this.compilerCheckerForSourceFile(t),m=t.compilerNode,f=xL(t),p=g=>{if(this.tsMorph.ts.isIdentifier(g)){if(u&&(u.identifiers+=1),!s.has(g.text)&&!f.has(g.text)){this.tsMorph.ts.forEachChild(g,p);return}let y=this.compilerReferenceSymbol(d,g,u);if(y){let h;a.has(y)?h=a.get(y)??null:(h=this.referenceDefinitionFromCompilerSymbol(y),a.set(y,h)),u&&(h?u.targetHits+=1:u.targetMisses+=1);let x=mt(c,y,()=>this.compilerSymbolKeys(y)),b=null,C=null,S=h&&r.has(h.symbolId)?i.get(h.symbolId):void 0;if(S&&(b=fu(m,g),!Jh(S,n,b))){let v=m.getLineAndCharacterOfPosition(g.getStart(m));C={file:n,line:v.line,column:v.character};let R=l.get(S.symbolId)??[];R.push(C),l.set(S.symbolId,R),u&&(u.requestedHits+=1)}for(let v of x)for(let R of o.get(v)?.values()??[]){if(b??=fu(m,g),Jh(R,n,b))continue;if(!C){let w=m.getLineAndCharacterOfPosition(g.getStart(m));C={file:n,line:w.line,column:w.character}}let D=l.get(R.symbolId)??[];D.push(C),l.set(R.symbolId,D),u&&(u.requestedHits+=1)}}}this.tsMorph.ts.forEachChild(g,p)};p(m)}hierarchyTargetsForDefinitions(t){let n=new Map;for(let r of t){let i=this.nodeForDefinition(r),o=i?.compilerNode;if(!o||!this.isHierarchyMethod(o))continue;let s=o.parent;if(!this.isHierarchyContainer(s))continue;let a=this.compilerCheckerForSourceFile(i.getSourceFile()),c=a.getSymbolAtLocation(o.name);if(c)for(let l of this.hierarchyMemberSymbols(a,s,c))for(let u of this.compilerSymbolKeys(l)){let d=n.get(u)??new Map;d.set(r.symbolId,r),n.set(u,d)}}return n}hierarchyMemberSymbols(t,n,r){let i=new Set,o=new Set,s=(a,c,l)=>{if(!o.has(a)){o.add(a),i.add(c);for(let u of l){let d=u.getProperty(r.name);d&&s(u,d,this.hierarchyAncestorTypesForType(t,u))}}};return s(t.getTypeAtLocation(n),r,this.hierarchyAncestorTypes(t,n)),i}addHierarchyMemberReferences(t,n,r){let i=new Map;for(let o of t){let s=this.nodeForDefinition(o),a=s?.compilerNode;if(!a||!this.isHierarchyMethod(a))continue;let c=a.parent;if(!this.isHierarchyContainer(c))continue;let l=this.compilerCheckerForSourceFile(s.getSourceFile()),u=l.getSymbolAtLocation(a.name);if(!u)continue;let d=a.getSourceFile(),m=d.getLineAndCharacterOfPosition(a.name.getStart(d)),f={definition:o,location:{file:o.relativePath,line:m.line,column:m.character}},p=n.get(o.symbolId)??[];for(let y of this.hierarchyMemberSymbols(l,c,u))if(y!==u)for(let h of this.compilerSymbolLocations(y))p.push(h),r&&(r.hierarchyReferences+=1);n.set(o.symbolId,p);let g=this.hierarchyRootMemberSymbols(l,c,u);for(let y of g){let h=i.get(y)??new Map;h.set(o.symbolId,f),i.set(y,h)}r&&(r.hierarchyDefinitions+=1)}for(let o of i.values())if(!(o.size<2)){r&&(r.hierarchyFamilies+=1);for(let{definition:s}of o.values()){let a=n.get(s.symbolId)??[];for(let c of o.values())c.definition.symbolId!==s.symbolId&&(a.push(c.location),r&&(r.hierarchyReferences+=1));n.set(s.symbolId,a)}}}hierarchyRootMemberSymbols(t,n,r){let i=new Set,o=new Set,s=(a,c,l)=>{if(o.has(a))return;o.add(a);let u=!1;for(let d of l){let m=d.getProperty(r.name);m&&(u=!0,s(d,m,this.hierarchyAncestorTypesForType(t,d)))}if(!u)for(let d of this.compilerSymbolKeys(c))i.add(d)};return s(t.getTypeAtLocation(n),r,this.hierarchyAncestorTypes(t,n)),i}compilerSymbolKeys(t){return(t.declarations??[]).map(n=>{let r=n.getSourceFile();return`${r.fileName}\0${n.getStart(r)}\0${t.name}`})}compilerSymbolLocations(t){let n=[];for(let r of t.declarations??[]){let i=r.getSourceFile(),o=jr(this.db.config.projectRoot,i.fileName);if(!o)continue;let s=r.name,a=i.getLineAndCharacterOfPosition((s??r).getStart(i));n.push({file:o,line:a.line,column:a.character})}return n}baseTypes(t,n){try{return t.getBaseTypes(n)??[]}catch{return[]}}hierarchyAncestorTypes(t,n){let r=new Set(this.hierarchyAncestorTypesForType(t,t.getTypeAtLocation(n)));for(let i of n.heritageClauses??[])for(let o of i.types)r.add(t.getTypeAtLocation(o));return[...r]}hierarchyAncestorTypesForType(t,n){let r=new Set(this.baseTypes(t,n));for(let i of n.getSymbol()?.declarations??[])if(this.isHierarchyContainer(i))for(let o of i.heritageClauses??[])for(let s of o.types)r.add(t.getTypeAtLocation(s));return[...r]}isHierarchyMethod(t){return this.tsMorph.ts.isMethodDeclaration(t)||this.tsMorph.ts.isMethodSignature(t)}isHierarchyContainer(t){return this.tsMorph.ts.isClassDeclaration(t)||this.tsMorph.ts.isClassExpression(t)||this.tsMorph.ts.isInterfaceDeclaration(t)}compilerReferenceSymbol(t,n,r){r&&(r.symbolLookups+=1);let i=t.getSymbolAtLocation(n);if(i){if((i.flags&this.tsMorph.ts.SymbolFlags.Alias)===0)return i;try{return r&&(r.aliasResolutions+=1),t.getAliasedSymbol(i)}catch{return i}}}calleesFor(t){return mt(this.calleesCache,t.symbolId,()=>mt(this.fileCalleesCache,t.relativePath,()=>this.calleeMapForFile(t.relativePath)).get(t.symbolId)??[])}calleesForDefinitions(t){let n=new Map,r=new Map;for(let i of t){let o=r.get(i.relativePath);o?o.push(i):r.set(i.relativePath,[i])}for(let[i,o]of r){let s=this.fileCalleesCache.get(i),a=new Set(o.map(l=>l.symbolId)),c=s??this.calleeMapForFile(i,a);for(let l of o){let u=c.get(l.symbolId)??[];this.calleesCache.set(l.symbolId,u),n.set(l.symbolId,u)}}return n}referencesForDefinitionNode(t,n,r){let i=r?W.now():0,o=this.packageImportReferencesForDefinition(t);if(r&&(r.packageRefsMs+=W.now()-i,r.packageReferenceCount+=o.length),!n)return o;let s=r?W.now():0,a=_h(n,t,o,this.db.config.projectRoot);return r&&(r.semanticRefsMs+=W.now()-s,r.referenceCount+=a.length),a}signatureFor(t){return mt(this.signatureCache,t.symbolId,()=>{let n=this.nodeForDefinition(t);if(!n||!this.tsMorph.Node.isFunctionDeclaration(n)&&!this.tsMorph.Node.isMethodDeclaration(n)&&!this.tsMorph.Node.isArrowFunction(n)&&!this.tsMorph.Node.isFunctionExpression(n)&&!this.tsMorph.Node.isConstructorDeclaration(n))return null;let r=n.getType().getCallSignatures()[0];if(!r)return null;let i=r.getParameters().map(s=>{let a=s.getDeclarations()[0],c=a?s.getTypeAtLocation(a).getText(a):s.getValueDeclaration()?.getType().getText()??"unknown";return Zh(c)}),o=r.getReturnType().getText(n);return`(${i.join(",")})=>${Zh(o)}`})}importUsageForSourceFile(t,n,r){let i=[],o=new Map;for(let s of n.getImportDeclarations()){r.declarations+=1;let a=Je(this.db,t,s.getModuleSpecifierValue()),c=s.getImportClause()?.isTypeOnly()??!1;for(let l of gu(s)){r.entries+=1;let u=c?null:l.identifier?.getSymbol()?.compilerSymbol??null;!c&&l.identifier&&(u?r.bindingSymbols+=1:r.missingBindingSymbols+=1);let d={sourcePath:a,entry:l,typeOnlyDeclaration:c,bindingSymbol:u,references:[]};if(i.push(d),c||!l.localName||!u)continue;let m=o.get(l.localName);m?m.push(d):o.set(l.localName,[d])}}return o.size>0&&n.forEachDescendant(s=>{if(s.getKindName()!=="Identifier")return;let a=o.get(s.getText());if(!a||SL(s))return;r.scannedIdentifiers+=1;let c=s.getSymbol()?.compilerSymbol;if(r.symbolLookups+=1,!!c){for(let l of a)if(l.bindingSymbol===c){l.references.push({location:Vs(s,this.db.config.projectRoot),node:s}),r.matchedReferences+=1;break}}}),i.map(s=>s.typeOnlyDeclaration?yL(t,s.sourcePath,s.entry):s.entry.identifier&&!s.bindingSymbol?(r.fallbackEntries+=1,this.valueImportUsageForEntry(t,s.sourcePath,s.entry)):this.valueImportUsageFromLocations(t,s.sourcePath,s.entry,s.references))}valueImportUsageForEntry(t,n,r){let i=r.identifier?r.identifier.findReferences():[],o=[];for(let s of i)for(let a of Lh(s,t,r.identifier,this.db.config.projectRoot))o.push(a);return this.valueImportUsageFromLocations(t,n,r,o)}valueImportUsageFromLocations(t,n,r,i){let o=i.some(c=>!ru(c.node)),s=i.some(c=>ru(c.node)),a=r.isTypeOnly;return{importer:t,sourcePath:n,importedName:r.importedName,localName:r.localName,kind:r.kind,isTypeOnly:a,isUsed:a||i.length>0,isTypeUsed:a||s,isValueUsed:o,references:i.map(c=>c.location)}}packageImportReferencesForDefinition(t){return this.packageImportReferences().get(t.symbolId)??[]}packageImportReferencesForFiles(t){let n=new Map,r=new Set;for(let o of t){let s=this.sourceFiles.sourceFile(o);if(s)for(let a of s.getImportDeclarations()){let c=lu(this.workspacePackages,a.getModuleSpecifierValue());c&&r.add(c)}}if(r.size===0)return n;let i=this.packageExportsForNames(r);for(let o of t)this.addPackageImportReferencesForDocument(n,i,o);for(let[o,s]of n)n.set(o,Or(s));return n}packageImportReferences(){if(this.packageImportReferenceIndex)return this.packageImportReferenceIndex;let t=new Map,n=this.packageExports();for(let r of this.sourceFiles.indexedTypeScriptLikeDocuments())this.addPackageImportReferencesForDocument(t,n,r);for(let[r,i]of t)t.set(r,Or(i));return this.packageImportReferenceIndex=t,t}addPackageImportReferencesForDocument(t,n,r){if(this.db.isIgnored(r))return;let i=this.sourceFiles.sourceFileMatch(r);if(i)for(let o of i.sourceFile.getImportDeclarations())this.addPackageImportReferencesForDeclaration(t,n,r,o)}addPackageImportReferencesForDeclaration(t,n,r,i){let o=lu(this.workspacePackages,i.getModuleSpecifierValue());if(!o)return;let s=n.get(o);if(s)for(let a of gu(i)){if(a.kind!=="named"||!a.identifier)continue;let c=s.get(a.importedName);if(!c||c.size===0)continue;let l=Nh(a.identifier,r,this.db.config.projectRoot);l.length>0&&wL(t,c,l)}}packageExports(){return this.packageExportIndex?this.packageExportIndex:(this.packageExportIndex=this.packageExportsForNames(new Set(this.workspacePackages.map(t=>t.name))),this.packageExportIndex)}packageExportsForNames(t){let n=new Map;for(let r of this.workspacePackages){if(!t.has(r.name))continue;let i=new Map;for(let o of Bh(r))this.collectPackageExports(r,o,i,new Set);i.size>0&&n.set(r.name,i)}return n}collectPackageExports(t,n,r,i){if(i.has(n))return;i.add(n);let o=this.sourceFiles.sourceFile(n);if(o)for(let s of o.getExportDeclarations()){let a=s.getModuleSpecifierValue(),c=a?Je(this.db,n,a):n;if(!c||!c.startsWith(`${t.relativeDir}/src/`))continue;let l=s.getNamedExports();if(l.length===0){if(s.isNamespaceExport())continue;this.collectPackageExports(t,c,r,i);continue}for(let u of l){let d=u.getNameNode().getText(),m=u.getAliasNode()?.getText()??d,f=this.indexedDefinitionByLeaf(c,d);if(!f)continue;let p=r.get(m);p||(p=new Set,r.set(m,p)),p.add(f.symbolId)}}}indexedDefinitionByLeaf(t,n){return mt(this.indexedDefinitionLeafCache,t,()=>Oh(this.db,t)).get(n)??null}nodeForDefinition(t){return mt(this.definitionNodeCache,t.symbolId,()=>this.definitionNodesForFile(t.relativePath).get(t.symbolId)??null)}definitionNodesForFile(t){return mt(this.fileDefinitionNodeCache,t,()=>{let n=this.sourceFiles.sourceFile(t);return n?Ah(this.tsMorph,this.db,n,t):new Map})}referenceDefinitionFromCompilerSymbol(t){return this.definitionFromCompilerSymbol(t,void 0,!0)}definitionFromCompilerSymbol(t,n,r=!1){let i=t.name,o=n?W.now():0,s=t.declarations??[];n&&(n.declarationsMs+=W.now()-o,n.declarationChecks+=s.length);for(let a of s){let c=n?W.now():0,l=a.getSourceFile(),u=jr(this.db.config.projectRoot,l.fileName),d=l.getLineAndCharacterOfPosition(a.getStart(l)).line;if(n&&(n.declarationLocationMs+=W.now()-c),!u||this.db.isIgnored(u))continue;let m=n?W.now():0,f=this.compilerDeclarationName(a),p=r?su(this.db,u,d,i)??(f&&f!==i?su(this.db,u,d,f):null):Mh(this.db,u,d,i);if(n&&(n.indexedLookupMs+=W.now()-m),p)return{symbolId:p.symbolId,symbol:p.symbol,file:p.relativePath,line:p.startLine}}return null}compilerDeclarationName(t){let n=t.name;return n&&this.tsMorph.ts.isIdentifier(n)?n.text:null}calleeMapForFile(t,n){let r=U(),i=0,o=0,s=0,a=0,c=0,l=0,u=0,d=0,m=r?vL():void 0;return E("typescript.callee-map.file",()=>{let f=r?W.now():0,p=this.sourceFiles.sourceFile(t);if(r&&(c=Math.round(W.now()-f)),!p)return new Map;let g=r?W.now():0,y=Y(this.db,t).sort((D,w)=>D.startLine-w.startLine||w.endLine-D.endLine);if(r&&(l=Math.round(W.now()-g)),i=y.length,y.length===0)return new Map;let h=new Map,x=r?W.now():0,b=this.compilerCheckerForSourceFile(p),C=p.compilerNode;r&&(u=Math.round(W.now()-x));let S=new Map,v=D=>{if(this.tsMorph.ts.isCallExpression(D)||this.tsMorph.ts.isNewExpression(D)){r&&(o+=1);let w=this.semanticCalleeForCallNode(b,C,y,D,S,n,m);w&&(r&&(s+=1),CL(h,w.callerId,w.target))}this.tsMorph.ts.forEachChild(D,v)},R=r?W.now():0;v(C),r&&(d=Math.round(W.now()-R));for(let[D,w]of h)h.set(D,EL(w));return a=h.size,h},()=>({relativePath:t,definitions:i,callNodes:o,resolvedCallees:s,outputRows:a,requestedDefinitions:n?.size??i,sourceFileLookupMs:c,definitionsLoadMs:l,checkerLookupMs:u,traversalMs:d,...m?IL(m):{}}))}semanticCalleeForCallNode(t,n,r,i,o,s,a){let c=a?W.now():0,l=RL(r,fu(n,i));if(a&&(a.callerLookupMs+=W.now()-c),!l)return null;if(s&&!s.has(l.symbolId))return a&&(a.skippedUnrequestedCallers+=1),null;let u=i.expression,d=this.compilerSymbolForExpression(t,u,a),m=null;if(d)if(a&&(a.targetSymbolHits+=1),o.has(d))a&&(a.compilerSymbolCacheHits+=1),m=o.get(d)??null;else{a&&(a.compilerSymbolCacheMisses+=1);let f=a?W.now():0;m=this.definitionFromCompilerSymbol(d,a),a&&(a.targetLookupMs+=W.now()-f),o.set(d,m)}else a&&(a.targetMisses+=1);return m?{callerId:l.symbolId,target:{symbol:m.symbol,file:m.file,line:m.line}}:null}compilerSymbolForExpression(t,n,r){let i=r?W.now():0,o=t.getSymbolAtLocation(n);if(r&&(r.expressionSymbolMs+=W.now()-i),o)return o;r&&(r.typeFallbacks+=1);let s=r?W.now():0,a=t.getTypeAtLocation(n).getSymbol();return r&&(r.typeSymbolMs+=W.now()-s),a}compilerCheckerForSourceFile(t){let n=t.getProject(),r=this.compilerCheckerCache.get(n);return r||(r=n.getTypeChecker().compilerObject,this.compilerCheckerCache.set(n,r)),r}};function gu(e){let t=[],n=e.getDefaultImport();n&&t.push({identifier:n,importedName:"default",localName:n.getText(),kind:"default",isTypeOnly:e.getImportClause()?.isTypeOnly()??!1});let r=e.getNamespaceImport();r&&t.push({identifier:r,importedName:"*",localName:r.getText(),kind:"namespace",isTypeOnly:e.getImportClause()?.isTypeOnly()??!1});for(let i of e.getNamedImports()){let o=i.getNameNode(),a=i.getAliasNode()??(o.getKindName()==="Identifier"?o:null);t.push({identifier:a,importedName:o.getText(),localName:a?.getText()??o.getText(),kind:"named",isTypeOnly:i.isTypeOnly()||(e.getImportClause()?.isTypeOnly()??!1)})}return t.length===0&&t.push({identifier:null,importedName:"*",localName:null,kind:"side-effect",isTypeOnly:!1}),t}function yL(e,t,n){return{importer:e,sourcePath:t,importedName:n.importedName,localName:n.localName,kind:n.kind,isTypeOnly:!0,isUsed:!0,isTypeUsed:!0,isValueUsed:!1,references:[]}}function bL(){return{declarations:0,entries:0,bindingSymbols:0,missingBindingSymbols:0,scannedIdentifiers:0,symbolLookups:0,matchedReferences:0,fallbackEntries:0}}function SL(e){for(let t=e;t;t=t.getParent())if(t.getKindName()==="ImportDeclaration")return!0;return!1}function CL(e,t,n){let r=e.get(t);r||(r=[],e.set(t,r)),r.push(n)}function xL(e){let t=new Set;for(let n of e.getImportDeclarations())for(let r of gu(n))r.localName&&t.add(r.localName);return t}function RL(e,t){let n=null;for(let r of e)t<r.startLine||t>r.endLine||(!n||r.startLine>=n.startLine)&&(n=r);return n}function fu(e,t){return e.getLineAndCharacterOfPosition(t.getStart(e)).line}function Jh(e,t,n){return t===e.relativePath&&n>=e.startLine&&n<=e.endLine}function Yh(e){return e.symbol.includes("#")?ue(e.symbol)==="type"&&e.relativePath.endsWith(".d.ts"):!1}function vL(){return{callerLookupMs:0,expressionSymbolMs:0,typeSymbolMs:0,targetLookupMs:0,declarationsMs:0,declarationLocationMs:0,indexedLookupMs:0,compilerSymbolCacheHits:0,compilerSymbolCacheMisses:0,targetSymbolHits:0,targetMisses:0,typeFallbacks:0,declarationChecks:0,skippedUnrequestedCallers:0}}function IL(e){return{...e,callerLookupMs:Math.round(e.callerLookupMs),expressionSymbolMs:Math.round(e.expressionSymbolMs),typeSymbolMs:Math.round(e.typeSymbolMs),targetLookupMs:Math.round(e.targetLookupMs),declarationsMs:Math.round(e.declarationsMs),declarationLocationMs:Math.round(e.declarationLocationMs),indexedLookupMs:Math.round(e.indexedLookupMs)}}function Xh(){return{cacheHits:0,cacheMisses:0,nodeHits:0,nodeMisses:0,scanFiles:0,identifiers:0,symbolLookups:0,aliasResolutions:0,targetHits:0,targetMisses:0,requestedHits:0,scanMs:0,packageRefsMs:0,semanticRefsMs:0,packageReferenceCount:0,referenceCount:0,preciseSearchFailures:0,hierarchyDefinitions:0,hierarchyFamilies:0,hierarchyReferences:0,hierarchyMs:0}}function Qh(e){return{...e,scanMs:Math.round(e.scanMs),packageRefsMs:Math.round(e.packageRefsMs),semanticRefsMs:Math.round(e.semanticRefsMs),hierarchyMs:Math.round(e.hierarchyMs)}}function wL(e,t,n){for(let r of t){let i=e.get(r)??[];i.push(...n),e.set(r,i)}}function EL(e){let t=new Set,n=[];for(let r of e){let i=`${r.symbol}|${r.file}|${r.line}`;t.has(i)||(t.add(i),n.push(r))}return n}function Zh(e){return e.replace(/\s+/g," ").replace(/\bimport\("[^"]+"\)\./g,"").trim()}import{createHash as DL}from"crypto";import{readFileSync as PL}from"fs";import{dirname as kL,join as Xs}from"path";var Qs=2,TL="typescript-semantic";function ty(e){let t=Xs(e,TL);return{rootDir:t,requestDir:Xs(t,"requests"),responseDir:Xs(t,"responses")}}function Zs(e){try{let t=JSON.parse(PL(Xs(kL(e),"meta.json"),"utf8"));return t.version!==2&&t.version!==3||typeof t.status!="string"||typeof t.updatedAt!="string"||t.fingerprint===void 0?null:DL("sha256").update(JSON.stringify({version:t.version,status:t.status,updatedAt:t.updatedAt,fingerprint:t.fingerprint,indexedLanguages:t.indexedLanguages})).digest("hex")}catch{return null}}var AL=12e4,ML=5;function ay(e,t,n={}){let r=new hu(e,n),i=null,o=null,s=process.env.SCIP_QUERY_SKIP_WATCH_SERVICE==="1",a=()=>(i??=ey(e,t),i),c=(d,m,f)=>{if(s)return f();try{return m(r.request(d))}catch{return s=!0,f()}},l=(d,m)=>c({kind:"references",definitions:[...d],...m?.exact?{exact:!0}:{}},f=>sy(f),()=>a().referencesForDefinitions?.(d,m)??new Map(d.map(f=>[f.symbolId,a().referencesFor(f)]))),u=d=>c({kind:"callees",definitions:[...d]},m=>sy(m),()=>a().calleesForDefinitions?.(d)??new Map(d.map(m=>[m.symbolId,a().calleesFor(m)])));return{language:"typescript",availability:()=>(o??=c({kind:"availability"},BL,()=>a().availability()),o),importUsage:d=>c({kind:"import-usage",file:d},m=>m,()=>a().importUsage(d)),referencesFor:d=>l([d]).get(d.symbolId)??[],referencesForDefinitions:l,referenceFragmentsForFiles:d=>c({kind:"reference-fragments",files:[...d]},m=>jL(m),()=>a().referenceFragmentsForFiles?.(d)??new Map),calleesFor:d=>u([d]).get(d.symbolId)??[],calleesForDefinitions:u,signatureFor:d=>c({kind:"signature",definition:d},$L,()=>a().signatureFor(d)),dispose:()=>i?.dispose?.()}}var hu=class{constructor(t,n={}){this.db=t;this.runtime=n.runtime??UL,this.timeoutMs=n.timeoutMs??HL(),this.cacheDir=NL(t.config.dbPath),this.projectRoot=It(t.config.projectRoot)}db;runtime;timeoutMs;cacheDir;projectRoot;request(t){let n=Th(this.cacheDir),r=ty(this.cacheDir),i=nu(n.statePath);if(!oy(i,this.projectRoot,this.runtime))throw new Error("Compatible TypeScript semantic service is not running.");let o=Zs(this.db.config.dbPath);if(!o)throw new Error("Published TypeScript generation identity is unavailable.");let s=this.runtime.randomId(),a=iy(r.requestDir,`${s}.json`),c=iy(r.responseDir,`${s}.json`),l=this.runtime.now()+this.timeoutMs;ny(r.requestDir,{recursive:!0}),ny(r.responseDir,{recursive:!0}),Fe(a,{protocolVersion:Qs,id:s,generation:o,deadlineAtMs:l,profileEnvironment:bf(),request:t});try{for(;this.runtime.now()<=l;){if(_L(c))return OL(LL(c,"utf8"),s,o);let u=nu(n.statePath);if(!oy(u,this.projectRoot,this.runtime))throw new Error("TypeScript semantic service stopped while processing a request.");this.runtime.sleep(ML)}throw new Error(`TypeScript semantic service timed out after ${this.timeoutMs}ms.`)}finally{ry(a,{force:!0}),ry(c,{force:!0})}}};function oy(e,t,n){let r=e!==null&&n.now()-Date.parse(e.heartbeatAt)<=kh,i=e?.typescriptSemantic?.busyUntil!==void 0&&n.now()<=Date.parse(e.typescriptSemantic.busyUntil);return e!==null&&e.projectRoot===t&&e.typescriptSemantic?.protocolVersion===Qs&&n.isProcessAlive(e.pid)&&(r||i)}function OL(e,t,n){let r=JSON.parse(e);if(r.protocolVersion!==Qs||r.id!==t||r.ok===!0&&r.generation!==n)throw new Error("TypeScript semantic service wrote an incompatible response.");if(r.ok===!0)return r.response;throw new Error(typeof r.error=="string"?r.error:"TypeScript semantic service request failed.")}function sy(e){if(!Array.isArray(e))throw new Error("TypeScript semantic service wrote an invalid numeric map.");return new Map(e)}function jL(e){if(!Array.isArray(e))throw new Error("TypeScript semantic service wrote an invalid string map.");return new Map(e)}function BL(e){if(!e||typeof e!="object"||typeof e.available!="boolean")throw new Error("TypeScript semantic service wrote invalid availability.");return e}function $L(e){if(e!==null&&typeof e!="string")throw new Error("TypeScript semantic service wrote an invalid signature.");return e}function HL(){let e=Number(process.env.SCIP_TYPESCRIPT_SEMANTIC_TIMEOUT_MS);return Number.isInteger(e)&&e>0?e:AL}var UL={now:Date.now,randomId:FL,sleep(e){let t=new Int32Array(new SharedArrayBuffer(4));Atomics.wait(t,0,0,e)},isProcessAlive:dt};var cy=new zs;mn({name:"semantic-provider",groups:["semantic-provider"],clearAll:e=>cy.clear(e)});function Zn(e,t){let n=Ee(t)??"typescript";return cy.getOrCreate(e,n,()=>n==="rust"?wh(e.config.projectRoot,{sourceImportUsageResolver:{importUsageFacts:r=>Rg(e,r)},calleeSymbolResolver:xg(e),sourceZeroCalleeOracle:r=>WL(e,r),scipOccurrenceCalleeOracle:r=>Ph(e,r)}):ay(e,t))}function Ee(e){return e?M(e)==="rust"?"rust":Tt(e)?"typescript":null:"typescript"}function WL(e,t){let n=z(e,t.relativePath);if(!n||n.language!=="rust")return!1;let r=n.callables.find(i=>i.startLine===t.startLine&&i.endLine===t.endLine&&i.name===t.leaf)??n.callables.find(i=>i.startLine===t.startLine&&i.endLine===t.endLine);return r?!n.callSites.some(i=>i.line>=r.startLine&&i.line<=r.endLine):!1}import{existsSync as GL,readFileSync as zL}from"fs";import{resolve as VL}from"path";var qL=/^[A-Za-z_][A-Za-z0-9_]*$/,ly=/\bDefault::default\b/g,KL=/^\.\.\s*Default::default\b/;function uy(e,t){let n=new Map,r=new Map;for(let i of t){let o=yu(e,i,r);o!==null&&n.set(i.symbolId,o)}return n}function yu(e,t,n=new Map){let r=YL(t.symbol);if(!r)return null;let i=Lr(e,[t.symbolId]);if(i.length===0)return null;let o=new RegExp(`(^|[^A-Za-z0-9_])${$(r)}::default\\b`,"g"),s=new RegExp(`(^|[^A-Za-z0-9_])${$(r)}\\s*$`),a=JL(e,t.symbolId),c=[];for(let l of i){let u=XL(e,l.relative_path,n);if(u===null)return null;let d=u.split(/\r?\n/),m=0,f=[],p=0;for(let g=l.chunk_start;g<=l.chunk_end&&g<d.length;g+=1){let h=d[g]??"",x=new Set;o.lastIndex=0;let b;for(;b=o.exec(h);)c.push({file:l.relative_path,line:g,column:b.index+b[1].length+r.length+2}),p+=1;for(let C=0;C<h.length;C+=1){let S=KL.exec(h.slice(C));if(S){if(a&&f.includes(m)){let R=C+S[0].lastIndexOf("default");c.push({file:l.relative_path,line:g,column:R}),x.add(R),p+=1}C+=S[0].length-1;continue}let v=h[C];if(v==="{"){let R=s.test(h.slice(0,C));m+=1,R&&f.push(m);continue}if(v==="}")for(m=Math.max(0,m-1);f.length>0&&f[f.length-1]>m;)f.pop()}for(ly.lastIndex=0;b=ly.exec(h);){let C=b.index+9;if(!x.has(C))return null}}if(p===0)return null}return Ms(c)}function JL(e,t){return e.get("SELECT 1 AS present FROM mentions WHERE symbol_id = ? AND role = 1 LIMIT 1",t)?.present===1}function YL(e){let t=/impl#\[([^\]]+)\]\[Default\]default\(\)\./.exec(e)?.[1]??null;return!t||!qL.test(t)?null:t}function XL(e,t,n){if(n.has(t))return n.get(t)??null;let r=e.get("SELECT text FROM documents WHERE relative_path = ?",t),i=typeof r?.text=="string"?r.text:QL(e,t);return n.set(t,i),i}function QL(e,t){let n=VL(e.config.projectRoot,t);if(!GL(n))return null;try{return zL(n,"utf8")}catch{return null}}import{readFileSync as nN}from"fs";import{dirname as rN,join as iN}from"path";function ta(e){let t=ea(e.projectFiles),n=new Set(t),r=new Map(e.snapshot.files.map(d=>[d.path,d])),i=e.snapshot.files.filter(d=>{let m=jl(d.path,["typescript"]);return m==="config"||m==="ambient"}).map(d=>d.path),o=ea([...t,...i]),s=o.find(d=>!r.has(d)),a=new Set(e.snapshot.files.map(d=>d.path)).size!==e.snapshot.files.length,c=!s&&o.some(d=>dy(r.get(d))),l=he(JSON.stringify({pnpmWorkspaces:e.snapshot.pnpmWorkspaces,typescriptProjectMode:e.snapshot.typescriptProjectMode,typescriptProjects:ea(e.snapshot.typescriptProjects),membership:t})),u=new Map;return{identityFor(d,m){if(!n.has(d))return Br("target-outside-project");if(a)return Br("duplicate-input-path");if(s)return Br("missing-input-fingerprint");if(c)return Br("unreadable-input");let f=[],p,g;if(e.graph===null)f.push("dependency-graph-unavailable"),g="whole-project",p=o;else{let x=eN(d,e.graph,u);if(x.find(C=>!r.has(C)))return Br("missing-input-fingerprint");if(p=ea([...x,...i]),p.some(C=>dy(r.get(C))))return Br("unreadable-input");g="dependency-closure"}let y=p.map(x=>tN(r.get(x)));return{version:1,key:he(JSON.stringify({version:1,engineIdentity:e.engineIdentity,schemaVersion:m,projectIdentity:l,inputs:y})),mode:g,inputFiles:p,reasons:f}}}}function ZL(e,t){let n=new Set,r=[e];for(let i=0;i<r.length;i+=1){let o=r[i];if(!(o===void 0||n.has(o))){n.add(o);for(let s of[...t.get(o)??[]].sort())n.has(s)||r.push(s)}}return[...n].sort()}function eN(e,t,n){let r=n.get(e);if(r)return r;let i=ZL(e,t);return n.set(e,i),i}function tN(e){return{path:e.path,size:e.size,hash:e.hash}}function dy(e){return e.size<0||e.hash==="unreadable"}function Br(e){return{version:1,key:null,mode:"unkeyed",inputFiles:[],reasons:[e]}}function ea(e){return[...new Set(e)].sort()}var oN=X("typescript-semantic-identity-context",{clearGroups:["whole-project"]});function wn(e,t,n){let r=oN.get(e,()=>sN(e));if(!r)return null;let i=`${n}\0${t}`,o=r.identities.get(i);if(o)return o;let s=r.builder.identityFor(t,n);return r.identities.set(i,s),s}function Ui(e){return N(e,{includeIgnored:!1}).filter(Tt).sort()}function sN(e){try{let t=JSON.parse(nN(iN(rN(e.config.dbPath),"meta.json"),"utf8")),n=zg(t.fingerprint);return n?{builder:ta({projectFiles:Ui(e),snapshot:n,graph:ie(e),engineIdentity:Ks()}),identities:new Map}:null}catch{return null}}var bu="typescript-reference-fragment-v2",ra=oe({kind:"typescript-reference-fragments",invalidation:J("typescript-reference-fragments"),serialize:e=>JSON.stringify(e),deserialize:cN});function x7(e,t,n,r=e){let i=Ui(e),o=ta({projectFiles:i,snapshot:t,graph:ie(e),engineIdentity:Ks()}),s=[...n].map(([a,c])=>({relativePath:a,contentHash:o.identityFor(a,bu).key,value:[...c]}));if(s.some(a=>a.contentHash===null))throw new Error("TypeScript reference fragment identity is unavailable for an affected document.");return ra.writeBatch(r,s.map(a=>({...a,contentHash:a.contentHash}))),s.length}function Su(e,t,n,r){let i=t.filter(s=>Tt(s.relativePath));if(i.length===0)return na("no TypeScript definitions");let o=na("shadow did not run");return E("typescript.reference-fragments.shadow",()=>{try{let s=r(i[0].relativePath);if(!s.availability().available||!s.referenceFragmentsForFiles)return o=na("TypeScript reference fragment provider is unavailable"),o;let a=Ui(e),c=new Set(a),l=s.referenceFragmentsForFiles(a),u=Ys(i,l),d=Vh(i,aN(n,c),u);if(!d.passed)return o={state:"failing",files:a.length,keyedFiles:0,writtenFiles:0,...d},o;let m=[];for(let f of a){let p=wn(e,f,bu);p?.key&&m.push({relativePath:f,contentHash:p.key,value:l.get(f)??[]})}return ra.writeBatch(e,m),o={state:"passing",files:a.length,keyedFiles:m.length,writtenFiles:m.length,...d},o}catch(s){return o=na(s instanceof Error?s.message:String(s)),o}},()=>({...o}))}function aN(e,t){return new Map([...e].map(([n,r])=>[n,r.filter(i=>t.has(i.file))]))}function Cu(e,t,n){if(t.length===0)return{references:new Map,files:0,cacheHits:0,cacheMisses:0,computedFiles:0};let r="fallback",i=0,o=0,s=0,a=0;return E("typescript.reference-fragments.materialize",()=>{try{let c=Ui(e);i=c.length;let l=new Map,u=new Map,d=[];for(let p of c){let g=wn(e,p,bu);if(!g?.key)return null;l.set(p,g.key);let y=ra.read(e,p,g.key);y===null?(s+=1,d.push(p)):(o+=1,u.set(p,y))}if(s===0)return r="hit",{references:Ys(t,u),files:i,cacheHits:o,cacheMisses:s,computedFiles:a};let m=n(t[0].relativePath);if(!m.availability().available||!m.referenceFragmentsForFiles)return null;let f=m.referenceFragmentsForFiles(d);if(d.some(p=>!f.has(p)))return null;a=f.size,ra.writeBatch(e,d.map(p=>({relativePath:p,contentHash:l.get(p),value:f.get(p)??[]})));for(let[p,g]of f)u.set(p,g);return r="computed",{references:Ys(t,u),files:i,cacheHits:o,cacheMisses:s,computedFiles:a}}catch{return null}},()=>({state:r,files:i,cacheHits:o,cacheMisses:s,computedFiles:a}))}function na(e){return{state:"unavailable",files:0,keyedFiles:0,writtenFiles:0,expectedCount:0,actualCount:0,missing:[],extra:[],reason:e}}function cN(e){try{let t=JSON.parse(e);return!Array.isArray(t)||!t.every(lN)?null:t}catch{return null}}function lN(e){if(!e||typeof e!="object")return!1;let t=e,n=t.location;return typeof t.targetSymbol=="string"&&!!n&&typeof n.file=="string"&&typeof n.line=="number"&&typeof n.column=="number"}var uN="typescript-import-usage-v1",dN="typescript-signatures-v1",xu=X("semantic-prefetched-callees",{clearGroups:["whole-project","source-file","semantic-provider"]}),my=$n({kind:"semantic-import-usage",invalidation:J("semantic-import-usage"),serialize:e=>JSON.stringify(e),deserialize:vy}),fy=$n({kind:"semantic-signatures",invalidation:J("semantic-signatures"),serialize:e=>JSON.stringify(e),deserialize:CN}),py=oe({kind:"typescript-import-usage",invalidation:J("typescript-import-usage"),serialize:e=>JSON.stringify(e),deserialize:vy}),gy=oe({kind:"typescript-signatures",invalidation:J("typescript-signatures"),serialize:e=>JSON.stringify(e),deserialize:xN});function We(e){let t=new Map,n=new Set;return{capability:(r,i)=>Iy(e,r,i),importUsage:r=>fN(e,r),references:r=>by(e,r),materializeReferences:(r,i)=>Cy(e,r,t,n,i),callerMap:r=>pN(e,r,t,n),calleeMap:r=>yN(e,r),signature:r=>bN(e,r)}}function mN(e,t){if(t.size===0)return;let n=xu.get(e,()=>new Map);for(let[r,i]of t)n.set(r,[...i])}function yy(e,t){if(!xu.has(e))return{hits:[],misses:[...t]};let n=xu.get(e,()=>new Map),r=[],i=[];for(let o of t)n.has(o.symbolId)?r.push({definition:o,callees:n.get(o.symbolId)??[]}):i.push(o);return{hits:r,misses:i}}function Gi(e,t){return We(e).importUsage(t)}function fN(e,t){if(Ee(t)==="typescript"){let o="fallback",s=0,a=0,c=0,l=0;return E("typescript.import-usage.materialize",()=>{let u=wn(e,t,uN);if(u?.key){s=1;let m=py.read(e,t,u.key);if(m)return o="hit",a=1,m;c=1;let f=Ft(e,t);if(!f)return o="unavailable",[];let p=f.importUsage(t);return py.write(e,t,u.key,p),o="computed",p}l=1;let d=Ft(e,t);return d?(o="direct-fallback",d.importUsage(t)):(o="unavailable",[])},()=>({state:o,eligible:s,cacheHits:a,cacheMisses:c,fallbacks:l}))}let n=Ry(e,"semantic-import-usage",t);if(n){let o=my.read(e,t,n);if(o)return o}let r=Ft(e,t);if(!r)return[];let i=r.importUsage(t);return n&&my.write(e,t,n,i),i}function ia(e,t){return We(e).references(t)}function by(e,t){let n=yu(e,t);if(n)return n;let r=Mg(e,t);if(r)return r;let i=Ft(e,t.relativePath);return i?i.referencesFor(t):[]}function En(e,t){return We(e).callerMap(t)}function Sy(e,t){let n=new Map,r=new Map;for(let i of t){if(Ee(i.relativePath)==="typescript"){let o=Ft(e,i.relativePath);if(!o)continue;let s=r.get(o)??[];s.push(i),r.set(o,s);continue}Ru(e,n,i,by(e,i))}for(let[i,o]of r){let s=Cu(e,o,c=>Zn(e,c)),a=s?.references??(i.referencesForDefinitions?i.referencesForDefinitions(o,{exact:!0}):new Map(o.map(c=>[c.symbolId,i.referencesFor(c)])));!s&&U()&&Su(e,o,a,c=>Zn(e,c));for(let c of o)Ru(e,n,c,a.get(c.symbolId)??[])}return n}function pN(e,t,n=new Map,r=new Set){let i=new Map,o=Cy(e,t,n,r),s=0;return E("semantic.callers.from-references",()=>{for(let a of t)s+=Ru(e,i,a,n.get(a.symbolId)??[])},()=>({definitions:t.length,materialized:o.definitions,inMemoryHits:o.inMemoryHits,incompleteInMemoryHits:o.incompleteInMemoryHits,resultRows:i.size,callerFiles:s})),i}function Cy(e,t,n,r,i={}){let o=Te(e),s=[],a=[],c=[],l=0,u=0,d=0,m=0,f=0,p=0,g=0,y=0,h=0,x=0,b=0,C=0,S=[],v=new Map,R=t.filter(w=>Ee(w.relativePath)==="typescript"&&!n.has(w.symbolId)&&!r.has(w.symbolId)),D=Cu(e,R,w=>Zn(e,w));if(D){h=R.length,x=D.cacheHits,b=D.cacheMisses,C=D.computedFiles;for(let w of R)n.set(w.symbolId,D.references.get(w.symbolId)??[])}if(E("semantic.references.cache-scan",()=>{for(let[w,P]of _s(t)){let L=[];for(let _ of P)n.has(_.symbolId)?u+=1:r.has(_.symbolId)?y+=1:L.push(_);if(L.length===0){g+=1;continue}let re=gN(e,o,w);if(!re){for(let _ of L)Ee(_.relativePath)||(l+=1),c.push(_);continue}p+=1;let Q=tf(e,w,re);for(let _ of L){let ae=Q.get(_.symbol)??null;if(ae!==null){let ee=hN(ae);if(ee){d+=1,n.set(_.symbolId,ee);continue}m+=1}a.push({definition:_,cacheFingerprint:re})}}},()=>({definitions:t.length,skippedUnsupportedLanguage:l,cacheHits:d,parseFailures:m,misses:a.length,unkeyed:c.length,inMemoryHits:u,incompleteInMemoryHits:y,fullyInMemoryFiles:g,cacheReadFiles:p})),a.length>0||c.length>0){S=[...c,...a.map(w=>w.definition)],v=E("semantic.references.compute-misses",()=>{let w=vu(e,S,i);return f=w.size,w},()=>({definitions:S.length,misses:a.length,unkeyed:c.length,rows:f}));for(let w of S)v.has(w.symbolId)?(n.set(w.symbolId,v.get(w.symbolId)??[]),r.delete(w.symbolId)):r.add(w.symbolId);for(let{definition:w,cacheFingerprint:P}of a)v.has(w.symbolId)&&Iy(e,"semantic-references",w.relativePath).available&&s.push({relativePath:w.relativePath,symbol:w.symbol,projectFingerprint:P,payload:JSON.stringify(v.get(w.symbolId)??[])})}return s.length>0&&E("semantic.references.cache-write",()=>rf(e,s),()=>({entries:s.length})),v.size>0&&Su(e,S,v,w=>Zn(e,w)),{definitions:t.length,inMemoryHits:u,incompleteInMemoryHits:y,cacheHits:d,misses:a.length,unkeyed:c.length,skippedUnsupportedLanguage:l,parseFailures:m,computed:f,incomplete:r.size,cacheWrites:s.length,fragmentDefinitions:h,fragmentCacheHits:x,fragmentCacheMisses:b,fragmentComputedFiles:C}}function gN(e,t,n){if(!t)return null;let r=Ee(n);return r==="typescript"?t:r==="rust"?he(JSON.stringify({kind:"semantic-references",language:r,engine:Yn(e.config.projectRoot),projectFingerprint:t})):null}function vu(e,t,n={}){let r=U(),i=new Map,o=0,s=0,a=0,c=0,l=0,u=0,d=0,m=0,f=0;return E("semantic.references.provider-loop",()=>{let p=uy(e,t),g=Ag(e,t),y=new Map,h=n.prefetchCallees?new Map:null,x=[];for(let C of t){let S,v=()=>(S??=Ft(e,C.relativePath),S);if(h){let P=v();if(P?.referencesAndCalleesForDefinitions){let L=h.get(P);L?L.push(C):h.set(P,[C]),f+=1}}let R=p.get(C.symbolId);if(R){a+=1,c+=R.length,Wi(i,C.symbolId,R,r,P=>{d+=1,m+=P});continue}let D=g.get(C.symbolId);if(D){l+=1,u+=D.length,Wi(i,C.symbolId,D,r,P=>{d+=1,m+=P});continue}let w=v();if(!w){r&&(s+=1);continue}if(r&&(o+=1),w.referencesForDefinitions){let P=y.get(w);P?P.push(C):y.set(w,[C])}else x.push({provider:w,definition:C})}let b=new Set;if(h)for(let[C,S]of h){if(!C.referencesAndCalleesForDefinitions)continue;let v=y.get(C)??[],R=C.referencesAndCalleesForDefinitions(v,S);b.add(C),mN(e,R.callees);for(let D of v){if(!R.references.has(D.symbolId))continue;let w=R.references.get(D.symbolId)??[];Wi(i,D.symbolId,w,r,P=>{d+=1,m+=P})}}for(let[C,S]of y){if(b.has(C))continue;let v=C.referencesForDefinitions(S);for(let R of S){if(!v.has(R.symbolId))continue;let D=v.get(R.symbolId)??[];Wi(i,R.symbolId,D,r,w=>{d+=1,m+=w})}}for(let{provider:C,definition:S}of x){let v=C.referencesFor(S);Wi(i,S.symbolId,v,r,R=>{d+=1,m+=R})}return i},()=>({definitions:t.length,providerHits:o,providerMisses:s,rustDefaultFastPathRows:a,rustDefaultFastPathReferences:c,rustScipOccurrenceFastPathRows:l,rustScipOccurrenceFastPathReferences:u,prefetchCalleeDefinitions:f,definitionsWithReferences:d,referenceCount:m,rows:i.size}))}function Wi(e,t,n,r,i){e.set(t,n),r&&n.length>0&&i(n.length)}function Ru(e,t,n,r){let i=0;for(let o of r){if(o.file===n.relativePath||e.isIgnored(o.file))continue;let s=t.get(n.symbolId);s||(s=new Set,t.set(n.symbolId,s));let a=s.size;s.add(o.file),s.size!==a&&(i+=1)}return i}function hN(e){try{return JSON.parse(e)}catch{return null}}function oa(e,t){return We(e).calleeMap(t)}function yN(e,t){let n=U(),r=new Map,i=0,o=0,s=0,a=0;return E("semantic.callees.provider-loop",()=>{let c=new Map,l=[];for(let u of t){let d=Ft(e,u.relativePath);if(!d){n&&(o+=1);continue}n&&(i+=1);let m=u;if(d.calleesForDefinitions){let f=c.get(d);f?f.push(m):c.set(d,[m])}else l.push({provider:d,definition:m})}for(let[u,d]of c){let m=u.calleesForDefinitions(d);for(let f of d){let p=m.get(f.symbolId)??[];hy(r,f.symbolId,p,n,g=>{s+=1,a+=g})}}for(let{provider:u,definition:d}of l){let m=u.calleesFor(d);hy(r,d.symbolId,m,n,f=>{s+=1,a+=f})}return r},()=>({definitions:t.length,providerHits:i,providerMisses:o,definitionsWithCallees:s,calleeCount:a,rows:r.size}))}function hy(e,t,n,r,i){n.length>0&&(e.set(t,n),r&&i(n.length))}function xy(e,t){return We(e).signature(t)}function bN(e,t){if(Ee(t.relativePath)==="typescript"){let s="fallback",a=0,c=0,l=0,u=0;return E("typescript.signature.materialize",()=>{let d=wn(e,t.relativePath,dN);if(d?.key){a=1;let f=gy.read(e,t.relativePath,d.key)??{};if(Object.prototype.hasOwnProperty.call(f,t.symbol))return s="hit",c=1,f[t.symbol]??null;l=1;let p=Ft(e,t.relativePath);if(!p)return s="unavailable",null;let g=p.signatureFor(t);return gy.write(e,t.relativePath,d.key,{...f,[t.symbol]:g}),s="computed",g}u=1;let m=Ft(e,t.relativePath);return m?(s="direct-fallback",m.signatureFor(t)):(s="unavailable",null)},()=>({state:s,eligible:a,cacheHits:c,cacheMisses:l,fallbacks:u}))}let n=Ry(e,"semantic-signatures",t.relativePath),r=SN(t);if(n){let s=fy.read(e,r,n);if(s)return s.signature}let i=Ft(e,t.relativePath);if(!i)return null;let o=i.signatureFor(t);return n&&fy.write(e,r,n,{signature:o}),o}function Ry(e,t,n){let r=Te(e);if(!r)return null;let i=Ee(n);return i!=="rust"?null:he(JSON.stringify({kind:t,language:i,engine:Yn(e.config.projectRoot),projectFingerprint:r}))}function SN(e){return`${e.relativePath}\0${e.symbol}`}function vy(e){try{let t=JSON.parse(e);return Array.isArray(t)?t:null}catch{return null}}function CN(e){try{let t=JSON.parse(e);if(!t||typeof t!="object")return null;let n=t.signature;return n!==null&&typeof n!="string"?null:{signature:n}}catch{return null}}function xN(e){try{let t=JSON.parse(e);if(!t||typeof t!="object"||Array.isArray(t))return null;for(let n of Object.values(t))if(n!==null&&typeof n!="string")return null;return t}catch{return null}}function Iy(e,t,n){let r=Ee(n);if(!r)return{slot:t,language:"typescript",available:!1,reason:"semantic evidence is only available for TypeScript or Rust files"};try{return{slot:t,language:r,...Zn(e,n).availability()}}catch(i){return{slot:t,language:r,available:!1,reason:i instanceof Error?i.message:String(i)}}}function Ft(e,t){if(!Ee(t))return null;let n=Zn(e,t);return n.availability().available?n:null}var H={references:ia,referenceMap:vu,callerMap:(e,t)=>We(e).callerMap(t),calleeMap:Iu};function Iu(e,t){let n=U(),r=new Map,i=yy(e,t),o=[],s=[],a=0,c=0,l=0,u=0,d=0,m=0,f=0;for(let{definition:b,callees:C}of i.hits)d+=1,C.length>0&&(m+=1,f+=C.length,r.set(b.symbolId,C));let p=RN(e,i.hits);if(p.entries.length>0&&E("semantic.callees.prefetch-cache-write",()=>Tc(e,p.entries),()=>({entries:p.entries.length,sourceMissing:p.sourceMissing,skippedUnsupportedLanguage:p.skippedUnsupportedLanguage})),E("semantic.callees.cache-scan",()=>{for(let[b,C]of _s(i.misses)){if(!Ee(b)){n&&(a+=C.length);continue}let S=k(e,b);if(!S){n&&(c+=C.length),s.push(...C);continue}let v=ce(e,b,S),R=wy(e,b);if(!R){s.push(...C);continue}let D=ef(e,b,v,R);for(let w of C){let P=D.get(w.symbol)??null;if(P!==null){let L=IN(P);if(L){n&&(l+=1),L.length>0&&r.set(w.symbolId,L);continue}n&&(u+=1)}o.push({def:w,contentHash:v,depsDigest:R})}}},()=>({definitions:t.length,skippedUnsupportedLanguage:a,sourceMissing:c,cacheHits:l,parseFailures:u,misses:o.length,unkeyed:s.length,inMemoryHits:d,inMemoryRows:m,inMemoryCalleeCount:f,resultRows:r.size})),o.length===0&&s.length===0)return r;let g=[...s,...o.map(b=>b.def)],y=0,h=E("semantic.callees.compute-misses",()=>{let b=oa(e,g);return y=b.size,b},()=>({definitions:g.length,misses:o.length,unkeyed:s.length,rows:y}));for(let[b,C]of h)r.set(b,C);let x=o.filter(b=>We(e).capability("semantic-callees",b.def.relativePath).available).map(b=>({relativePath:b.def.relativePath,symbol:b.def.symbol,contentHash:b.contentHash,depsDigest:b.depsDigest,payload:JSON.stringify(h.get(b.def.symbolId)??[])}));return x.length>0?E("semantic.callees.cache-write",()=>Tc(e,x),()=>({entries:x.length})):E("semantic.callees.cache-write-skip",()=>{},()=>({reason:"provider-unavailable",misses:o.length})),r}function RN(e,t){let n=[],r=new Map,i=0,o=0;for(let{definition:s,callees:a}of t){if(!Ee(s.relativePath)){o+=1;continue}if(!r.has(s.relativePath)){let l=k(e,s.relativePath),u=l?wy(e,s.relativePath):null;r.set(s.relativePath,l&&u?{contentHash:ce(e,s.relativePath,l),depsDigest:u}:null)}let c=r.get(s.relativePath);if(!c){i+=1;continue}n.push({relativePath:s.relativePath,symbol:s.symbol,contentHash:c.contentHash,depsDigest:c.depsDigest,payload:JSON.stringify(a)})}return{entries:n,sourceMissing:i,skippedUnsupportedLanguage:o}}var vN="typescript-callees-v1";function wy(e,t){let n=Ee(t);if(n==="typescript")return wn(e,t,vN)?.key??null;let r=EN(e,t);return n==="rust"?he(JSON.stringify({kind:"semantic-callees",language:n,engine:Yn(e.config.projectRoot),positionMapping:"nearby-leaf-v1",depsDigest:r})):r}function IN(e){try{return JSON.parse(e)}catch{return null}}var wN=j("semantic-deps-digest",{clearGroups:["whole-project","source-file"]});function EN(e,t){return wN.get(e,t,()=>{let r=[...ie(e).get(t)??[]].sort().map(i=>`${i}:${ce(e,i,k(e,i))}`);return he(r.join("|"))})}function Q7(e,t,n={}){let r=B(e,t);if(!r)return[];let o=!te(r.symbol)&&!e.isIgnored(r.relativePath)?[{relativePath:r.relativePath,line:r.startLine}]:[],s=Pt(e,r,{semantic:n.semantic,semanticEvidence:H}).map(u=>({relativePath:u.file,line:u.line})),a=DN(e,r),c=new Set,l=[];for(let u of[...o,...s,...a]){let d=`${u.relativePath}:${u.line}`;c.has(d)||(c.add(d),l.push(u))}return l}function DN(e,t){if(!t.relativePath.endsWith(".rb"))return[];let n=PN(t.symbol);if(n.length===0)return[];let r=[];for(let i of N(e,{extensions:[".rb"],includeIgnored:!1})){let o=k(e,i);if(!o)continue;let s=o.split(`
287
+ `);for(let a=0;a<s.length;a++){let c=s[a]??"";n.some(l=>new RegExp(`@${l}\\b|\\b${l}:`).test(c))&&r.push({relativePath:i,line:a})}}return r}function PN(e){let n=(e.split(":").pop()??e).replace(/([a-z0-9])([A-Z])/g,"$1_$2").replace(/[^A-Za-z0-9_]+/g,"_").toLowerCase().replace(/^_+|_+$/g,""),r=n.split("_").filter(Boolean),i=new Set;return n&&i.add(n),r.length>=1&&i.add(r[r.length-1]),r.length>=2&&i.add(r.slice(-2).join("_")),[...i]}import{existsSync as kN}from"fs";import{basename as Ey,isAbsolute as TN,join as FN}from"path";function Oe(e,t){let n=Dy(e,t,{allowMultiple:!1})[0]?.relativePath;return n||_N(e,t)}function $r(e,t){return Dy(e,t,{allowMultiple:!0}).map(n=>n.relativePath)}function _N(e,t){if(!t)return null;let n=t.replace(/\\/g,"/").replace(/^\.\//,""),r=TN(n)&&n.startsWith(e.config.projectRoot)?n.slice(e.config.projectRoot.length).replace(/^\/+/,""):n,i=FN(e.config.projectRoot,r);return kN(i)?r:null}function Dy(e,t,n){let r=Py(t);if(!r)return[];let i=N(e,{includeIgnored:!1}).map(a=>({relativePath:a,score:LN(a,r)})).filter(a=>a.score>0).sort((a,c)=>c.score-a.score||a.relativePath.localeCompare(c.relativePath));if(i.length===0){let a=B(e,t);return!a||e.isIgnored(a.relativePath)?[]:[{relativePath:a.relativePath,score:700}]}let o=i.filter(a=>a.score>=1100);if(o.length>0)return n.allowMultiple?o:[o[0]];let s=i.filter(a=>a.score>=800);return s.length>0?n.allowMultiple?s:[s[0]]:n.allowMultiple?i:[i[0]]}function LN(e,t){let n=Py(e),r=Ey(n),i=Ey(t),o=0;return n===t&&(o+=1200),n.endsWith(`/${t}`)&&(o+=1100),r===i&&(o+=900),n.startsWith(`${t}/`)&&(o+=850),n.includes(t)&&(o+=250),o}function Py(e){return e.trim().replace(/\\/g,"/").replace(/^\.\//,"").replace(/^\/+/,"").replace(/\/+$/,"")}function cee(e,t){let n=$r(e,t),r=Ss(e,n,{sort:!0});if(r.length===0)return[];let i=r.map(a=>({symbol:a.symbol,shortName:a.shortName,startLine:a.startLine,endLine:a.endLine,signature:a.signature,children:[]})),o=new Map;for(let a of i)o.set(a.symbol,a);let s=[];for(let a=0;a<r.length;a++){let c=r[a],l=i[a];if(c.enclosingSymbol&&o.has(c.enclosingSymbol)){o.get(c.enclosingSymbol).children.push(l);continue}let u=null,d=1/0;for(let m of i)if(m!==l&&m.startLine<=l.startLine&&m.endLine>=l.endLine){if(m.startLine===l.startLine&&m.endLine===l.endLine&&!wf(m.symbol,l.symbol))continue;let p=m.endLine-m.startLine;p<d&&(d=p,u=m)}u?u.children.push(l):s.push(l)}return s}import{readFileSync as ky}from"fs";import{extname as NN,join as Ty}from"path";function gee(e,t,n={}){let{context:r=0}=n,i=AN(t);if(i)return ON(e,i.filePath,i.startLine,i.endLine,r);let o=B(e,t);return o?MN(e,o,r):null}function AN(e){let t=e.match(/^(.+\.\w+):(\d+)-(\d+)$/);return t?{filePath:t[1],startLine:parseInt(t[2],10),endLine:parseInt(t[3],10)}:null}function MN(e,t,n){let r=e.get("SELECT language FROM documents WHERE relative_path = ?",t.relativePath),i=Ty(e.config.projectRoot,t.relativePath),o;try{o=ky(i,"utf-8")}catch{return null}let s=o.split(`
288
+ `),a=Math.max(0,t.startLine-n),c=Math.min(s.length-1,t.endLine+n),l=s.slice(a,c+1).join(`
289
+ `);return{symbol:t.symbol,shortName:I(t.symbol),relativePath:t.relativePath,startLine:a,endLine:c,language:r?.language??Fy(t.relativePath),source:l}}function ON(e,t,n,r,i){let o=Oe(e,t);if(!o)return null;let s=e.get("SELECT relative_path, language FROM documents WHERE relative_path = ?",o);if(!s)return null;let a=Ty(e.config.projectRoot,s.relative_path),c;try{c=ky(a,"utf-8")}catch{return null}let l=c.split(`
290
+ `),u=Math.max(0,n-1-i),d=Math.min(l.length-1,r-1+i),m=l.slice(u,d+1).join(`
291
+ `);return{symbol:`${s.relative_path}:${n}-${r}`,shortName:`${s.relative_path}:${n}-${r}`,relativePath:s.relative_path,startLine:u,endLine:d,language:s.language??Fy(s.relative_path),source:m}}function Fy(e){switch(NN(e).toLowerCase()){case".ts":case".tsx":case".mts":case".cts":return"typescript";case".js":case".jsx":case".mjs":case".cjs":return"javascript";case".py":case".pyi":return"python";case".rs":return"rust";case".go":return"go";case".java":return"java";case".kt":case".kts":return"kotlin";case".scala":return"scala";case".rb":return"ruby";case".php":return"php";case".cs":return"csharp";case".vb":return"vb";case".dart":return"dart";case".c":case".h":return"c";case".cc":case".cpp":case".cxx":case".hpp":case".hh":case".hxx":return"cpp";case".vue":return"vue";default:return null}}import{createRequire as jN}from"module";var BN=jN(import.meta.url),er=$N().version;function $N(){for(let e of["../package.json","../../package.json"])try{return BN(e)}catch{}return{version:"0.0.0"}}import{existsSync as ad,statSync as e0}from"fs";import{join as t0}from"path";import{createHash as HN}from"crypto";import{mkdirSync as UN,realpathSync as WN}from"fs";import{homedir as GN}from"os";import{join as tr,resolve as _y}from"path";function zN(e,t){let n=process.env.SCIP_QUERY_CACHE_DIR;if(n)return wu(n);if(t?.dbPath)return wu(_y(e,t.dbPath));let r=sa(e);return wu(r)}function Ly(){let e=process.env.XDG_CACHE_HOME;return tr(e||tr(GN(),".cache"),"scip-query")}function sa(e){let t=_y(e);try{t=WN(t)}catch{}let n=HN("sha256").update(t).digest("hex").slice(0,12);return tr(Ly(),"projects",n)}function zi(e){if(!/^[a-f0-9]{24}$/.test(e))throw new Error(`invalid repository cache identity: ${e}`);return tr(Ly(),"repositories",e)}function Eu(e){return process.env.SCIP_QUERY_SHARED_CACHE!=="0"&&!process.env.SCIP_QUERY_CACHE_DIR&&!process.env.SCIP_QUERY_INDEX_DB&&!e?.dbPath}function Ny(e,t){let n=zN(e,t);return{cacheDir:n,dbPath:tr(n,"index.db"),indexPath:tr(n,"index.scip"),metaPath:tr(n,"meta.json")}}function wu(e){return UN(e,{recursive:!0}),e}import VN from"better-sqlite3";var qN=["node_modules",".git","dist","build","out","coverage","target",".next",".nuxt",".cache",".turbo",".nbb",".cpcache",".shadow-cljs",".scipquery-cache","__pycache__",".venv","venv"],aa=class{db;config;pathFilter;statementCache=new Map;constructor(t,n){this.config=t,this.pathFilter=n??null,this.db=new VN(t.dbPath,{readonly:!0}),this.db.pragma("busy_timeout = 5000"),this.db.pragma("query_only = ON"),this.db.pragma("temp_store = MEMORY"),this.db.pragma("cache_size = -64000"),this.db.pragma("mmap_size = 268435456")}isIgnored(t){return this.pathFilter?.isIgnored(t)??!1}get localSymbolPredicate(){return`(
292
+ EXISTS (
293
+ SELECT 1
294
+ FROM defn_enclosing_ranges local_der
295
+ JOIN documents local_d ON local_der.document_id = local_d.id
296
+ WHERE local_der.symbol_id = gs.id
297
+ ${this.pathExclusionsFor("local_d").trimStart()}
298
+ )
299
+ OR EXISTS (
300
+ SELECT 1
301
+ FROM mentions local_m
302
+ JOIN chunks local_c ON local_m.chunk_id = local_c.id
303
+ JOIN documents local_d ON local_c.document_id = local_d.id
304
+ WHERE local_m.symbol_id = gs.id
305
+ AND local_m.role = 1
306
+ ${this.pathExclusionsFor("local_d").trimStart()}
307
+ )
308
+ )`}get pathExclusions(){return this.pathExclusionsFor("d")}get symbolNoise(){return this.symbolNoiseFor("gs")}pathExclusionsFor(...t){return t.flatMap(n=>qN.flatMap(r=>[`AND ${n}.relative_path NOT LIKE '${r}/%'`,`AND ${n}.relative_path NOT LIKE '%/${r}/%'`])).join(`
309
+ `)}symbolNoiseFor(t){return`AND ${t}.symbol NOT LIKE '%().(%' AND ${t}.symbol NOT LIKE '%typeLiteral%'`}all(t,...n){return this.statement(t).all(...n)}get(t,...n){return this.statement(t).get(...n)}close(){this.statementCache.clear(),this.db.close()}statement(t){let n=this.statementCache.get(t);return n||(n=this.db.prepare(t),this.statementCache.set(t,n)),n}};import KN from"ignore";import{readFileSync as JN,existsSync as Ay,readdirSync as YN}from"fs";import{dirname as Du,isAbsolute as My,join as ca,relative as XN,resolve as QN}from"path";function Oy(e){let t=KN();return ZN(e,t)||t.add(nA),{isIgnored:r=>Pu(t,e,r),filter:r=>r.filter(i=>!Pu(t,e,i))}}function ZN(e,t){let n=new Set,r=(s,a)=>{if(!(n.has(s)||!Ay(s)))try{let c=JN(s,"utf-8");t.add(a?eA(c,a):c),n.add(s)}catch{}},i=Du(e),o=0;for(;i!==Du(i)&&o<5&&(r(ca(i,".gitignore"),""),!Ay(ca(i,".git")));)i=Du(i),o++;return jy(e,"",t,r),n.size>0}function jy(e,t,n,r){let i=t?ca(e,t):e;r(ca(i,".gitignore"),t);let o;try{o=YN(i,{withFileTypes:!0})}catch{return}for(let s of o){if(!s.isDirectory()||s.name===".git")continue;let a=t?`${t}/${s.name}`:s.name;Pu(n,e,`${a}/`)||jy(e,a,n,r)}}function eA(e,t){let n=t.replaceAll("\\","/").replace(/\/+$/,"");return e.split(/\r?\n/).map(r=>tA(r,n)).join(`
310
+ `)}function tA(e,t){let n=e.trimStart();if(!n||n.startsWith("#"))return e;let r=e.slice(0,e.length-n.length),i=n.startsWith("!"),o=i?n.slice(1):n;if(!o||o.startsWith("#"))return e;let s=o.startsWith("/"),a=s?o.slice(1):o,u=(a.endsWith("/")?a.slice(0,-1):a).includes("/")||s?`${t}/${a}`:`${t}/**/${a}`;return`${r}${i?"!":""}${u}`}var nA=`
311
+ # Dependencies
312
+ node_modules/
313
+ vendor/
314
+ .bundle/
315
+
316
+ # Build output
317
+ dist/
318
+ build/
319
+ out/
320
+ target/
321
+ bin/
322
+ obj/
323
+
324
+ # Python
325
+ __pycache__/
326
+ *.pyc
327
+ *.pyo
328
+ .venv/
329
+ venv/
330
+ .env/
331
+ env/
332
+ *.egg-info/
333
+
334
+ # Rust
335
+ target/
336
+
337
+ # Java / Kotlin / Scala
338
+ *.class
339
+ .gradle/
340
+ .mvn/
341
+
342
+ # C# / .NET
343
+ bin/
344
+ obj/
345
+ packages/
346
+
347
+ # Go
348
+ vendor/
349
+
350
+ # Dart
351
+ .dart_tool/
352
+ build/
353
+
354
+ # PHP
355
+ vendor/
356
+
357
+ # IDE / OS
358
+ .idea/
359
+ .vscode/
360
+ *.swp
361
+ *.swo
362
+ .DS_Store
363
+ Thumbs.db
364
+
365
+ # Type definitions (often noise in queries)
366
+ *.d.ts
367
+ `;function Pu(e,t,n){let r=rA(t,n);if(!r)return!1;try{return e.ignores(r)}catch{return!1}}function rA(e,t){if(!t||t===".")return null;if(!My(t)&&!t.startsWith(".."))return t.replaceAll("\\","/");let n=My(t)?t:QN(e,t),r=XN(e,n).replaceAll("\\","/");return!r||r==="."||r.startsWith("..")?null:r}import{readFileSync as iA,writeFileSync as ku,existsSync as en}from"fs";import{isAbsolute as By,join as nr,relative as $y,resolve as Hy}from"path";var Hr=".scipquery.json",Gy=250,zy=0,Vy=10*6e4,oA={enabled:!1,debounceMs:Gy,cooldownMs:zy,gitPollMs:2e3,idleTimeoutMs:Vy,autoRefresh:!0,ignore:[]},qy=["typescript","javascript","java","scala","kotlin","rust","python","ruby","go","cpp","c","csharp","vb","dart","php","clojure"],sA=new Set(["languages","indexerConcurrency","watch","hooks","indexer","dbPath","entryRoots","semantic","suppressions","declaredCouplings","locality","architecture","coverageContracts","docs"]),aA=new Set(["enabled","debounceMs","cooldownMs","gitPollMs","idleTimeoutMs","autoRefresh","ignore"]),cA=new Set(["router"]),lA=new Set(["pathPrefixes","files","symbolPatterns","qualifiedVars"]),uA=new Set(["typescript","rust"]),dA=new Set(["tsconfigs"]),mA=new Set(["rustAnalyzerPath"]),Uy=new Set(qy),fA=new Set(["pnpmWorkspaces","projectMode","projects","configPath"]),pA=new Set(["architecturalBoundarySegments"]),gA=new Set(["boundaries","allowedDependencies","requireCompletePolicy","requireAcyclic","requireResolvedBoundaries","requireMinimalPolicy","maxBoundaryFanOut","maxBoundaryFiles","testPaths"]),hA=new Set(["name","paths","subUnits","maxFiles"]),yA=new Set(["snapshotPaths"]),bA=new Set(["name","files","reason"]),SA=new Set(["id","check","file","reason","expiresAt","createdAt"]),CA=new Set(["name","file","keys","mustEqual","allowExtra"]),xA=new Set(["type","identifier","marker"]),RA=new Set(["type","path","pattern"]),vA=new Set(["object-literal-keys","string-array","markdown-list"]),IA=new Set(["top-level-dirs","file-glob","registered-commands","builtin-skills"]);function Ky(e){let t=nr(e,Hr);if(!en(t))return{};try{let n=iA(t,"utf-8");return JSON.parse(n)}catch(n){let r=n instanceof Error?n.message:String(n);throw n instanceof SyntaxError?new Error(`invalid ${Hr} at ${t}: ${r}`,{cause:n}):new Error(`unable to read ${Hr} at ${t}: ${r}`,{cause:n})}}function _ee(e,t={}){let n=[];kA(e,n);let r=new Set(qy);for(let[c,l]of(e.languages??[]).entries())r.has(l)||n.push({level:"error",path:`languages[${c}]`,message:`Unsupported language: ${l}`});e.indexerConcurrency!==void 0&&(!Number.isInteger(e.indexerConcurrency)||e.indexerConcurrency<=0)&&n.push({level:"error",path:"indexerConcurrency",message:"Must be a positive integer."}),e.watch?.debounceMs!==void 0&&e.watch.debounceMs<=0&&n.push({level:"error",path:"watch.debounceMs",message:"Must be greater than 0."}),e.watch?.cooldownMs!==void 0&&(!Number.isInteger(e.watch.cooldownMs)||e.watch.cooldownMs<0)&&n.push({level:"error",path:"watch.cooldownMs",message:"Must be a non-negative integer; 0 disables cooldown spacing."}),e.watch?.gitPollMs!==void 0&&e.watch.gitPollMs<=0&&n.push({level:"error",path:"watch.gitPollMs",message:"Must be greater than 0."}),e.watch?.idleTimeoutMs!==void 0&&(!Number.isInteger(e.watch.idleTimeoutMs)||e.watch.idleTimeoutMs<0)&&n.push({level:"error",path:"watch.idleTimeoutMs",message:"Must be a non-negative integer; 0 disables idle shutdown."}),e.watch?.autoRefresh!==void 0&&typeof e.watch.autoRefresh!="boolean"&&n.push({level:"error",path:"watch.autoRefresh",message:"Must be a boolean."}),e.hooks?.router!==void 0&&e.hooks.router!=="off"&&e.hooks.router!=="single"&&n.push({level:"error",path:"hooks.router",message:'Must be "off" or "single".'});let i=e.indexer?.typescript;if(i?.projectMode!==void 0&&i.projectMode!=="single"&&i.projectMode!=="workspace"&&n.push({level:"error",path:"indexer.typescript.projectMode",message:'Must be "single" or "workspace".'}),i?.projects!==void 0)if(!Array.isArray(i.projects))n.push({level:"error",path:"indexer.typescript.projects",message:"Must be an array."});else for(let[c,l]of i.projects.entries()){let u=`indexer.typescript.projects[${c}]`;if(typeof l!="string"||l.trim()==="")n.push({level:"error",path:u,message:"Project path must be a non-empty string."});else if(t.projectRoot){let d=Hy(t.projectRoot,l),m=$y(t.projectRoot,d);m.startsWith("..")||By(m)?n.push({level:"error",path:u,message:"Project path must stay inside the project root."}):en(d)||n.push({level:"warning",path:u,message:`TypeScript project path does not exist: ${l}`})}}i?.projectMode==="workspace"&&i.pnpmWorkspaces===!0&&n.push({level:"warning",path:"indexer.typescript.pnpmWorkspaces",message:'Ignored when projectMode is "workspace"; explicit TypeScript projects are indexed directly.'});let o=e.semantic?.rust;o?.rustAnalyzerPath!==void 0&&(typeof o.rustAnalyzerPath!="string"||o.rustAnalyzerPath.trim()==="")&&n.push({level:"error",path:"semantic.rust.rustAnalyzerPath",message:"Rust analyzer path must be a non-empty string."});let s=e.indexer?.clojure;if(s?.configPath!==void 0){let c="indexer.clojure.configPath";if(typeof s.configPath!="string"||s.configPath.trim()==="")n.push({level:"error",path:c,message:"Config path must be a non-empty string."});else if(t.projectRoot){let l=Hy(t.projectRoot,s.configPath),u=$y(t.projectRoot,l);u.startsWith("..")||By(u)?n.push({level:"error",path:c,message:"Config path must stay inside the project root."}):en(l)||n.push({level:"warning",path:c,message:`Clojure indexer config path does not exist: ${s.configPath}`})}}if(e.locality!==void 0)if(!et(e.locality))n.push({level:"error",path:"locality",message:"Must be an object."});else{let c=e.locality.architecturalBoundarySegments;if(c!==void 0)if(!Array.isArray(c))n.push({level:"error",path:"locality.architecturalBoundarySegments",message:"Must be an array."});else for(let[l,u]of c.entries()){let d=`locality.architecturalBoundarySegments[${l}]`;typeof u!="string"||u.trim()===""?n.push({level:"error",path:d,message:"Boundary segment must be a non-empty string."}):(u.includes("/")||u.includes("\\"))&&n.push({level:"error",path:d,message:"Boundary segment must be a single folder name, not a path."})}}if(wA(e,n),e.declaredCouplings!==void 0&&!Array.isArray(e.declaredCouplings))n.push({level:"error",path:"declaredCouplings",message:"Must be an array."});else for(let[c,l]of(e.declaredCouplings??[]).entries()){let u=`declaredCouplings[${c}]`;if((!l.name||l.name.trim()==="")&&n.push({level:"error",path:`${u}.name`,message:"Declared coupling name is required."}),!Array.isArray(l.files)||l.files.length<2)n.push({level:"error",path:`${u}.files`,message:"Declared coupling needs at least two files."});else for(let[d,m]of l.files.entries())!m||m.trim()===""?n.push({level:"error",path:`${u}.files[${d}]`,message:"Declared coupling file path is required."}):t.projectRoot&&!en(nr(t.projectRoot,m))&&n.push({level:"warning",path:`${u}.files[${d}]`,message:`Declared coupling file does not exist: ${m}`});l.reason!==void 0&&l.reason.trim()===""&&n.push({level:"error",path:`${u}.reason`,message:"Declared coupling reason cannot be blank."})}let a=t.now??new Date;e.suppressions!==void 0&&!Array.isArray(e.suppressions)&&n.push({level:"error",path:"suppressions",message:"Must be an array."});for(let[c,l]of(Array.isArray(e.suppressions)?e.suppressions:[]).entries()){let u=`suppressions[${c}]`;if(!et(l)){n.push({level:"error",path:u,message:"Suppression must be an object."});continue}if((!l.reason||l.reason.trim()==="")&&n.push({level:"error",path:`${u}.reason`,message:"Suppression reason is required."}),l.id!==void 0&&l.id.trim()===""&&n.push({level:"error",path:`${u}.id`,message:"Suppression id cannot be blank."}),l.check!==void 0&&l.check.trim()===""&&n.push({level:"error",path:`${u}.check`,message:"Suppression check cannot be blank."}),!l.id&&(!l.check||!l.file)?n.push({level:"error",path:u,message:"Suppression must include id or both check and file."}):!l.id&&l.check&&l.file&&n.push({level:"warning",path:u,message:"Check+file suppressions waive every matching finding in that file; prefer a stable id when available."}),l.file!==void 0&&(l.file.trim()===""?n.push({level:"error",path:`${u}.file`,message:"Suppression file path cannot be blank."}):t.projectRoot&&!en(nr(t.projectRoot,l.file))&&n.push({level:"warning",path:`${u}.file`,message:`Suppression file does not exist: ${l.file}`})),l.expiresAt){let d=Date.parse(l.expiresAt);Number.isNaN(d)?n.push({level:"error",path:`${u}.expiresAt`,message:"Must be an ISO date string."}):d<=a.getTime()&&n.push({level:"warning",path:`${u}.expiresAt`,message:"Suppression has expired."})}}return PA(e,n,t),DA(e,n),n}function wA(e,t){if(e.architecture===void 0)return;if(!et(e.architecture)){t.push({level:"error",path:"architecture",message:"Must be an object."});return}let n=e.architecture.boundaries;if(!Array.isArray(n)||n.length===0){t.push({level:"error",path:"architecture.boundaries",message:"Must be a non-empty array."});return}let r=new Set,i=new Set;for(let[a,c]of n.entries()){let l=`architecture.boundaries[${a}]`;if(!et(c)){t.push({level:"error",path:l,message:"Architecture boundary must be an object."});continue}let u=c.name;typeof u!="string"||u.trim()===""?t.push({level:"error",path:`${l}.name`,message:"Boundary name is required."}):r.has(u)?t.push({level:"error",path:`${l}.name`,message:`Duplicate boundary name: ${u}`}):r.add(u);let d=c.subUnits;d!==void 0&&d!=="directory"&&d!=="file"&&t.push({level:"error",path:`${l}.subUnits`,message:"Must be 'directory' or 'file'."});let m=c.maxFiles;m!==void 0&&(typeof m!="number"||!Number.isInteger(m)||m<0)&&t.push({level:"error",path:`${l}.maxFiles`,message:"Must be a non-negative integer."});let f=c.paths;if(!Array.isArray(f)||f.length===0){t.push({level:"error",path:`${l}.paths`,message:"Boundary paths must be a non-empty array."});continue}for(let[p,g]of f.entries()){let y=`${l}.paths[${p}]`;if(typeof g!="string"||g.trim()===""){t.push({level:"error",path:y,message:"Boundary path must be a non-empty string."});continue}EA(g)||t.push({level:"error",path:y,message:"Boundary path must be project-relative and may use only one trailing /* or /** glob."}),i.has(g)?t.push({level:"error",path:y,message:`Duplicate boundary path: ${g}`}):i.add(g)}}let o=e.architecture.allowedDependencies;if(o!==void 0&&!et(o))t.push({level:"error",path:"architecture.allowedDependencies",message:"Must be an object keyed by boundary name."});else if(et(o))for(let[a,c]of Object.entries(o)){let l=`architecture.allowedDependencies.${a}`;if(r.has(a)||t.push({level:"error",path:l,message:`Unknown source boundary: ${a}`}),!Array.isArray(c)){t.push({level:"error",path:l,message:"Dependency row must be an array."});continue}let u=new Set;for(let[d,m]of c.entries()){let f=`${l}[${d}]`;typeof m!="string"||m.trim()===""?t.push({level:"error",path:f,message:"Target boundary name is required."}):r.has(m)?u.has(m)?t.push({level:"error",path:f,message:`Duplicate target boundary: ${m}`}):u.add(m):t.push({level:"error",path:f,message:`Unknown target boundary: ${m}`})}}e.architecture.requireAcyclic!==void 0&&typeof e.architecture.requireAcyclic!="boolean"&&t.push({level:"error",path:"architecture.requireAcyclic",message:"Must be a boolean."});for(let a of["requireResolvedBoundaries","requireMinimalPolicy"])e.architecture[a]!==void 0&&typeof e.architecture[a]!="boolean"&&t.push({level:"error",path:`architecture.${a}`,message:"Must be a boolean."});for(let a of["maxBoundaryFanOut","maxBoundaryFiles"]){let c=e.architecture[a];c!==void 0&&(typeof c!="number"||!Number.isInteger(c)||c<0)&&t.push({level:"error",path:`architecture.${a}`,message:"Must be a non-negative integer."})}let s=e.architecture.testPaths;if(s!==void 0&&(!Array.isArray(s)||s.some(a=>typeof a!="string"))&&t.push({level:"error",path:"architecture.testPaths",message:"Must be an array of strings."}),e.architecture.requireCompletePolicy!==void 0&&typeof e.architecture.requireCompletePolicy!="boolean")t.push({level:"error",path:"architecture.requireCompletePolicy",message:"Must be a boolean."});else if(e.architecture.requireCompletePolicy===!0){let a=et(o)?o:{};for(let c of[...r].sort())Object.hasOwn(a,c)||t.push({level:"error",path:`architecture.allowedDependencies.${c}`,message:"A dependency row is required by architecture.requireCompletePolicy."})}}function EA(e){let t=e.replace(/\\/g,"/");if(t.startsWith("/")||t==="."||t===".."||t.split("/").includes(".."))return!1;let n=t.replace(/\/\*\*?$/,"");return n.length>0&&!/[*?[\]]/.test(n)}function DA(e,t){let n=e.docs?.snapshotPaths;if(n!==void 0){if(!Array.isArray(n)){t.push({level:"error",path:"docs.snapshotPaths",message:"Must be an array."});return}for(let[r,i]of n.entries())(typeof i!="string"||i.trim()==="")&&t.push({level:"error",path:`docs.snapshotPaths[${r}]`,message:"Snapshot path glob must be a non-empty string."})}}function PA(e,t,n){if(e.coverageContracts!==void 0){if(!Array.isArray(e.coverageContracts)){t.push({level:"error",path:"coverageContracts",message:"Must be an array."});return}for(let[r,i]of e.coverageContracts.entries()){let o=`coverageContracts[${r}]`;if(!et(i)){t.push({level:"error",path:o,message:"Coverage contract must be an object."});continue}(typeof i.name!="string"||i.name.trim()==="")&&t.push({level:"error",path:`${o}.name`,message:"Coverage contract name is required."}),typeof i.file!="string"||i.file.trim()===""?t.push({level:"error",path:`${o}.file`,message:"Coverage contract file is required."}):n.projectRoot&&!en(nr(n.projectRoot,i.file))&&t.push({level:"warning",path:`${o}.file`,message:`Coverage contract file does not exist: ${i.file}`}),Wy(t,i.keys,`${o}.keys`,vA,"Unknown coverage-contract key extractor type."),Wy(t,i.mustEqual,`${o}.mustEqual`,IA,"Unknown coverage-contract ground-truth source type."),i.allowExtra!==void 0&&typeof i.allowExtra!="boolean"&&t.push({level:"error",path:`${o}.allowExtra`,message:"Must be a boolean."})}}}function Wy(e,t,n,r,i){if(!et(t)){e.push({level:"error",path:n,message:'Must be an object with a "type" field.'});return}if(typeof t.type!="string"||!r.has(t.type)){e.push({level:"error",path:`${n}.type`,message:`${i} Got: ${String(t.type)}`});return}let o={"object-literal-keys":["identifier"],"string-array":["identifier"],"markdown-list":["marker"],"top-level-dirs":["path"],"file-glob":["pattern"],"registered-commands":[],"builtin-skills":[]};for(let s of o[t.type]??[])(typeof t[s]!="string"||t[s].length===0)&&e.push({level:"error",path:`${n}.${s}`,message:`"${t.type}" requires a non-empty string "${s}".`})}function Lee(e){return{...oA,...e.watch}}function Nee(e,t){let n=nr(e,Hr);return en(n)||ku(n,JSON.stringify({languages:t,watch:{enabled:!0,debounceMs:Gy,cooldownMs:zy,gitPollMs:2e3,idleTimeoutMs:Vy,autoRefresh:!0}},null,2)+`
368
+ `),n}function Aee(e,t,n){let r=nr(e,Hr),i={...t,languages:[...n]},o=!en(r)||JSON.stringify(i)!==JSON.stringify(t);return o&&ku(r,JSON.stringify(i,null,2)+`
369
+ `),{configPath:r,config:i,changed:o}}function Mee(e,t,n){let r=nr(e,Hr),i={...t,watch:{...t.watch,enabled:n,...n&&t.watch?.autoRefresh===void 0?{autoRefresh:!0}:{}}},o=!en(r)||JSON.stringify(i)!==JSON.stringify(t);return o&&ku(r,JSON.stringify(i,null,2)+`
370
+ `),{configPath:r,config:i,changed:o}}function kA(e,t){if(!et(e))return;let n=e;if(Re(t,n,"",sA),Re(t,n.watch,"watch",aA),Re(t,n.hooks,"hooks",cA),Re(t,n.entryRoots,"entryRoots",lA),Re(t,n.semantic,"semantic",uA),Re(t,n.semantic?.typescript,"semantic.typescript",dA),Re(t,n.semantic?.rust,"semantic.rust",mA),Re(t,n.locality,"locality",pA),Re(t,n.architecture,"architecture",gA),Re(t,n.docs,"docs",yA),Array.isArray(n.architecture?.boundaries))for(let[r,i]of n.architecture.boundaries.entries())Re(t,i,`architecture.boundaries[${r}]`,hA);if(et(n.indexer)){Re(t,n.indexer,"indexer",Uy);for(let[r,i]of Object.entries(n.indexer))Uy.has(r)&&Re(t,i,`indexer.${r}`,fA)}if(Array.isArray(n.declaredCouplings))for(let[r,i]of n.declaredCouplings.entries())Re(t,i,`declaredCouplings[${r}]`,bA);if(Array.isArray(n.suppressions))for(let[r,i]of n.suppressions.entries())Re(t,i,`suppressions[${r}]`,SA);if(Array.isArray(n.coverageContracts))for(let[r,i]of n.coverageContracts.entries()){let o=`coverageContracts[${r}]`;Re(t,i,o,CA),et(i)&&(Re(t,i.keys,`${o}.keys`,xA),Re(t,i.mustEqual,`${o}.mustEqual`,RA))}}function Re(e,t,n,r){if(et(t))for(let i of Object.keys(t))r.has(i)||e.push({level:"warning",path:n?`${n}.${i}`:i,message:"Unknown config key."})}function et(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}import{existsSync as ab,readFileSync as KA}from"fs";import{execFileSync as TA}from"child_process";import{existsSync as FA,readdirSync as Yy}from"fs";import{extname as Xy,join as Qy}from"path";var Zy=new Set([".git",".hg",".svn",".idea",".vscode","node_modules","vendor","dist","build","target","bin","obj",".dart_tool",".gradle",".next",".venv","venv","__pycache__"]),_A=[{language:"typescript",files:["tsconfig.json","tsconfig.base.json"],extensions:[".ts",".tsx",".mts",".cts"]},{language:"rust",files:["Cargo.toml"],extensions:[".rs"]},{language:"go",files:["go.mod"],extensions:[".go"]},{language:"java",files:["pom.xml","build.gradle","build.gradle.kts"],extensions:[".java"]},{language:"kotlin",files:["build.gradle.kts"],extensions:[".kt",".kts"]},{language:"scala",files:["build.sbt"],extensions:[".scala"]},{language:"clojure",files:["deps.edn","project.clj","bb.edn","shadow-cljs.edn"],extensions:[".clj",".cljs",".cljc"]},{language:"python",files:["pyproject.toml","setup.py","setup.cfg","Pipfile"],extensions:[".py",".pyi"]},{language:"ruby",files:["Gemfile"],extensions:[".rb"]},{language:"cpp",files:["compile_commands.json","CMakeLists.txt","Makefile"],extensions:[".cc",".cpp",".cxx",".hpp",".hh",".hxx"]},{language:"c",files:["compile_commands.json","CMakeLists.txt","Makefile"],extensions:[".c",".h"]},{language:"csharp",globs:["*.csproj","*.sln"],extensions:[".cs"]},{language:"vb",globs:["*.vbproj"],extensions:[".vb"]},{language:"dart",files:["pubspec.yaml"],extensions:[".dart"]},{language:"php",files:["composer.json"],extensions:[".php"]},{language:"javascript",files:["package.json"],extensions:[".js",".jsx",".mjs",".cjs"]}];function Vi(e){let t=[],n=LA(e),r=OA(e);for(let i of _A){if(NA(e,i.files)){t.push(i.language);continue}if(AA(n,i.globs)){t.push(i.language);continue}BA(r,i.extensions)&&t.push(i.language)}return t.includes("typescript")&&Jy(t,"javascript"),t.includes("cpp")&&!r.has(".c")&&Jy(t,"c"),t}function LA(e){try{return Yy(e)}catch{return[]}}function NA(e,t){return t?.length?t.some(n=>FA(Qy(e,n))):!1}function AA(e,t){return t?.length?e.some(n=>t.some(r=>MA(n,r))):!1}function MA(e,t){if(t==="*")return!0;if(!t.includes("*"))return e===t;let[n,r]=t.split("*");return e.startsWith(n??"")&&e.endsWith(r??"")}function OA(e){let t=jA(e);if(t)return t;let n=new Set,r=[e];for(;r.length>0;){let i=r.pop();if(!i)continue;let o;try{o=Yy(i,{withFileTypes:!0})}catch{continue}for(let s of o){if(s.name.startsWith(".")&&!s.name.endsWith("proj")&&!s.name.endsWith("sln")&&s.isDirectory())continue;let a=Qy(i,s.name);if(s.isDirectory()){Zy.has(s.name)||r.push(a);continue}let c=Xy(s.name).toLowerCase();c&&n.add(c)}}return n}function jA(e){try{let t=TA("git",["-C",e,"ls-files","-co","--exclude-standard","--","."],{encoding:"utf-8",maxBuffer:26214400,stdio:["ignore","pipe","ignore"]}),n=new Set;for(let r of t.split(`
371
+ `)){if(!r||r.split("/").some(o=>Zy.has(o)))continue;let i=Xy(r).toLowerCase();i&&n.add(i)}return n}catch{return null}}function BA(e,t){return t?.length?t.some(n=>e.has(n)):!1}function Jy(e,t){let n=e.indexOf(t);n!==-1&&e.splice(n,1)}import{createHash as $A}from"crypto";import{copyFileSync as eb,existsSync as Dn,linkSync as HA,mkdirSync as tb,readFileSync as ib,readdirSync as nb,renameSync as Fu,rmSync as ua,statSync as UA}from"fs";import{basename as la,dirname as qi,join as Ge,relative as rb}from"path";var Ur=1,da=".scipquery-generations";function ob(e){let t=ma(e.outputDb),n=WA(e,t);e.onStage?.("after-recovery-retained"),e.preserveOutputScip||Tu(e.tempOutputScip,e.outputScip),e.onStage?.("after-scip-handoff"),Tu(e.tempOutputDb,e.outputDb),e.onStage?.("after-database-handoff"),Tu(e.tempMetaPath,e.metaPath),e.onStage?.("after-metadata-handoff");let r=fa(e.metaPath,e.outputDb),i={version:Ur,currentGeneration:r,...n?{previousGeneration:n}:{},...e.publication?{publication:e.publication}:{},publishedAt:(e.now??(()=>new Date))().toISOString()};return Fe(Ge(t,"state.json"),i,{spacing:2,trailingNewline:!0}),{currentGeneration:r,...n?{previousGeneration:n}:{}}}function sb(e){try{let t=JSON.parse(ib(Ge(ma(e),"state.json"),"utf8"));return t.version!==Ur||typeof t.currentGeneration!="string"||!t.currentGeneration||typeof t.publishedAt!="string"||!Number.isFinite(Date.parse(t.publishedAt))||!VA(t.previousGeneration)||!qA(t.publication)?null:t}catch{return null}}function Vee(e,t,n=()=>new Date){if(!Dn(e)||!Dn(t))throw new Error("metadata-only generation refresh requires stable database and metadata files");let r=sb(e),i={version:Ur,currentGeneration:fa(t,e),...r?.previousGeneration?{previousGeneration:r.previousGeneration}:{},...r?.publication?{publication:r.publication}:{},publishedAt:n().toISOString()};return Fe(Ge(ma(e),"state.json"),i,{spacing:2,trailingNewline:!0}),i}function Ki(e,t=Ge(qi(e),"meta.json")){let n=Ge(ma(e),"state.json");if(!Dn(n))return{state:"legacy",statePath:n};let r=sb(e);if(!r)return{state:"invalid",statePath:n,reason:"generation state is malformed"};try{let i=fa(t,e),o=r.currentGeneration===i,s=r.previousGeneration?Dn(Ge(qi(e),r.previousGeneration.databasePath)):!0;return!o||!s?{state:"drifted",statePath:n,currentMatches:o,recoveryExists:s,generation:r,reason:o?"retained recovery database is missing":"stable database or metadata no longer matches the published generation"}:{state:"current",statePath:n,currentMatches:o,recoveryExists:s,generation:r}}catch(i){return{state:"drifted",statePath:n,currentMatches:!1,recoveryExists:!1,generation:r,reason:i instanceof Error?i.message:String(i)}}}function ma(e){return Ge(qi(e),da)}function WA(e,t){if(!Dn(e.outputDb))return;let n=fa(e.metaPath,e.outputDb),r=Ge(t,n),i=Ge(r,la(e.outputDb)),o=Dn(e.metaPath)?Ge(r,la(e.metaPath)):void 0;if(!Dn(i)){let s=`${r}.${process.pid}.${Date.now()}.tmp`;ua(s,{recursive:!0,force:!0}),tb(s,{recursive:!0});let a=Ge(s,la(e.outputDb));try{HA(e.outputDb,a)}catch{eb(e.outputDb,a)}o&&eb(e.metaPath,Ge(s,la(e.metaPath))),tb(t,{recursive:!0}),Fu(s,r)}return GA(t,n),{generationIdentity:n,databasePath:rb(qi(e.outputDb),i),...o?{metadataPath:rb(qi(e.outputDb),o)}:{}}}function GA(e,t){for(let n of nb(e,{withFileTypes:!0}))!n.isDirectory()||n.name===t||n.name.endsWith(".tmp")||ua(Ge(e,n.name),{recursive:!0,force:!0});for(let n of nb(e,{withFileTypes:!0}))n.isDirectory()&&n.name.endsWith(".tmp")&&ua(Ge(e,n.name),{recursive:!0,force:!0})}function fa(e,t){let n=$A("sha256").update(`sqlite-generation-v${Ur}\0`);Dn(e)&&n.update(zA(ib(e,"utf8")));let r=UA(t);return n.update(`\0${r.size}`),n.digest("hex")}function zA(e){try{let t=JSON.parse(e);if((t.version===2||t.version===3)&&t.status==="complete"&&typeof t.updatedAt=="string"&&t.fingerprint!==void 0)return JSON.stringify({version:t.version,status:t.status,updatedAt:t.updatedAt,fingerprint:t.fingerprint,indexedLanguages:t.indexedLanguages,scipCompanion:t.scipCompanion})}catch{}return e}function Tu(e,t){ua(`${t}.tmp-replace`,{force:!0}),Fu(e,`${t}.tmp-replace`),Fu(`${t}.tmp-replace`,t)}function VA(e){if(e===void 0)return!0;if(!e||typeof e!="object")return!1;let t=e;return typeof t.generationIdentity=="string"&&!!t.generationIdentity&&typeof t.databasePath=="string"&&!!t.databasePath&&(t.metadataPath===void 0||typeof t.metadataPath=="string"&&!!t.metadataPath)}function qA(e){if(e===void 0)return!0;if(!e||typeof e!="object")return!1;let t=e,n=[t.converterDurationMs,t.affectedDocumentCount,t.changedDocumentCount,t.producerDurationMs,t.materializationDurationMs,t.patchDurationMs].filter(r=>r!==void 0);return(t.mode==="incremental"||t.mode==="full")&&t.validation==="passed"&&t.converterDurationMs!==void 0&&n.every(r=>typeof r=="number"&&Number.isFinite(r)&&r>=0)&&(t.scipCompanion===void 0||t.scipCompanion==="current"||t.scipCompanion==="deferred")&&(t.typescriptOverlayGeneration===void 0||typeof t.typescriptOverlayGeneration=="string"&&!!t.typescriptOverlayGeneration)&&(t.scipCompanion!=="deferred"||!!t.typescriptOverlayGeneration)&&(t.fallbackReason===void 0||typeof t.fallbackReason=="string")}function cb(e,t,n){let r=new Date().toISOString();if(!ab(n.dbPath))return{state:"missing",checkedAt:r,metaPath:n.metaPath,reason:"No SQLite index database exists.",remedy:"Run: scip-query reindex"};if(!ab(n.metaPath))return{state:"unknown",checkedAt:r,metaPath:n.metaPath,reason:"No reindex metadata file exists next to the SQLite index.",remedy:"Run: scip-query reindex"};try{let i=JSON.parse(KA(n.metaPath,"utf-8")),o=t.languages??Vi(e),s=JA(e,o,t),a=Array.isArray(i.indexedLanguages)?[...i.indexedLanguages].sort():[],c=(i.version===2||i.version===3)&&i.status==="complete"&&JSON.stringify(i.fingerprint)===JSON.stringify(s)&&JSON.stringify(a)===JSON.stringify(s.languages),l=Ki(n.dbPath,n.metaPath),u=l.state==="invalid"||l.state==="drifted",d=c&&!u;return{state:d?"fresh":"stale",checkedAt:r,metaPath:n.metaPath,updatedAt:i.updatedAt,lastRefresh:i.lastRefresh,reason:u?`SQLite generation requires repair: ${l.reason}`:c?"Index metadata fingerprint matches current source files.":"Index metadata fingerprint differs from current source files.",remedy:d?void 0:"Run: scip-query reindex"}}catch(i){return{state:"unknown",checkedAt:r,metaPath:n.metaPath,reason:`Could not read reindex metadata: ${i instanceof Error?i.message:String(i)}`,remedy:"Run: scip-query reindex"}}}function JA(e,t,n){return Ti(e,t,{pnpmWorkspaces:n.indexer?.typescript?.pnpmWorkspaces,typescriptProjectMode:n.indexer?.typescript?.projectMode,typescriptProjects:n.indexer?.typescript?.projects,clojureConfigPath:n.indexer?.clojure?.configPath})}import{createHash as qb,randomUUID as Zu}from"crypto";import{closeSync as Kb,constants as jM,copyFileSync as Wb,existsSync as kn,lstatSync as BM,mkdirSync as tn,mkdtempSync as Jb,openSync as Yb,readdirSync as $M,readFileSync as tt,realpathSync as HM,renameSync as or,rmSync as Pn,statSync as UM,unlinkSync as Ju,writeFileSync as Xb}from"fs";import{dirname as Qb,join as A,resolve as Ct}from"path";import{setTimeout as WM}from"timers/promises";import{pathToFileURL as Gb}from"url";import{deserializeSCIP as Zb}from"@c4312/scip";import GM from"better-sqlite3";import{randomUUID as lb}from"crypto";import{closeSync as ub,mkdirSync as YA,openSync as db,readFileSync as mb,unlinkSync as fb,writeFileSync as pb}from"fs";import{dirname as XA,join as QA}from"path";function _u(e,t={}){return Lu(QA(e,"gc.lock"),t)}function Lu(e,t={}){let n=t.waitMs??0,r=t.pollMs??10,i=t.now??Date.now,o=Date.now()+n;YA(XA(e),{recursive:!0});do{let s=lb();try{let a=db(e,"wx");try{let c={version:1,pid:process.pid,token:s,startedAt:new Date(i()).toISOString()};pb(a,`${JSON.stringify(c)}
372
+ `)}finally{ub(a)}return{release:()=>hb(e,s)}}catch(a){if(a.code!=="EEXIST")return null;let c=gb(e);if(c&&(c.pid===void 0||!dt(c.pid))){ZA(e,c);continue}if(Date.now()>=o)return null;eM(Math.min(r,Math.max(1,o-Date.now())))}}while(Date.now()<=o);return null}function gb(e){try{let t=mb(e,"utf8"),n=JSON.parse(t),r=typeof n.pid=="number"&&Number.isSafeInteger(n.pid)&&n.pid>0?n.pid:void 0;return{raw:t,...r===void 0?{}:{pid:r}}}catch{return null}}function ZA(e,t){let n=`${e}.reclaim`,r=lb(),i;try{i=db(n,"wx")}catch{return!1}try{pb(i,`${JSON.stringify({version:1,pid:process.pid,token:r,startedAt:new Date().toISOString()})}
373
+ `)}finally{ub(i)}try{let o=gb(e);return!o||o.raw!==t.raw||o.pid!==void 0&&dt(o.pid)?!1:(fb(e),!0)}catch{return!1}finally{hb(n,r)}}function hb(e,t){try{let n=JSON.parse(mb(e,"utf8"));n.pid===process.pid&&n.token===t&&fb(e)}catch{}}function eM(e){let t=new Int32Array(new SharedArrayBuffer(Int32Array.BYTES_PER_ELEMENT));Atomics.wait(t,0,0,e)}import{lstatSync as gM,readdirSync as hM}from"fs";import{join as yM,relative as bM,resolve as Uu,sep as SM}from"path";import{createHash as tM}from"crypto";import{existsSync as Au,mkdirSync as nM,readFileSync as pa,readdirSync as ste,renameSync as rM,rmSync as ate,writeFileSync as iM}from"fs";import{join as Wr}from"path";import{create as bb,fromBinary as Sb,toBinary as oM}from"@bufbuild/protobuf";import{deserializeSCIP as ga,DocumentSchema as Mu,IndexSchema as Cb,serializeSCIP as xb}from"@c4312/scip";var ha=1,Ji="typescript-scip-fragments";function mte(e){if(e.length===0)throw new Error("affected TypeScript mini index requires documents");let t=new Set,n=[];for(let o of e){let s=rr(o.relativePath);if(t.has(s))throw new Error(`duplicate TypeScript fragment replacement: ${s}`);if(t.add(s),o.bytes===null)throw new Error(`affected TypeScript mini index cannot contain a deleted document: ${s}`);let a=Sb(Mu,o.bytes);if(a.relativePath!==s)throw new Error(`TypeScript fragment path mismatch: expected ${s}, got ${a.relativePath}`);n.push(a)}let r=xb(bb(Cb,{documents:n,externalSymbols:[]})),i=ga(r);if(i.documents.length!==n.length||i.externalSymbols.length!==0)throw new Error("affected TypeScript SCIP index failed structural verification");return r}function ya(e){let t=Wr(e,Ji);return{rootDir:t,blobDir:Wr(t,"blobs"),generationDir:Wr(t,"generations")}}function sM(e){let t=ga(e.indexBytes);Tb(t.metadata,Fb(e)),kb(t.externalSymbols);let n=new Set,r=[];for(let o of t.documents){let s=rr(o.relativePath);if(n.has(s))throw new Error(`duplicate TypeScript SCIP document path: ${s}`);n.add(s);let a=oM(Mu,o),c=e.documentIdentities.get(s)??(e.allowUntrackedDocuments?ir(JSON.stringify({version:1,producerIdentity:e.producerIdentity,projectIdentity:e.projectIdentity,untrackedDocument:s,contentHash:ir(a)})):null);if(!c)throw new Error(`missing TypeScript document identity: ${s}`);r.push(wb(e.cacheDir,{relativePath:s,bytes:a,occurrences:o.occurrences.length,symbols:o.symbols.length,referenceFragments:[]},c))}let i=Eb(e,r);return Db(e.cacheDir,i),i}function fte(e){let t=ya(e.cacheDir);if(!Au(Ou(t,e.generationIdentity)))return sM(e);let n=Rb({cacheDir:e.cacheDir,generationIdentity:e.generationIdentity,producerIdentity:e.producerIdentity,projectIdentity:e.projectIdentity});if(!e.allowUntrackedDocuments&&n.manifest.documents.length!==e.documentIdentities.size)throw new Error("TypeScript fragment generation document identities changed");for(let r of n.manifest.documents){let i=e.documentIdentities.get(r.relativePath);if(!(i===void 0&&e.allowUntrackedDocuments)&&i!==r.documentIdentity)throw new Error(`TypeScript fragment generation document identity changed: ${r.relativePath}`)}return n.manifest}function pte(e){let t=Rb({cacheDir:e.cacheDir,generationIdentity:e.previousGenerationIdentity,producerIdentity:e.producerIdentity,projectIdentity:e.projectIdentity}).manifest,n=new Map(t.documents.map(o=>[o.relativePath,o])),r=new Set;for(let o of e.fragments){let s=rr(o.relativePath);if(r.has(s))throw new Error(`duplicate TypeScript fragment replacement: ${s}`);if(r.add(s),!n.has(s))throw new Error(`TypeScript fragment replacement has no prior document: ${s}`);let a=e.documentIdentities.get(s);if(!a)throw new Error(`missing TypeScript document identity: ${s}`);o.bytes===null?n.delete(s):n.set(s,wb(e.cacheDir,o,a))}if(r.size===0)throw new Error("TypeScript fragment generation requires at least one replacement");let i=Eb(e,[...n.values()]);return Db(e.cacheDir,i),i}function Rb(e){let t=ya(e.cacheDir),n=Ou(t,e.generationIdentity),r;try{r=Pb(pa(n,"utf8"))}catch(o){throw new Error(`TypeScript fragment generation is unavailable: ${o instanceof Error?o.message:String(o)}`,{cause:o})}if(r.generationIdentity!==e.generationIdentity)throw new Error("TypeScript fragment generation identity does not match its manifest path");if(e.producerIdentity&&r.producerIdentity!==e.producerIdentity)throw new Error("TypeScript fragment producer identity changed");if(e.projectIdentity&&r.projectIdentity!==e.projectIdentity)throw new Error("TypeScript fragment project identity changed");let i=new Map;for(let o of r.documents){let s=Wr(t.blobDir,`${o.blobHash}.scipdoc`),a=pa(s);if(a.byteLength!==o.byteLength||ir(a)!==o.blobHash)throw new Error(`TypeScript fragment blob is corrupt: ${o.relativePath}`);i.set(o.relativePath,a)}return{manifest:r,fragments:i}}function vb(e){let t=Ib(e);return Nu(t.baseIndex,t.completeDocuments,"assembled")}function gte(e){let t=Ib(e);return aM(t.deletedAffectedPaths),{completeIndexBytes:Nu(t.baseIndex,t.completeDocuments,"assembled"),affectedIndexBytes:Nu(t.baseIndex,t.affectedDocuments,"affected")}}function Ib(e){let t=ga(e.baseIndexBytes);Tb(t.metadata,Fb(e)),kb(t.externalSymbols);let n=new Map;for(let a of e.fragments){let c=rr(a.relativePath);if(n.has(c))throw new Error(`duplicate TypeScript fragment replacement: ${c}`);n.set(c,a)}if(n.size===0)throw new Error("TypeScript index assembly requires at least one replacement");let r=new Set,i=[],o=[],s=[];for(let a of t.documents){let c=rr(a.relativePath);if(r.has(c))throw new Error(`duplicate TypeScript SCIP document path: ${c}`);r.add(c);let l=n.get(c);if(!l){i.push(a);continue}if(n.delete(c),l.bytes===null){s.push(c);continue}let u=Sb(Mu,l.bytes);if(u.relativePath!==c)throw new Error(`TypeScript fragment path mismatch: expected ${c}, got ${u.relativePath}`);i.push(u),o.push(u)}if(n.size>0)throw new Error(`TypeScript fragment replacement has no prior document: ${[...n.keys()].sort()[0]}`);return{baseIndex:t,completeDocuments:i,affectedDocuments:o,deletedAffectedPaths:s}}function Nu(e,t,n){let r=xb(bb(Cb,{metadata:e.metadata,documents:t,externalSymbols:[]})),i=ga(r);if(i.documents.length!==t.length||i.externalSymbols.length!==0)throw new Error(`${n} TypeScript SCIP index failed structural verification`);return r}function aM(e){if(e.length>0)throw new Error(`affected TypeScript mini index cannot contain a deleted document: ${e[0]}`)}function wb(e,t,n){if(t.bytes===null)throw new Error(`cannot persist an empty TypeScript fragment: ${t.relativePath}`);let r=rr(t.relativePath),i=Buffer.from(t.bytes),o=ir(i),s=ya(e);nM(s.blobDir,{recursive:!0});let a=Wr(s.blobDir,`${o}.scipdoc`);if(Au(a)){let c=pa(a);if(c.byteLength!==i.byteLength||ir(c)!==o)throw new Error(`existing TypeScript fragment blob is corrupt: ${r}`)}else{let c=`${a}.${process.pid}.${Date.now()}.tmp`;iM(c,i),rM(c,a)}return{relativePath:r,blobHash:o,byteLength:i.byteLength,documentIdentity:n}}function Eb(e,t){if(!e.producerIdentity||!e.projectIdentity||!e.generationIdentity)throw new Error("TypeScript fragment generation identities must be non-empty");let n=[...t].sort((r,i)=>r.relativePath.localeCompare(i.relativePath));if(new Set(n.map(r=>r.relativePath)).size!==n.length)throw new Error("TypeScript fragment generation contains duplicate document paths");return{version:ha,producerIdentity:e.producerIdentity,projectIdentity:e.projectIdentity,generationIdentity:e.generationIdentity,createdAt:(e.now??(()=>new Date))().toISOString(),documents:n}}function Db(e,t){let n=ya(e),r=Ou(n,t.generationIdentity);if(Au(r)){let i=Pb(pa(r,"utf8"));if(yb(i)!==yb(t))throw new Error(`TypeScript fragment generation is immutable: ${t.generationIdentity}`);return}Fe(r,t,{spacing:2,trailingNewline:!0})}function yb(e){return ir(JSON.stringify({version:e.version,producerIdentity:e.producerIdentity,projectIdentity:e.projectIdentity,generationIdentity:e.generationIdentity,documents:e.documents}))}function Pb(e){let t=JSON.parse(e);if(t.version!==ha||typeof t.producerIdentity!="string"||typeof t.projectIdentity!="string"||typeof t.generationIdentity!="string"||typeof t.createdAt!="string"||!Number.isFinite(Date.parse(t.createdAt))||!Array.isArray(t.documents))throw new Error("invalid TypeScript fragment generation manifest");let n=new Set;for(let r of t.documents){if(!r||typeof r.relativePath!="string"||typeof r.blobHash!="string"||!/^[a-f0-9]{64}$/.test(r.blobHash)||typeof r.byteLength!="number"||!Number.isInteger(r.byteLength)||r.byteLength<0||typeof r.documentIdentity!="string"||!r.documentIdentity)throw new Error("invalid TypeScript fragment record");if(rr(r.relativePath),n.has(r.relativePath))throw new Error("duplicate TypeScript fragment record");n.add(r.relativePath)}return t}function Ou(e,t){return Wr(e.generationDir,cM(t))}function cM(e){if(!e)throw new Error("TypeScript fragment generation identity must be non-empty");return`${ir(e)}.json`}function kb(e){if(e.length>0)throw new Error("scip-typescript emitted external symbols; incremental document assembly is unsupported")}function Tb(e,t){if(!e||typeof e!="object")throw new Error("TypeScript SCIP shard has no producer metadata");let n=e,r=n.toolInfo??n.tool_info;if(!r||typeof r!="object")throw new Error("TypeScript SCIP shard has no producer tool identity");let i=r;if(i.name!=="scip-typescript"||i.version!==t)throw new Error("TypeScript SCIP shard producer identity changed")}function Fb(e){let t=e.packageVersion??e.runtime?.packageVersion;if(!t)throw new Error("scip-typescript package version is unavailable");return t}function rr(e){if(!e||e.startsWith("/")||e.startsWith("\\")||e.includes("\\"))throw new Error(`invalid TypeScript SCIP document path: ${e}`);let t=e.split("/");if(t.includes("")||t.includes(".")||t.includes(".."))throw new Error(`invalid TypeScript SCIP document path: ${e}`);return e}function ir(e){return tM("sha256").update(e).digest("hex")}import{createHash as lM}from"crypto";import{existsSync as Yi,mkdirSync as uM,readFileSync as Qi,readdirSync as ju,renameSync as dM,rmSync as _b,writeFileSync as mM}from"fs";import{join as St}from"path";var ba=1,Rte=64*1024*1024,Zi="typescript-scip-overlays";function vte(e){let t=Nb(e.cacheDir,e.previousGenerationIdentity);if(!t&&!e.baseShardCurrent)throw new Error("deferred TypeScript SCIP base has no matching overlay generation");if(t&&(t.producerIdentity!==e.producerIdentity||t.projectIdentity!==e.projectIdentity))throw new Error("TypeScript overlay producer or project identity changed");let n=new Map((t?.overlays??[]).map(o=>[o.relativePath,o])),r=new Set;for(let o of e.fragments){let s=Hu(o.relativePath);if(r.has(s))throw new Error(`duplicate TypeScript overlay: ${s}`);r.add(s),n.set(s,fM(e.cacheDir,o))}if(r.size===0)throw new Error("TypeScript overlay generation requires affected documents");let i={version:ba,producerIdentity:e.producerIdentity,projectIdentity:e.projectIdentity,baseGenerationIdentity:t?.baseGenerationIdentity??e.previousGenerationIdentity,generationIdentity:e.nextGenerationIdentity,createdAt:(e.now??(()=>new Date))().toISOString(),overlays:[...n.values()].sort((o,s)=>o.relativePath.localeCompare(s.relativePath))};return pM(e.cacheDir,i),i}function Ite(e){let t=Nb(e.cacheDir,e.generationIdentity);if(!t)throw new Error("TypeScript overlay generation is unavailable");let n=t.overlays.map(r=>{if(r.blobHash===null)return{relativePath:r.relativePath,bytes:null,occurrences:0,symbols:0,referenceFragments:[]};let i=Qi(St(eo(e.cacheDir),"blobs",`${r.blobHash}.scipdoc`));if(i.byteLength!==r.byteLength||Xi(i)!==r.blobHash)throw new Error(`TypeScript overlay blob is corrupt: ${r.relativePath}`);return{relativePath:r.relativePath,bytes:i,occurrences:0,symbols:0,referenceFragments:[]}});return vb({packageVersion:e.packageVersion,baseIndexBytes:e.baseIndexBytes,fragments:n})}function wte(e,t){let n=eo(e),r=St(n,"generations");if(!Yi(r))return;let i=new Set(t.map($u)),o=new Set;for(let a of ju(r).filter(c=>i.has(c))){let c=Bu(Qi(St(r,a),"utf8"));for(let l of c.overlays)l.blobHash&&o.add(`${l.blobHash}.scipdoc`)}for(let a of ju(r))i.has(a)||_b(St(r,a),{force:!0});let s=St(n,"blobs");if(Yi(s))for(let a of ju(s))o.has(a)||_b(St(s,a),{force:!0})}function Nb(e,t){let n=St(eo(e),"generations",$u(t));if(!Yi(n))return null;let r=Bu(Qi(n,"utf8"));if(r.generationIdentity!==t)throw new Error("TypeScript overlay generation identity does not match its path");return r}function fM(e,t){let n=Hu(t.relativePath);if(t.bytes===null)return{relativePath:n,blobHash:null,byteLength:0};let r=Buffer.from(t.bytes),i=Xi(r),o=St(eo(e),"blobs");uM(o,{recursive:!0});let s=St(o,`${i}.scipdoc`);if(Yi(s)){let a=Qi(s);if(a.byteLength!==r.byteLength||Xi(a)!==i)throw new Error(`existing TypeScript overlay blob is corrupt: ${n}`)}else{let a=`${s}.${process.pid}.${Date.now()}.tmp`;mM(a,r),dM(a,s)}return{relativePath:n,blobHash:i,byteLength:r.byteLength}}function pM(e,t){let n=St(eo(e),"generations",$u(t.generationIdentity));if(Yi(n)){let r=Bu(Qi(n,"utf8"));if(Lb(r)!==Lb(t))throw new Error(`TypeScript overlay generation is immutable: ${t.generationIdentity}`);return}Fe(n,t,{spacing:2,trailingNewline:!0})}function Bu(e){let t=JSON.parse(e);if(t.version!==ba||typeof t.producerIdentity!="string"||!t.producerIdentity||typeof t.projectIdentity!="string"||!t.projectIdentity||typeof t.baseGenerationIdentity!="string"||!t.baseGenerationIdentity||typeof t.generationIdentity!="string"||!t.generationIdentity||typeof t.createdAt!="string"||!Number.isFinite(Date.parse(t.createdAt))||!Array.isArray(t.overlays))throw new Error("invalid TypeScript overlay manifest");let n=new Set;for(let r of t.overlays){if(!r||typeof r.relativePath!="string"||r.blobHash!==null&&(typeof r.blobHash!="string"||!/^[a-f0-9]{64}$/.test(r.blobHash))||!Number.isInteger(r.byteLength)||r.byteLength<0||r.blobHash===null&&r.byteLength!==0)throw new Error("invalid TypeScript overlay record");if(Hu(r.relativePath),n.has(r.relativePath))throw new Error("duplicate TypeScript overlay record");n.add(r.relativePath)}return t}function eo(e){return St(e,Zi)}function $u(e){if(!e)throw new Error("TypeScript overlay generation identity must be non-empty");return`${Xi(e)}.json`}function Lb(e){return Xi(JSON.stringify({version:e.version,producerIdentity:e.producerIdentity,projectIdentity:e.projectIdentity,baseGenerationIdentity:e.baseGenerationIdentity,generationIdentity:e.generationIdentity,overlays:e.overlays}))}function Hu(e){if(!e||e.startsWith("/")||e.includes("\\")||e.split("/").some(t=>!t||t==="."))throw new Error(`invalid TypeScript overlay path: ${e}`);if(e.split("/").includes(".."))throw new Error(`invalid TypeScript overlay path: ${e}`);return e}function Xi(e){return lM("sha256").update(e).digest("hex")}var to=1,Wu="language-indexes",Ab=["index.db","index.scip","meta.json"],Mb=[Wu,Ji,Zi];function Sa(e){let t=[];for(let n of Ab)CM(e,n),t.push(n);for(let n of Mb)Ob(e,n,t);return{version:to,files:t.sort()}}function Ca(e){if(!e||e.includes("\0")||e.startsWith("/")||e.includes("\\"))throw new Error(`invalid index artifact path: ${e||"<empty>"}`);let t=e.split("/");if(t.some(r=>!r||r==="."||r===".."))throw new Error(`invalid index artifact path: ${e}`);let n=t[0];if(!Ab.includes(e)&&!Mb.includes(n))throw new Error(`index artifact path is not shareable: ${e}`);return e}function _t(e,t){let n=Ca(t),r=Uu(e),i=Uu(r,...n.split("/"));if(i!==r&&!i.startsWith(`${r}${SM}`))throw new Error(`index artifact escapes cache: ${t}`);return i}function Ob(e,t,n){let r=yM(e,t),i;try{i=hM(r,{withFileTypes:!0,encoding:"utf8"})}catch{return}for(let o of i){let s=`${t}/${o.name}`;if(o.isSymbolicLink())throw new Error(`index artifact cannot be a symlink: ${s}`);o.isDirectory()?Ob(e,s,n):o.isFile()&&n.push(Ca(s))}}function CM(e,t){let n=_t(e,t),r;try{r=gM(n)}catch{throw new Error(`required index artifact is missing: ${t}`)}if(!r.isFile()||r.isSymbolicLink())throw new Error(`required index artifact is not a regular file: ${t}`);if(bM(Uu(e),n).startsWith(".."))throw new Error(`index artifact escapes cache: ${t}`)}import{readFileSync as zu,writeFileSync as Vu}from"fs";import{create as no}from"@bufbuild/protobuf";import{deserializeSCIP as qu,serializeSCIP as Ku,DocumentSchema as PM,IndexSchema as Bb,MetadataSchema as kM,SymbolInformationSchema as TM}from"@c4312/scip";import{readFileSync as xM,writeFileSync as RM}from"fs";import{create as jb}from"@bufbuild/protobuf";import{deserializeSCIP as vM,DocumentSchema as IM,IndexSchema as wM,serializeSCIP as EM,SymbolRole as DM}from"@c4312/scip";function Ate(e){let t;try{t=vM(xM(e))}catch{return{removedDefinitionOccurrences:0,touchedDocuments:0}}let n=Gu(t);return n.removedDefinitionOccurrences>0&&RM(e,Buffer.from(EM(n.index))),{removedDefinitionOccurrences:n.removedDefinitionOccurrences,touchedDocuments:n.touchedDocuments}}function Gu(e){let t=new Set;for(let o of e.documents)for(let s of o.symbols)s.symbol&&t.add(s.symbol);for(let o of e.externalSymbols)o.symbol&&t.add(o.symbol);let n=0,r=0,i=[];for(let o of e.documents){let s=o.occurrences.filter(a=>(a.symbolRoles&DM.Definition)===0||t.has(a.symbol)?!0:(n+=1,!1));if(s.length===o.occurrences.length){i.push(o);continue}r+=1,i.push(jb(IM,{language:o.language,relativePath:o.relativePath,occurrences:s,symbols:o.symbols,text:o.text,positionEncoding:o.positionEncoding}))}return{index:n===0?e:jb(wM,{metadata:e.metadata,documents:i,externalSymbols:e.externalSymbols}),removedDefinitionOccurrences:n,touchedDocuments:r}}function $b(e){if(e.length===0)throw new Error("Cannot merge zero SCIP indexes");if(e.length===1)return e[0];let t=_M(e),n=LM(e.flatMap(i=>i.documents??[])),r=Ub(e.flatMap(i=>i.externalSymbols??[]));return no(Bb,{metadata:t,documents:n,externalSymbols:r})}function Hte(e,t){if(e.length===0)throw new Error("Cannot merge zero SCIP files");let n=e.map(i=>qu(zu(i))),r=$b(n);return Vu(t,Buffer.from(Ku(r))),{documentCount:r.documents.length,externalSymbolCount:r.externalSymbols.length,inputCount:e.length}}function Ute(e,t){if(e.length===0)throw new Error("Cannot merge zero SCIP files");let n=e.map(i=>qu(zu(i))),r=Gu($b(n));return Vu(t,Buffer.from(Ku(r.index))),{documentCount:r.index.documents.length,externalSymbolCount:r.index.externalSymbols.length,inputCount:e.length,removedDefinitionOccurrences:r.removedDefinitionOccurrences,touchedDocuments:r.touchedDocuments}}function FM(e,t,n){let r=e.metadata;if(!r)throw new Error("Cannot rebase a SCIP index without metadata");if(r.projectRoot!==t)throw new Error(`Cannot rebase SCIP project root: expected ${t}, got ${r.projectRoot}`);return no(Bb,{metadata:no(kM,{...r,projectRoot:n}),documents:e.documents,externalSymbols:e.externalSymbols})}function Hb(e,t,n){let r=qu(zu(e)),i=FM(r,t,n);Vu(e,Buffer.from(Ku(i)))}function _M(e){let t=e[0]?.metadata;if(!t)return;let n=t.projectRoot;for(let r of e.slice(1)){let i=r.metadata?.projectRoot;if(n&&i&&i!==n)throw new Error(`Cannot merge SCIP indexes with different project roots: ${n} vs ${i}`)}return t}function LM(e){let t=new Map;for(let n of e){let r=t.get(n.relativePath);if(!r){t.set(n.relativePath,n);continue}t.set(n.relativePath,no(PM,{language:r.language||n.language,relativePath:r.relativePath||n.relativePath,occurrences:NM([...r.occurrences,...n.occurrences]),symbols:Ub([...r.symbols,...n.symbols]),text:MM(r.text,n.text),positionEncoding:r.positionEncoding||n.positionEncoding}))}return[...t.values()]}function NM(e){let t=new Set,n=[];for(let r of e){let i=JSON.stringify(r);t.has(i)||(t.add(i),n.push(r))}return n}function Ub(e){let t=new Map;for(let n of e){let r=t.get(n.symbol);if(!r){t.set(n.symbol,n);continue}t.set(n.symbol,no(TM,{symbol:r.symbol,documentation:OM([...r.documentation,...n.documentation]),relationships:AM([...r.relationships,...n.relationships]),kind:r.kind||n.kind,displayName:r.displayName||n.displayName,enclosingSymbol:r.enclosingSymbol||n.enclosingSymbol,signatureDocumentation:r.signatureDocumentation??n.signatureDocumentation}))}return[...t.values()]}function AM(e){let t=new Set,n=[];for(let r of e){let i=[r.symbol,r.isReference?"1":"0",r.isImplementation?"1":"0",r.isTypeDefinition?"1":"0",r.isDefinition?"1":"0"].join("|");t.has(i)||(t.add(i),n.push(r))}return n}function MM(e,t){return e?t?e.length>=t.length?e:t:e:t}function OM(e){return[...new Set(e)]}var ed=1,zb="SCIP_QUERY_SHARED_CACHE",Yu=JSON.stringify({cliVersion:er,artifactCatalogVersion:to,sqliteGenerationStoreVersion:Ur,typescriptFragmentStoreVersion:ha,typescriptOverlayStoreVersion:ba}),eS="manifest.json",tS="shared-cache.json",td=[Wu,Ji,Zi];function xa(e,t){if(!e.clean||!e.treeOid)return;let n=oo(JSON.stringify({version:ed,repositoryId:e.repositoryId,treeOid:e.treeOid,fingerprint:t,producerIdentity:Yu}));return{repositoryId:e.repositoryId,worktreeId:e.worktreeId,projectRoot:e.projectRoot,treeOid:e.treeOid,fingerprint:t,producerIdentity:Yu,generationId:n,repositoryCacheDir:zi(e.repositoryId)}}function nS(e,t,n){if(process.env[zb]==="0")return`${zb}=0`;if(!Eu(n))return"explicit cache or database override";if(Ct(t)!==Ct(A(sa(e),"index.db")))return"index database is outside the managed worktree cache"}function rS(e,t,n){if(!Eu(t))return;let r=n??yr(e);return r?A(zi(r.repositoryId),"evidence.db"):void 0}function sr(e,t=!0){let n=id(e),r;try{r=zM(tt(A(n,eS),"utf8"))}catch{return null}if(r.generationId!==e.generationId||r.repositoryId!==e.repositoryId||r.treeOid!==e.treeOid||r.producerIdentity!==e.producerIdentity||JSON.stringify(r.fingerprint)!==JSON.stringify(e.fingerprint))return null;if(!t)return r;try{for(let i of r.artifacts){let o=_t(n,i.path),s=UM(o);if(!s.isFile()||s.size!==i.size||oo(tt(o))!==i.sha256)return null}}catch{return null}return r}function iS(e){let t=sr(e.snapshot);if(t)return t;if(!Gr(e.sourceCacheDir,e.sourceProjectRoot,e.snapshot.fingerprint))throw new Error("source index is incomplete, incompatible, or corrupt");let n=Vb(e.sourceCacheDir);if(!n)throw new Error("source index artifacts are incomplete");let r=Sa(e.sourceCacheDir),i=A(e.snapshot.repositoryCacheDir,"generations");tn(i,{recursive:!0});let o=Jb(A(i,`.tmp-${process.pid}-`));try{let s=[];for(let d of r.files){let m=_t(e.sourceCacheDir,d),f=_t(o,d);io(m,f);let p=tt(f);s.push({path:d,size:p.byteLength,sha256:oo(p)})}let a=Zb(tt(A(o,"index.scip"))).metadata?.projectRoot;if(!a)throw new Error("shared SCIP generation has no project root metadata");let c=od(e.sourceProjectRoot);if(a!==c)throw new Error("shared SCIP generation root does not match its source worktree");if(Vb(e.sourceCacheDir)!==n||e.sourceStillValid&&!e.sourceStillValid())throw new Error("source index changed while staging a shared generation");let l={version:ed,artifactCatalogVersion:to,generationId:e.snapshot.generationId,repositoryId:e.snapshot.repositoryId,treeOid:e.snapshot.treeOid,fingerprint:e.snapshot.fingerprint,producerIdentity:e.snapshot.producerIdentity,sourceProjectRoot:e.sourceProjectRoot,scipProjectRoot:a,createdAt:(e.now??(()=>new Date))().toISOString(),artifacts:s.sort((d,m)=>d.path.localeCompare(m.path))};Fe(A(o,eS),l,{spacing:2,trailingNewline:!0});let u=id(e.snapshot);try{if(kn(u)&&!sr(e.snapshot)){let d=`${u}.corrupt-${process.pid}-${Date.now()}`;or(u,d),Pn(d,{recursive:!0,force:!0})}or(o,u)}catch(d){let m=sr(e.snapshot);if(m)return m;throw d}return l}finally{Pn(o,{recursive:!0,force:!0})}}function Xu(e){let t=id(e.snapshot);tn(e.targetCacheDir,{recursive:!0});let n=Lu(A(e.targetCacheDir,"cache-lifecycle.lock"),{waitMs:3e4});if(!n)throw new Error("timed out waiting for another cache hydration");let r,i,o=!1;try{r=Jb(A(e.targetCacheDir,".shared-hydrate-")),QM(e.manifest,e.snapshot);for(let c of e.manifest.artifacts){let l=_t(t,c.path),u=_t(r,c.path);io(l,u);let d=tt(u);if(d.byteLength!==c.size||oo(d)!==c.sha256)throw new Error(`shared artifact is corrupt: ${c.path}`)}let s=od(e.targetProjectRoot);if(s!==e.manifest.scipProjectRoot)for(let c of e.manifest.artifacts)c.path.endsWith(".scip")&&Hb(_t(r,c.path),e.manifest.scipProjectRoot,s);if(!Gr(r,e.targetProjectRoot,e.snapshot.fingerprint,!1))throw new Error("staged shared generation failed completeness or integrity validation");i=JM(e.targetCacheDir,r),o=!0,YM(r,e.targetCacheDir,i),ob({tempOutputScip:A(r,"index.scip"),tempOutputDb:A(r,"index.db"),tempMetaPath:A(r,"meta.json"),outputScip:A(e.targetCacheDir,"index.scip"),outputDb:A(e.targetCacheDir,"index.db"),metaPath:A(e.targetCacheDir,"meta.json"),now:e.now});let a=Ki(A(e.targetCacheDir,"index.db"),A(e.targetCacheDir,"meta.json"));if(a.state==="invalid"||a.state==="drifted")throw new Error(`hydrated SQLite generation failed validation: ${a.reason}`);Qu(e.snapshot,e.targetCacheDir,e.action??"attached",e.now)}catch(s){throw o&&i&&XM(e.targetCacheDir,i),s}finally{r&&Pn(r,{recursive:!0,force:!0}),n.release()}}function oS(e,t,n,r){let i=nS(e,n.dbPath,t);if(i)return{kind:"bypassed",reason:i};try{let o=r??yr(e);if(!o)return{kind:"missed",reason:"Git worktree identity is unavailable"};if(!o.clean)return Ra(o,n.cacheDir,"missed",void 0,"worktree has uncommitted changes"),{kind:"missed",reason:"worktree has uncommitted changes"};let s=t.languages??Vi(e),a=Ti(e,s,aS(t)),c=xa(o,a);if(!c)return{kind:"missed",reason:"clean committed snapshot is unavailable"};let l=sr(c);if(l)return Xu({snapshot:c,manifest:l,targetCacheDir:n.cacheDir,targetProjectRoot:e}),{kind:"attached",generationId:c.generationId};let u=VM(c,e);return u?(l=u.manifest,Xu({snapshot:c,manifest:l,targetCacheDir:n.cacheDir,targetProjectRoot:e,action:"peer-imported"}),{kind:"peer-imported",generationId:c.generationId,sourceProjectRoot:u.sourceProjectRoot}):(Ra(o,n.cacheDir,"missed",void 0,"no exact shared or peer generation exists"),{kind:"missed",reason:"no exact shared or peer generation exists"})}catch(o){return{kind:"failed",reason:o instanceof Error?o.message:String(o)}}}function nd(e,t,n,r){let i=nS(e,n.dbPath,t);if(i)return{kind:"bypassed",reason:i};try{let o=r??yr(e);if(!o)return{kind:"missed",reason:"Git worktree identity is unavailable"};if(!o.clean)return Ra(o,n.cacheDir,"missed",void 0,"worktree is not a clean committed snapshot"),{kind:"missed",reason:"worktree is not a clean committed snapshot"};let s=t.languages??Vi(e),a=Ti(e,s,aS(t)),c=xa(o,a);if(!c)return Ra(o,n.cacheDir,"missed",void 0,"worktree is not a clean committed snapshot"),{kind:"missed",reason:"worktree is not a clean committed snapshot"};let l=sr(c);if(l)return Gr(n.cacheDir,e,a)?(Qu(c,n.cacheDir,"local-fresh"),{kind:"local-fresh"}):(Xu({snapshot:c,manifest:l,targetCacheDir:n.cacheDir,targetProjectRoot:e}),{kind:"attached",generationId:c.generationId});let u=va(n.cacheDir);return u?.status!=="complete"||JSON.stringify(u.fingerprint)!==JSON.stringify(a)||JSON.stringify([...u.indexedLanguages??[]].sort())!==JSON.stringify([...s].sort())?{kind:"missed",reason:"local metadata does not match the clean worktree snapshot"}:Gr(n.cacheDir,e,a)?(iS({snapshot:c,sourceCacheDir:n.cacheDir,sourceProjectRoot:e,sourceStillValid:()=>{let d=yr(e);return(d?xa(d,a):void 0)?.generationId===c.generationId}}),Qu(c,n.cacheDir,"built"),{kind:"built",generationId:c.generationId}):{kind:"missed",reason:"local index artifacts are incomplete or incompatible"}}catch(o){return{kind:"failed",reason:o instanceof Error?o.message:String(o)}}}async function une(e,t={}){let n=t.timeoutMs??3e4,r=t.pollMs??100,i=t.now??Date.now,o=i()+n,s=A(e.repositoryCacheDir,"locks"),a=A(s,`${e.generationId}.lock`);for(tn(s,{recursive:!0});i()<=o;){if(sr(e))return{kind:"generation-ready"};let c=Zu();try{let l=Yb(a,"wx");try{Xb(l,`${JSON.stringify({version:1,pid:process.pid,token:c,generationId:e.generationId,startedAt:new Date(i()).toISOString()})}
374
+ `)}finally{Kb(l)}return{kind:"owner",release:()=>{try{let u=JSON.parse(tt(a,"utf8"));u.pid===process.pid&&u.token===c&&Ju(a)}catch{}}}}catch(l){if(l.code!=="EEXIST")return{kind:"timeout"};let u=cS(a);if(u&&(u.pid===void 0||!dt(u.pid))){KM(a,u);continue}await WM(r)}}return sr(e)?{kind:"generation-ready"}:{kind:"timeout"}}function Qu(e,t,n,r=void 0){let i={version:1,repositoryId:e.repositoryId,worktreeId:e.worktreeId,projectRoot:e.projectRoot,treeOid:e.treeOid,localCacheDir:t,baseGenerationId:e.generationId,activeGenerationId:e.generationId,lastAction:n,lastSeenAt:(r??(()=>new Date))().toISOString()},o={...i,ownershipChecksum:rd(i)};return lS(e.repositoryCacheDir,o,!0),o}function Ra(e,t,n,r=void 0,i=void 0){let o={version:1,repositoryId:e.repositoryId,worktreeId:e.worktreeId,projectRoot:e.projectRoot,treeOid:e.treeOid,localCacheDir:t,lastAction:n,...i?{lastReason:i}:{},lastSeenAt:(r??(()=>new Date))().toISOString()},s={...o,ownershipChecksum:rd(o)};return lS(zi(e.repositoryId),s,!1),s}function rd(e){return oo(JSON.stringify({version:1,repositoryId:e.repositoryId,worktreeId:e.worktreeId,projectRoot:Ct(e.projectRoot),localCacheDir:Ct(e.localCacheDir)}))}function sS(e,t,n=void 0,r){try{let i=JSON.parse(tt(A(t,tS),"utf8"));if(i.version!==1||typeof i.repositoryId!="string"||!/^[a-f0-9]{24}$/.test(i.repositoryId)||typeof i.worktreeId!="string"||!/^[a-f0-9]{24}$/.test(i.worktreeId))return null;let o=A(zi(i.repositoryId),"worktrees",`${i.worktreeId}.json`),s=JSON.parse(tt(o,"utf8")),a=r??yr(e);if(!a?.clean||!a.treeOid||s.version!==1||s.repositoryId!==i.repositoryId||s.worktreeId!==i.worktreeId||s.repositoryId!==a.repositoryId||s.worktreeId!==a.worktreeId||Ct(s.projectRoot)!==Ct(a.projectRoot)||s.treeOid!==a.treeOid||Ct(s.localCacheDir)!==Ct(t)||s.ownershipChecksum!==rd(s))return null;let c=va(t);if(!ZM(c?.fingerprint))return null;let l=xa(a,c.fingerprint);if(!l||s.baseGenerationId!==l.generationId||s.activeGenerationId!==l.generationId||!Gr(t,e,l.fingerprint,!0,!1))return null;let u=(n??(()=>new Date))();if(Number.isFinite(Date.parse(s.lastSeenAt))&&u.getTime()-Date.parse(s.lastSeenAt)<6e4)return s;let d=_u(l.repositoryCacheDir,{waitMs:5e3});if(!d)return null;try{s.lastSeenAt=u.toISOString(),Fe(o,s,{spacing:2,trailingNewline:!0})}finally{d.release()}return s}catch{return null}}function zM(e){let t=JSON.parse(e);if(t.version!==ed||t.artifactCatalogVersion!==to||typeof t.generationId!="string"||!/^[a-f0-9]{64}$/.test(t.generationId)||typeof t.repositoryId!="string"||!/^[a-f0-9]{24}$/.test(t.repositoryId)||typeof t.treeOid!="string"||!t.treeOid||typeof t.producerIdentity!="string"||t.producerIdentity!==Yu||typeof t.sourceProjectRoot!="string"||typeof t.scipProjectRoot!="string"||typeof t.createdAt!="string"||!Number.isFinite(Date.parse(t.createdAt))||!t.fingerprint||!Array.isArray(t.artifacts))throw new Error("invalid shared generation manifest");let n=new Set;for(let r of t.artifacts){if(!r||typeof r.path!="string"||typeof r.size!="number"||r.size<0||typeof r.sha256!="string"||!/^[a-f0-9]{64}$/.test(r.sha256))throw new Error("invalid shared generation artifact");if(Ca(r.path),n.has(r.path))throw new Error(`duplicate shared generation artifact: ${r.path}`);n.add(r.path)}for(let r of["index.db","index.scip","meta.json"])if(!n.has(r))throw new Error(`shared generation is missing ${r}`);return t}function io(e,t){tn(Qb(t),{recursive:!0});try{Wb(e,t,jM.COPYFILE_FICLONE)}catch{Wb(e,t)}}function VM(e,t){for(let n of Rf(t)){if(Ct(n.path)===Ct(t))continue;let r=sa(n.path),i=va(r);if(!(i?.status!=="complete"||JSON.stringify(i.fingerprint)!==JSON.stringify(e.fingerprint)||JSON.stringify([...i.indexedLanguages??[]].sort())!==JSON.stringify([...e.fingerprint.languages].sort()))&&Gr(r,n.path,e.fingerprint))try{return{manifest:iS({snapshot:e,sourceCacheDir:r,sourceProjectRoot:n.path}),sourceProjectRoot:n.path}}catch{continue}}return null}function qM(e,t,n){tn(e,{recursive:!0}),Fe(A(e,tS),{version:1,repositoryId:t,worktreeId:n},{spacing:2,trailingNewline:!0})}function Vb(e){try{let t=Sa(e),n=qb("sha256");for(let r of t.files){let i=tt(_t(e,r));n.update(r).update("\0").update(String(i.byteLength)).update("\0").update(i).update("\0")}return n.digest("hex")}catch{return null}}function va(e){try{return JSON.parse(tt(A(e,"meta.json"),"utf8"))}catch{return}}function aS(e){return{pnpmWorkspaces:e.indexer?.typescript?.pnpmWorkspaces,typescriptProjectMode:e.indexer?.typescript?.projectMode,typescriptProjects:e.indexer?.typescript?.projects,clojureConfigPath:e.indexer?.clojure?.configPath}}function id(e){return A(e.repositoryCacheDir,"generations",e.generationId)}function cS(e){try{let t=tt(e,"utf8"),n=JSON.parse(t),r=typeof n.pid=="number"&&Number.isSafeInteger(n.pid)&&n.pid>0?n.pid:void 0;return{raw:t,...r===void 0?{}:{pid:r}}}catch{return null}}function KM(e,t){let n=`${e}.reclaim`,r=Zu(),i;try{i=Yb(n,"wx")}catch{return!1}try{Xb(i,`${JSON.stringify({version:1,pid:process.pid,token:r,startedAt:new Date().toISOString()})}
375
+ `)}finally{Kb(i)}try{let o=cS(e);return!o||o.raw!==t.raw||o.pid!==void 0&&dt(o.pid)?!1:(Ju(e),!0)}catch{return!1}finally{try{let o=JSON.parse(tt(n,"utf8"));o.pid===process.pid&&o.token===r&&Ju(n)}catch{}}}function lS(e,t,n){let r=_u(e,{waitMs:5e3});if(!r)throw new Error("repository cache cleanup is busy");try{if(n){let o=t.activeGenerationId;if(!o||!kn(A(e,"generations",o)))throw new Error("shared generation disappeared before its lease was attached")}let i=A(e,"worktrees");tn(i,{recursive:!0}),Fe(A(i,`${t.worktreeId}.json`),t,{spacing:2,trailingNewline:!0}),qM(t.localCacheDir,t.repositoryId,t.worktreeId)}finally{r.release()}}function JM(e,t){let n=A(t,".rollback"),r=new Map,i=new Map;tn(n,{recursive:!0});for(let a of["index.scip","index.db","meta.json"]){let c=A(e,a),l=kn(c);r.set(a,l),l&&io(c,A(n,"stable",a))}for(let a of td){let c=A(e,a),l=kn(c);if(l){let u=BM(c);if(!u.isDirectory()||u.isSymbolicLink())throw new Error(`managed artifact path is not a directory: ${a}`)}i.set(a,l)}let o=A(e,da),s=kn(o);return s&&uS(o,A(n,"sqlite-generations")),{root:n,stableFiles:r,managedDirectories:i,generationStoreExisted:s}}function YM(e,t,n){for(let r of td){let i=A(t,r);if(n.managedDirectories.get(r)){let s=A(n.root,"managed",r);tn(Qb(s),{recursive:!0}),or(i,s)}let o=A(e,r);kn(o)&&or(o,i)}}function XM(e,t){for(let i of td){let o=A(e,i),s=A(t.root,"managed",i);t.managedDirectories.get(i)?kn(s)&&(Pn(o,{recursive:!0,force:!0}),or(s,o)):Pn(o,{recursive:!0,force:!0})}for(let[i,o]of t.stableFiles){let s=A(e,i);if(!o){Pn(s,{force:!0});continue}let a=`${s}.shared-restore-${Zu()}`;io(A(t.root,"stable",i),a),Pn(s,{force:!0}),or(a,s)}let n=A(e,da);Pn(n,{recursive:!0,force:!0});let r=A(t.root,"sqlite-generations");t.generationStoreExisted&&kn(r)&&or(r,n)}function uS(e,t){tn(t,{recursive:!0});for(let n of $M(e,{withFileTypes:!0})){let r=A(e,n.name),i=A(t,n.name);if(n.isSymbolicLink())throw new Error(`managed cache backup cannot contain a symlink: ${r}`);n.isDirectory()?uS(r,i):n.isFile()&&io(r,i)}}function QM(e,t){if(e.generationId!==t.generationId||e.repositoryId!==t.repositoryId||e.treeOid!==t.treeOid||e.producerIdentity!==t.producerIdentity||JSON.stringify(e.fingerprint)!==JSON.stringify(t.fingerprint))throw new Error("shared generation manifest does not match the requested snapshot")}function Gr(e,t,n,r=!0,i=!0){try{let o=va(e);if(o?.status!=="complete"||JSON.stringify(o.fingerprint)!==JSON.stringify(n)||JSON.stringify([...o.indexedLanguages??[]].sort())!==JSON.stringify([...n.languages].sort()))return ro("source validation rejected metadata"),!1;let s=Sa(e),a=Ki(A(e,"index.db"),A(e,"meta.json"));if(r?a.state!=="current":a.state==="invalid"||a.state==="drifted")return ro(`source validation rejected SQLite generation state ${a.state}`),!1;let c=new GM(A(e,"index.db"),{readonly:!0,fileMustExist:!0});try{if(i){if(c.pragma("quick_check(1)",{simple:!0})!=="ok")return!1}else c.pragma("schema_version",{simple:!0})}finally{c.close()}let l=od(t),d=(i?s.files.filter(m=>m.endsWith(".scip")):["index.scip"]).every(m=>{let f=Zb(tt(_t(e,m))).metadata?.projectRoot;return f!==l&&ro(`source validation rejected SCIP root for ${m}: ${String(f)}`),f===l});return d||ro("source validation rejected SCIP project roots"),d}catch(o){return ro(`source validation failed: ${o instanceof Error?o.message:String(o)}`),!1}}function ro(e){process.env.SCIP_QUERY_DEBUG&&console.error(`shared-cache: ${e}`)}function od(e){try{return Gb(HM(e)).href}catch{return Gb(Ct(e)).href}}function ZM(e){if(!e||typeof e!="object")return!1;let t=e;return t.version===2&&Array.isArray(t.languages)&&typeof t.pnpmWorkspaces=="boolean"&&(t.typescriptProjectMode==="single"||t.typescriptProjectMode==="workspace")&&Array.isArray(t.typescriptProjects)&&Array.isArray(t.files)&&t.files.every(n=>n!==null&&typeof n=="object"&&typeof n.path=="string"&&typeof n.size=="number"&&typeof n.hash=="string")}function oo(e){return qb("sha256").update(e).digest("hex")}function dS(){return process.env.SCIP_QUERY_PROJECT_ROOT??process.cwd()}var sd;function xne(e){sd=e}function mS(e=dS(),t=void 0){if(t===void 0&&sd?.projectRoot===e)return sd;let n=Ky(e),r=Ny(e,n),i=process.env.SCIP_QUERY_INDEX_DB;if(i)return{projectRoot:e,config:n,paths:r,dbPath:i,dbPathSource:"env",gitContext:t};if(ad(r.dbPath))return{projectRoot:e,config:n,paths:r,dbPath:r.dbPath,dbPathSource:"configured",gitContext:t};let o=t0(e,"index.db");return{projectRoot:e,config:n,paths:r,dbPath:o,dbPathSource:"root-fallback",rootFallbackWarning:o0(o,r.dbPath),gitContext:t}}function Rne(e){return mS(e).dbPath}function vne(e,t,n,r={}){return ad(n.dbPath)&&sS(e,n.cacheDir,void 0,r.gitContext)?{kind:"local-fresh"}:r.gitContext?.clean===!1&&r.watcherGeneration!==void 0&&Zs(n.dbPath)===r.watcherGeneration?nd(e,t,n,r.gitContext):cb(e,t,n).state==="fresh"?nd(e,t,n,r.gitContext):oS(e,t,n,r.gitContext)}function Ine(e){return!e.startsWith("__")&&!n0.has(e)}var n0=new Set(["bench","config-validate","hook-context","hook-stop","init","setup","setup-agent","setup-ci","setup-hooks","uninstall","work-audit"]);function r0(){try{return i0(dS(),{warnOnRootFallback:!0})}catch(e){console.error(`error: ${e instanceof Error?e.message:String(e)}`),process.exit(1)}}function i0(e,t={}){let{config:n,paths:r,dbPath:i,dbPathSource:o,rootFallbackWarning:s,gitContext:a}=mS(e);if(!ad(i))throw new Error("No index.db found. Run: scip-query reindex");t.warnOnRootFallback&&o==="root-fallback"&&s&&console.error(s);let c={dbPath:i,indexPath:process.env.SCIP_QUERY_INDEX_SCIP??r.indexPath,projectRoot:e,sharedEvidenceDbPath:rS(e,n,a),entryRoots:n.entryRoots,semantic:n.semantic,suppressions:n.suppressions,declaredCouplings:n.declaredCouplings,locality:n.locality,architecture:n.architecture,coverageContracts:n.coverageContracts,docs:n.docs},l=Oy(e);return new aa(c,l)}function o0(e,t){let n="unknown time";try{n=e0(e).mtime.toISOString()}catch{}return`warning: using legacy project-root index.db (${e}, modified ${n}) because the configured index was not found at ${t}. This fallback may be stale; run 'scip-query reindex' to refresh the configured index.`}function nn(e){let t=r0();try{return e(t)}finally{t.close()}}function wne(e,t){return t.concat([e])}function fS(e){return e<1024?`${e} B`:e<1024*1024?`${(e/1024).toFixed(0)} KB`:e<1024*1024*1024?`${(e/(1024*1024)).toFixed(1)} MB`:`${(e/(1024*1024*1024)).toFixed(1)} GB`}function Ene(e){switch(e.state){case"idle":return"Watching (idle)";case"waiting":{let t=Math.round((e.reindexAt-Date.now())/1e3);return`${e.changedFiles} file(s) changed, reindexing in ${t}s...`}case"indexing":return`Reindexing... (${Math.round((Date.now()-e.startedAt)/1e3)}s)`;case"cooldown":return`Cooldown (${Math.round((e.until-Date.now())/1e3)}s)${e.dirty?" \u2014 changes pending":""}`;default:return s0(e)}}function s0(e){throw new Error(`Unhandled watcher status: ${JSON.stringify(e)}`)}function pS(e){return e+1}function a0(e,t){return`${pS(e)}-${pS(t)}`}function Pne(e,t,n){return`${e}:${a0(t,n)}`}function kne(e,t=180){let n=e.replace(/\s+/g," ").trim();return n.length>t?`${n.slice(0,t-3)}...`:n}var Lt={empty(e){console.log(e)},list(e,t){for(let n of e)console.log(t(n))},groupedByFile(e,t,n=r=>r.relativePath){let r="";for(let i of e){let o=n(i);o!==r&&(r&&console.log(""),console.log(o),r=o),console.log(t(i))}},sectionedReport(e){let t=!0;for(let n of e)if(!(n.skipIfEmpty&&n.rows.length===0)){t||console.log(""),t=!1,n.title!==void 0&&console.log(`\u2550\u2550\u2550 ${n.title} \u2550\u2550\u2550`),n.explanation!==void 0&&console.log(n.explanation);for(let r of n.rows)console.log(r)}},table(e,t,n){console.log(` ${e.join(" ")}`);let r=n??e.map(i=>i.length);console.log(` ${r.map(i=>"\u2500".repeat(i)).join(" ")}`);for(let i of t)console.log(i)}};import{availableParallelism as rY}from"os";import{fileURLToPath as Wm}from"url";import{existsSync as Ia,readFileSync as c0,readdirSync as hS}from"fs";import{join as so}from"path";var l0={files:new Set,pathPrefixes:[]},cd=/^(?:dist|build|lib|out|output|esm|cjs|umd)\//,u0=/\.(?:d\.ts|d\.mts|d\.cts|ts|tsx|mts|cts|js|jsx|mjs|cjs)$/,yS=[".ts",".tsx",".mts",".cts",".js",".jsx",".mjs",".cjs"],d0=new Set([".git",".next",".turbo","build","coverage","dist","node_modules","out"]),m0=4,f0=X("package-surface",{clearGroups:["whole-project"]});function p0(e){return f0.get(e,()=>g0(e.config.projectRoot))}function ar(e,t){let n=p0(e);return n.files.has(t)?!0:n.pathPrefixes.some(r=>t.startsWith(r))}function g0(e){let t=new Set,n=[];for(let{manifest:r,packageRoot:i}of h0(e))for(let o of y0(r))b0(e,i,o,t,n);return t.size===0&&n.length===0?l0:{files:t,pathPrefixes:n}}function h0(e){let t=[],n=SS(e,"");return n&&t.push({manifest:n,packageRoot:""}),bS(e,"",t,0),t}function bS(e,t,n,r){if(r>=m0)return;let i=so(e,t);if(Ia(i))for(let o of hS(i,{withFileTypes:!0})){if(!o.isDirectory()||d0.has(o.name))continue;let s=t?`${t}/${o.name}`:o.name,a=SS(e,s);a&&n.push({manifest:a,packageRoot:s}),bS(e,s,n,r+1)}}function SS(e,t){try{let n=c0(so(e,t,"package.json"),"utf-8"),r=JSON.parse(n);return r&&typeof r=="object"?r:null}catch{return null}}function y0(e){let t=[];for(let r of["main","module","types","browser"])typeof e[r]=="string"&&t.push(e[r]);let n=e.bin;if(typeof n=="string")t.push(n);else if(n&&typeof n=="object")for(let r of Object.values(n))typeof r=="string"&&t.push(r);return CS(e.exports,t),t}function CS(e,t){if(typeof e=="string"){t.push(e);return}if(!(!e||typeof e!="object"))for(let n of Object.values(e))CS(n,t)}function b0(e,t,n,r,i){let o=n.replace(/\\/g,"/").replace(/^\.\//,"");if(o===""||o.startsWith(".."))return;let s=o.indexOf("*");if(s>=0){let c=o.slice(0,s);for(let l of gS(c))l!==""&&i.push(rn(t,l));return}let a=o.replace(u0,"");for(let c of gS(a)){c===a&&c===o&&r.add(rn(t,o));for(let l of yS)S0(e,r,t,c+l)}r.add(rn(t,o))}function gS(e){let t=[e];return cd.test(e)&&(t.push(e.replace(cd,"src/")),t.push(e.replace(cd,""))),t}function S0(e,t,n,r){let i=rn(n,r);if(t.add(i),!r.startsWith("src/")||Ia(so(e,i)))return;let o=yS.find(u=>r.endsWith(u));if(!o)return;let s=r.slice(0,-o.length);C0(e,t,n,s,o);let a=s.lastIndexOf("/");if(a<=4)return;let c=s.slice(0,a),l=s.slice(a+1);for(let u of xS(e,n,c,`${l}${o}`))t.add(u)}function C0(e,t,n,r,i){let o=rn(n,`${r}/index${i}`);Ia(so(e,o))&&t.add(o)}function xS(e,t,n,r){let i=so(e,t,n);if(!Ia(i))return[];let o=[];for(let s of hS(i,{withFileTypes:!0})){let a=`${n}/${s.name}`;s.isDirectory()?o.push(...xS(e,t,a,r)):s.isFile()&&s.name===r&&o.push(rn(t,a))}return o}function rn(e,t){return e?`${e}/${t}`:t}import{existsSync as wa,readFileSync as x0,readdirSync as R0}from"fs";import{dirname as v0,join as Ea}from"path";var I0={rootFiles:new Set,sourcePrefixes:[]},w0=new Set([".git",".scipquery","node_modules","target"]),E0=6,D0=X("rust-library-surface",{clearGroups:["whole-project"]});function RS(e,t,n){if(!n.endsWith(".rs")||!T0(P0(e),n))return!1;let r=Y(e,n).find(i=>i.symbol===t);return r?F0(Ce(e,n)[r.startLine]??""):!1}function P0(e){return D0.get(e,()=>k0(e.config.projectRoot))}function k0(e){let t=new Set,n=new Set;for(let r of _0(e)){let i=Ea(e,r,"Cargo.toml"),o=x0(i,"utf8"),s=L0(o),a=rn(r,"src/lib.rs"),c=s?rn(r,s):!N0(o)&&wa(Ea(e,a))?a:null;if(!c)continue;t.add(c);let l=v0(c).replaceAll("\\","/");n.add(l==="."?"":`${l}/`)}return t.size===0?I0:{rootFiles:t,sourcePrefixes:[...n].sort()}}function T0(e,t){return t.endsWith(".rs")?e.rootFiles.has(t)?!0:A0(t)?!1:e.sourcePrefixes.some(n=>t.startsWith(n)):!1}function F0(e){return/^\s*pub\s+(?!\()/.test(e)}function _0(e){if(!wa(e))return[];let t=[];return vS(e,"",t,0),t}function vS(e,t,n,r){let i=Ea(e,t);if(wa(i)&&(wa(Ea(i,"Cargo.toml"))&&n.push(t),!(r>=E0)))for(let o of R0(i,{withFileTypes:!0})){if(!o.isDirectory()||w0.has(o.name))continue;let s=t?`${t}/${o.name}`:o.name;vS(e,s,n,r+1)}}function L0(e){let t=!1;for(let n of e.split(`
376
+ `)){let r=n.replace(/\s+#.*$/,"").trim(),i=/^\[([^\]]+)\]$/.exec(r);if(i){t=i[1]==="lib";continue}if(!t)continue;let o=/^path\s*=\s*["']([^"']+)["']/.exec(r)?.[1];if(o)return o.replaceAll("\\","/").replace(/^\.\//,"")}return null}function N0(e){let t=!1;for(let n of e.split(`
377
+ `)){let r=n.replace(/\s+#.*$/,"").trim(),i=/^\[([^\]]+)\]$/.exec(r);if(i){t=i[1]==="package";continue}if(t&&/^autolib\s*=\s*false\b/.test(r))return!0}return!1}function A0(e){return/(?:^|\/)src\/main\.rs$/.test(e)||/(?:^|\/)src\/bin\//.test(e)||/(?:^|\/)(?:examples|tests|benches)\//.test(e)}function G(e){let t=ne(e);return Q0(t)?"test":Z0(t)?"worker":eO(t)?"entry":tO(t)?"barrel":"source"}function zr(e){return G(e)==="barrel"}function wS(e){return M0.get(e,()=>{let n=N(e,{includeIgnored:!1}).filter(s=>{let a=G(s);return a==="entry"||a==="worker"});if(n.length===0)return new Set;let r=ie(e),i=new Set,o=new Set;for(;n.length>0;){let s=n.shift();if(!i.has(s)){i.add(s),G(s)==="barrel"&&o.add(s);for(let a of r.get(s)??[])i.has(a)||n.push(a)}}return o})}var M0=X("live-barrels",{clearGroups:["whole-project"]});function ld(e,t){return wS(e).has(ne(t))}function ES(e){let t=wS(e);return N(e,{includeIgnored:!1}).filter(n=>zr(n)&&!t.has(n)&&!O0(e,n))}function O0(e,t){let n=ne(t),r=ut(e).forFile(n,{facts:!0}).facts?.callables;return r&&r.length>0?!0:(e.get(`SELECT COUNT(*) AS n
378
+ FROM defn_enclosing_ranges der
379
+ JOIN documents d ON d.id = der.document_id
380
+ WHERE d.relative_path = ?
381
+ AND der.end_line - der.start_line >= 2`,n)?.n??0)>0}function De(e,t){let n=ne(t),r=G(t);return r==="entry"||r==="worker"||J0(n)||ld(e,n)}function de(e,t,n){let r=ne(n);if(ar(e,r)||B0(e,t,r)||RS(e,t,r)||K0(t,r))return!0;let i=e.config.entryRoots;return i?!!(i.files?.some(o=>ne(o)===r)||i.pathPrefixes?.some(o=>r.startsWith(ne(o)))||i.qualifiedVars?.some(o=>nO(t,o))||i.symbolPatterns?.some(o=>{try{return new RegExp(o).test(t)}catch{return!1}})):!1}var j0=X("package-surface-reachability",{clearGroups:["whole-project"]});function B0(e,t,n){let r=$0(e).get(n);return r===void 0?!1:r===null||r.has(T(t))}function $0(e){return j0.get(e,()=>{let t=new Map,n=[];for(let r of N(e,{includeIgnored:!1}))ar(e,r)&&(t.set(r,null),n.push(r));for(;n.length>0;){let r=n.shift(),i=t.get(r);if(i!==void 0)for(let o of Jt(e,r)){if(!o.sourcePath||e.isIgnored(o.sourcePath))continue;let s=H0(i,o);s!==void 0&&U0(t,o.sourcePath,s)&&n.push(o.sourcePath)}}return t})}function H0(e,t){if(e===null)return t.kind==="named"?new Set(t.names):null;if(t.kind==="star")return new Set(e);if(t.kind==="star-as")return;let n=t.names.filter(r=>e.has(r));return n.length>0?new Set(n):void 0}function U0(e,t,n){if(!e.has(t))return e.set(t,n),!0;let r=e.get(t);if(r===void 0)return!1;if(r===null||n===null)return r===null?!1:(e.set(t,null),!0);let i=!1;for(let o of n)r.has(o)||(r.add(o),i=!0);return i}var DS=new Set(["GET","POST","PUT","PATCH","DELETE","HEAD","OPTIONS"]),W0=new Set(["default","generateMetadata","generateStaticParams"]),G0=new Set(["default","getStaticProps","getServerSideProps","getStaticPaths","config"]),z0=new Set(["default","loader","action","clientLoader","clientAction","headers","links","meta","shouldRevalidate","ErrorBoundary","HydrateFallback"]),V0=new Set(["load","actions","entries",...DS]),q0=new Set(["default"]);function K0(e,t){let n=T(e);return n===""?!1:PS(t)?DS.has(n):kS(t)?W0.has(n):TS(t)?G0.has(n):FS(t)?z0.has(n):_S(t)?V0.has(n):X0(t)?q0.has(n):!1}function J0(e){return PS(e)||kS(e)||TS(e)||Y0(e)||FS(e)||_S(e)}function PS(e){return/(?:^|\/)app(?:\/[^/]+)*\/route\.(?:ts|tsx|js|jsx|mjs|cjs)$/.test(e)}function kS(e){return/(?:^|\/)app(?:\/[^/]+)*\/(?:page|layout|template|loading|error|not-found|global-error|head|default)\.(?:ts|tsx|js|jsx|mjs|cjs)$/.test(e)}function TS(e){return/(?:^|\/)pages\/.+\.(?:ts|tsx|js|jsx|mjs|cjs)$/.test(e)}function Y0(e){let t="(?:middleware|proxy|instrumentation)\\.(?:ts|js|mts|mjs)";return new RegExp(`^(?:src/)?${t}$`).test(e)||new RegExp(`(?:^|/)src/${t}$`).test(e)||new RegExp(`(?:^|/)(?:apps|services|packages)/[^/]+/(?:src/)?${t}$`).test(e)}function FS(e){return/(?:^|\/)app\/routes\/.+\.(?:ts|tsx|js|jsx|mjs|cjs)$/.test(e)}function _S(e){return/(?:^|\/)src\/routes\/(?:.*\/)?\+(?:page|page\.server|layout|layout\.server|server)\.(?:ts|js)$/.test(e)}function X0(e){return/(?:^|\/)src\/(?:pages|views|routes)\/.+\.(?:ts|tsx|js|jsx|vue)$/.test(e)}function Q0(e){return!!(/\.(?:test|spec)\.[a-z0-9]+$/i.test(e)||/(?:^|\/)(?:_)?test_[^/]+$/i.test(e)||/(?:^|\/)spec_[^/]+$/i.test(e)||/(?:^|\/)[^/]+_test\.[a-z0-9]+$/i.test(e)||/(?:^|\/)[^/]+_tests\.rs$/i.test(e)||/(?:^|\/)tests\.rs$/i.test(e)||/(?:^|\/)[^/]+_spec\.[a-z0-9]+$/i.test(e)||/(?:^|\/)__tests__\//i.test(e)||/(?:^|\/)test\//i.test(e)||/(?:^|\/)tests\//i.test(e)||/(?:^|\/)__fixtures__\//i.test(e)||/(?:^|\/)__mocks__\//i.test(e)||/(?:^|\/)test-support\//i.test(e)||/(?:^|\/)test-utils\//i.test(e)||/(?:^|\/)testing\//i.test(e))}function Z0(e){return/(?:^|\/)[^/]*worker\.(?:ts|tsx|js|mjs|cjs|rs|py|go)$/.test(e)}function eO(e){let t=e.split("/"),n=t[t.length-1]??e;return n==="cli.ts"||n==="cli.js"||n==="postinstall.ts"||n==="postinstall.js"||n==="main.ts"||n==="main.js"||n==="main.rs"||n==="main.go"||n==="main.py"||n==="build.rs"||n==="lib.rs"||/\bsrc\/bin\/[^/]+\.rs$/.test(e)||/(?:^|\/)examples\/[^/]+\.rs$/.test(e)||/(?:^|\/)tests\/[^/]+\.rs$/.test(e)||/(?:^|\/)benches\/[^/]+\.rs$/.test(e)?!0:n==="index.ts"||n==="index.js"?/(?:^|\/)(?:apps|services)\/[^/]+\/src\/index\.(?:ts|js)$/.test(e)?!0:t.length<=2:!1}function tO(e){return e==="index.ts"||e==="index.js"||e.endsWith("/index.ts")||e.endsWith("/index.js")||e.endsWith("/mod.rs")||e.endsWith("/__init__.py")}function nO(e,t){let n=t.lastIndexOf("/");if(n<0)return!1;let r=t.slice(0,n),i=t.slice(n+1);return e.includes(IS(r)+"/")&&e.includes(IS(i)+".")}function IS(e){return/^[A-Za-z0-9_$+-]+$/.test(e)?e:"`"+e.replace(/`/g,"``")+"`"}import{SymbolInformation_Kind as V}from"@c4312/scip";var Da=new Map(Object.entries(V).filter(([e,t])=>Number.isInteger(Number(e))&&typeof t=="string").map(([e,t])=>[Number(e),t])),LS=new Map([...Da.entries()].map(([e,t])=>[t.toLowerCase(),e]));function ao(e){return Da.get(e)??"Unknown"}function Nt(){return[V.Function,V.Method,V.Macro,V.Constructor,V.Getter,V.Setter,V.StaticMethod,V.SingletonMethod,V.AbstractMethod,V.ProtocolMethod,V.TraitMethod]}function NS(){return[V.Class,V.Interface,V.Struct,V.Trait,V.Type,V.TypeAlias,V.Enum,V.Union,V.Protocol]}function Zne(){return[V.Constant,V.Variable,V.Value,V.Field,V.Property,V.StaticDataMember,V.StaticField,V.StaticProperty,V.StaticVariable,V.EnumMember]}function ft(e,t,n={}){let r=Pa(e,[t],{additive:n.additive,semantic:n.semantic,semanticEvidence:n.semanticEvidence}),i=n.callableOnly?(r.get(t.symbolId)??[]).filter(o=>le(o.symbol)||o.source==="ast-callsite"):r.get(t.symbolId)??[];return typeof n.limit=="number"?i.slice(0,n.limit):i}function xt(e,t,n){return dd(e,[t],n).get(t.symbolId)??[]}function dd(e,t,n){let r=oO(e)?aO(e,t,{semantic:n.semantic!==!1,semanticEvidence:n.semanticEvidence}):sO(e,n.semanticEvidence);return typeof n.limit!="number"?new Map(t.map(i=>[i.symbolId,r.get(i.symbolId)??[]])):new Map(t.map(i=>[i.symbolId,(r.get(i.symbolId)??[]).slice(0,n.limit)]))}var rO=X("caller-rows",{clearGroups:["whole-project"]}),iO=2e4;function oO(e){return(e.get("SELECT COUNT(*) AS count FROM global_symbols")?.count??0)>iO}function sO(e,t){return rO.get(e,()=>{let n=xe(e),r=Pa(e,n,{semanticEvidence:t}),i=new Map;for(let a of n)i.set(a.symbol,a.symbolId);let o=new Map,s=new Map;for(let a of n){let c=r.get(a.symbolId);if(!(!c||c.length===0))for(let l of c){let u=i.get(l.symbol);if(u===void 0||u===a.symbolId)continue;let d=o.get(u);d||(d=[],o.set(u,d),s.set(u,new Set));let m=`${a.symbol}|${a.relativePath}`;s.get(u).has(m)||(s.get(u).add(m),d.push({symbol:a.symbol,file:a.relativePath,source:"caller-map-inversion"}))}}return o})}function aO(e,t,n){let r=n.semantic&&n.semanticEvidence?t.flatMap(a=>{let c=cO(e,a);return c?[c]:[]}):[],i=new Map(r.map(a=>[a.symbolId,a])),o=n.semanticEvidence?.referenceMap(e,r)??new Map,s=new Map;for(let a of t){let c=[],l=new Set,u=m=>{if(m.symbol===a.symbol)return;let f=`${m.symbol}|${m.file}`;l.has(f)||(l.add(f),c.push(m))};for(let m of ki(e,a))m.file!==a.relativePath&&u({symbol:m.enclosingSymbol??m.file,file:m.file,source:"resolved-reference"});let d=i.get(a.symbolId);if(d)for(let m of o.get(d.symbolId)??[]){if(m.file===a.relativePath||e.isIgnored(m.file))continue;let f=Dt(Y(e,m.file),m.line);u({symbol:f?.symbol??m.file,file:m.file,source:"semantic-reference"})}s.set(a.symbolId,c)}return s}function cO(e,t){let n=Nt().join(", "),r=NS().join(", ");return e.get(`SELECT
382
+ d.id AS documentId,
383
+ gs.id AS symbolId,
384
+ gs.symbol,
385
+ d.relative_path AS relativePath,
386
+ COALESCE(der.start_line, c.start_line) AS startLine,
387
+ COALESCE(der.end_line, c.end_line) AS endLine,
388
+ COALESCE(gs.display_name, '') AS leaf,
389
+ NULL AS parentTypeName,
390
+ CASE WHEN gs.kind IN (${n}) OR gs.symbol LIKE '%().' THEN 1 ELSE 0 END AS isFunctionLike,
391
+ CASE WHEN gs.kind IN (${r}) THEN 1 ELSE 0 END AS isTypeLike,
392
+ gs.kind AS kind,
393
+ gs.documentation AS documentation,
394
+ gs.enclosing_symbol AS enclosingSymbol
395
+ FROM global_symbols gs
396
+ LEFT JOIN defn_enclosing_ranges der ON der.symbol_id = gs.id
397
+ LEFT JOIN chunks c ON c.document_id = der.document_id
398
+ JOIN documents d ON d.id = COALESCE(der.document_id, c.document_id)
399
+ WHERE gs.id = ?
400
+ LIMIT 1`,t.symbolId)??null}function Pa(e,t,n={}){if(t.length===0)return new Map;let r=n.additive??!1,i=[],o=[];for(let u of t)M(u.relativePath)&&hn(e,u.relativePath)!==null?i.push(u):o.push(u);let s=new Map,a=new Map,c=u=>{for(let[d,m]of u){let f=s.get(d);f||(f=[],s.set(d,f));let p=a.get(d);p||(p=new Set,a.set(d,p));for(let g of m){let y=`${g.symbol}|${g.chunkId}`;p.has(y)||(p.add(y),f.push(g))}}};i.length>0&&c(lO(e,i)),n.semantic!==!1&&n.semanticEvidence&&c(gO(n.semanticEvidence.calleeMap(e,t)));let l=r?t:o;return l.length>0&&c(fO(e,l)),s}function lO(e,t){let n=new Map,r=uO(t,n),i=Zt(e);for(let[o,s]of r){let a=hn(e,o);if(!a)continue;let c=Dl(s);for(let l of a){let u=c.get(l.line);if(!u)continue;let d=dO(e,o,i,l);d&&d.symbol!==u.symbol&&n.get(u.symbolId).push({symbol:d.symbol,file:d.file,chunkId:l.line,source:"ast-callsite"})}}return n}function uO(e,t){let n=new Map;for(let r of e){let i=n.get(r.relativePath);i?i.push(r):n.set(r.relativePath,[r]),t.set(r.symbolId,[])}for(let r of n.values())r.sort((i,o)=>i.endLine-i.startLine-(o.endLine-o.startLine));return n}function dO(e,t,n,r){let i=Ds(t,n.get(r.calleeLeaf)??[]);if(i.length===0)return null;let o=mO(e,t,i,r.calleeQualifier);return o||Ps(e,t,i,r.memberAccess)}function mO(e,t,n,r){if(!r||M(t)!=="clojure")return null;let o=Z(e,t).filter(s=>s.kind==="namespace"&&s.localName===r&&s.sourcePath).map(s=>s.sourcePath);for(let s of o){let a=n.find(c=>Ve(s,c.file));if(a)return a}return n.find(s=>/`([^`]+)`\//.exec(s.symbol)?.[1]===r)??null}function fO(e,t){if(t.length===0)return new Map;let r=ud(t.map(f=>f.documentId)).flatMap(f=>e.all(`SELECT c.document_id, c.id AS chunk_id, c.start_line, c.end_line, m.symbol_id
401
+ FROM mentions m
402
+ JOIN chunks c ON m.chunk_id = c.id
403
+ WHERE m.role != 1
404
+ AND c.document_id IN (${f.map(()=>"?").join(",")})`,...f)),i=new Map;for(let f of r)i.has(f.document_id)||i.set(f.document_id,[]),i.get(f.document_id).push(f);let s=ud(r.map(f=>f.symbol_id)).flatMap(f=>e.all(`SELECT gs.id AS symbol_id, gs.symbol,
405
+ COALESCE(der.document_id, def_chunk.document_id) AS document_id
406
+ FROM global_symbols gs
407
+ LEFT JOIN defn_enclosing_ranges der ON der.symbol_id = gs.id
408
+ LEFT JOIN (
409
+ SELECT m.symbol_id, MIN(c.document_id) AS document_id
410
+ FROM mentions m
411
+ JOIN chunks c ON m.chunk_id = c.id
412
+ WHERE m.role = 1
413
+ AND m.symbol_id IN (${f.map(()=>"?").join(",")})
414
+ GROUP BY m.symbol_id
415
+ ) def_chunk ON def_chunk.symbol_id = gs.id
416
+ WHERE gs.id IN (${f.map(()=>"?").join(",")})`,...f,...f)),a=ud([...t.map(f=>f.documentId),...s.flatMap(f=>f.document_id===null?[]:[f.document_id])]),c=new Map(a.flatMap(f=>e.all(`SELECT id, relative_path FROM documents
417
+ WHERE id IN (${f.map(()=>"?").join(",")})`,...f).map(p=>[p.id,p.relative_path]))),l=new Map;for(let f of s)l.has(f.symbol_id)||l.set(f.symbol_id,{symbol:f.symbol,file:f.document_id!==null?c.get(f.document_id)??"":""});let u=new Map,d=c,m=pO(t);for(let[f,p]of m){let y=[...i.get(f)??[]].sort((C,S)=>C.start_line-S.start_line||C.end_line-S.end_line),h=[...p].sort((C,S)=>C.startLine-S.startLine||C.endLine-S.endLine),x=new Set,b=0;for(let C of h){for(;b<y.length&&y[b].start_line<=C.endLine;)x.add(y[b]),b+=1;for(let w of x)w.end_line<C.startLine&&x.delete(w);let S=new Set,v=[],R=null,D=()=>{if(R)return R;let w=d.get(C.documentId)??"",P=new Set;if(w){let L=cg(e,w),re=Math.max(0,C.startLine),Q=Math.min(L.length-1,C.endLine);for(let _=re;_<=Q;_+=1)for(let ae of L[_])P.add(ae)}return R=P,P};for(let w of x){if(w.symbol_id===C.symbolId)continue;let P=l.get(w.symbol_id);if(!P)continue;if(!(w.start_line>=C.startLine&&w.end_line<=C.endLine)){if(!(w.start_line<=C.endLine&&w.end_line>=C.startLine))continue;let _=T(P.symbol);if(!_||!D().has(_))continue}let re=`${P.symbol}|${w.chunk_id}`;S.has(re)||(S.add(re),v.push({...P,chunkId:w.chunk_id,source:"scip-chunk"}))}u.set(C.symbolId,v)}}return u}var AS=500;function ud(e){let t=[...new Set(e)],n=[];for(let r=0;r<t.length;r+=AS)n.push(t.slice(r,r+AS));return n}function pO(e){let t=new Map;for(let n of e){let r=t.get(n.documentId);r?r.push(n):t.set(n.documentId,[n])}return t}function gO(e){let t=new Map;for(let[n,r]of e){let i=[];for(let o of r)i.push({symbol:o.symbol,file:o.file,chunkId:-1,source:"semantic-callee"});t.set(n,i)}return t}function MS(e,t,n={}){let r=new Map;if(t&&t.length===0)return r;let i=N(e,{includeIgnored:!1}),o=Zt(e),s=t??xe(e),a=new Set(s.map(l=>l.symbolId)),c=RO(s);return hO(e,r,i,o,a,c),yO(e,r,s,a),xO(e,r,i,o,a,c),n.semantic!==!1&&n.semanticEvidence&&IO(r,n.semanticEvidence.callerMap(e,vO(s))),r}function hO(e,t,n,r,i,o){for(let s of n){if(!M(s))continue;let a=hn(e,s);if(a)for(let c of a){if(o&&!o.has(c.calleeLeaf))continue;let l=Ds(s,r.get(c.calleeLeaf)??[]);if(!l||l.length===0)continue;let u=Ps(e,s,l,c.memberAccess);u&&i.has(u.symbolId)&&u.file!==s&&md(t,u.symbolId,s)}}}function yO(e,t,n,r){let i=SO(n);for(let o of bO(e,r))e.isIgnored(o.relative_path)||CO(o,i.get(o.symbol_id))||md(t,o.symbol_id,o.relative_path)}function bO(e,t){return Lr(e,t?[...t]:void 0)}function SO(e){let t=new Map;for(let n of e)t.set(n.symbolId,{docId:n.documentId,startLine:n.startLine,endLine:n.endLine});return t}function CO(e,t){return!!t&&t.docId===e.document_id&&e.chunk_start>=t.startLine&&e.chunk_end<=t.endLine}function xO(e,t,n,r,i,o){for(let s of n){if(M(s)!=="rust")continue;let a=zn(e,s,{includeRustAttributeNames:!0});if(a.length!==0)for(let{name:c}of a){if(o&&!o.has(c))continue;let l=r.get(c);if(l)for(let u of l)i.has(u.symbolId)&&u.file!==s&&md(t,u.symbolId,s)}}}function md(e,t,n){let r=e.get(t);r||(r=new Set,e.set(t,r)),r.add(n)}function RO(e){let t=new Set;for(let n of e){let r="leaf"in n&&typeof n.leaf=="string"?n.leaf:"symbol"in n&&typeof n.symbol=="string"?T(n.symbol):"";r&&t.add(r)}return t.size>0?t:null}function vO(e){return e.filter(t=>"relativePath"in t&&"symbol"in t&&"leaf"in t)}function IO(e,t){for(let[n,r]of t){let i=e.get(n);i||(i=new Set,e.set(n,i));for(let o of r)i.add(o)}}function fd(e,t,n={}){return MS(e,t,n)}function co(e,t,n={}){return bg(e,t,n)}function OS(e,t,n={}){let r=fd(e,t,{semantic:n.semantic,semanticEvidence:n.semanticEvidence});return n.sourceFallback===!1?r:on(r,co(e,t))}function on(e,t){let n=new Map;for(let[r,i]of e)n.set(r,new Set(i));for(let[r,i]of t){let o=n.get(r)??new Set;for(let s of i)o.add(s);n.set(r,o)}return n}function jS(e,t,n){let r=t.identifierResolution==="strict"?Nr:hg,i=t.candidateNames?Di(t.candidateNames):null,o=0,s=0,a=0,c=0,l="";for(let u of t.paths)if(o+=1,l=u,!(!M(u)&&!(t.includeVueSfc&&Ut(u)))&&!e.isIgnored(u)&&!t.skipPath?.(u))try{if(i&&!ks(k(e,u),i))continue;s+=1;let m=(p,g,y,h)=>{if(t.candidateNames&&!t.candidateNames.has(p))return;a+=1;let x=t.resolveTargets?t.resolveTargets({sourceFile:u,name:p,kind:g,defaultTargets:h}):h();for(let b of x)c+=1,n({sourceFile:u,name:p,target:b,occurrences:y,kind:g})},f=Qt(e,u);for(let[p,g]of f)m(p,"identifier",g.length,()=>r(e,u,p));for(let p of zn(e,u,{includeCrossLanguageDispatchNames:t.includeCrossLanguageDispatchNames,includeRustAttributeNames:t.includeRustAttributeNames})){let g=p.kind==="cross-language-dispatch"?()=>Nr(e,u,p.name):()=>r(e,u,p.name);m(p.name,p.kind,p.occurrences,g)}}finally{t.afterPath?.(u),o%10===0&&E("source-reference-scan.progress",()=>{},()=>({scannedPaths:o,currentPath:l,candidateMatchedPaths:s,visitedNames:a,visitedHits:c}))}}function O(e){return e.endLine-e.startLine+1}function BS(e,t={}){let{scope:n,files:r,minLoc:i=1,maxLoc:o=Number.POSITIVE_INFINITY,excludeSymbol:s,excludeEntrySurfaces:a=!1,excludeTypesFiles:c=!1,excludeRootedSymbols:l=!1,requireFunctionLikeSymbol:u=!1,requireCallableSymbol:d=!1,excludeRustTraitImplMembers:m=!1,includeSuppressed:f=!1,sortByLocDesc:p=!1}=t,g=[],y=wO(e,{scope:n,files:r,requireFunctionLikeSymbol:u,requireCallableSymbol:d}),h=new Map,x=new Map,b=S=>{let v=h.get(S);if(v!==void 0)return v;let R=De(e,S);return h.set(S,R),R},C=S=>{let v=x.get(S);if(v!==void 0)return v;let R=G(S);return x.set(S,R),R};for(let S of y){let v=S.relativePath;if(e.isIgnored(v)||a&&b(v)||!EO(S,{requireFunctionLikeSymbol:u,requireCallableSymbol:d})||s!==void 0&&S.symbol===s)continue;let R=O(S);R<i||R>o||c&&DO(v)||l&&de(e,S.symbol,v)||m&&Ie(S.symbol)||C(v)!=="test"&&(br(S.symbol)||!f&&Wo(e,v,S.startLine)||g.push(S))}return p?g.sort((S,v)=>O(v)-O(S)):g}function wO(e,t){return t.files!==void 0?[...new Set(t.files.map(r=>r.replace(/\\/g,"/")))].sort().filter(r=>!t.scope||r.includes(t.scope)).flatMap(r=>Y(e,r)):t.requireCallableSymbol?vi(e,{scope:t.scope,symbolMatches:le,sqlPrefilter:"callable"}):t.requireFunctionLikeSymbol?vi(e,{scope:t.scope,symbolMatches:te,sqlPrefilter:"function-like"}):ng(e,t.scope)}function EO(e,t){return t.requireCallableSymbol?le(e.symbol):t.requireFunctionLikeSymbol?te(e.symbol):e.isFunctionLike}function DO(e){return(e.split("/").pop()??"").includes("types")}var F=class{constructor(t){this.db=t}db;scopedDefinitions(t){return El(this.db,t)}definitionsForFile(t){return Y(this.db,t)}productionCallableDefinitions(t={}){return BS(this.db,t)}calleeMap(t,n={}){return Pa(this.db,t,{...n,semanticEvidence:H})}crossFileCallerMap(t,n={}){return fd(this.db,t,{...n,semanticEvidence:H})}sourceFallbackCallerFiles(t,n={}){return co(this.db,t,n)}callerFileMap(t,n={}){return OS(this.db,t,{...n,semanticEvidence:H})}frameworkReferencedSymbolIds(t){let n=new Map;for(let i of t){if(!i.leaf)continue;let o=n.get(i.leaf)??[];o.push(i.symbolId),n.set(i.leaf,o)}let r=new Set;for(let i of N(this.db,{includeIgnored:!1}))if(M(i)==="rust")for(let{name:o}of zn(this.db,i,{includeRustAttributeNames:!0}))for(let s of n.get(o)??[])r.add(s);return r}symbolsWithNonSelfCallees(t,n={}){if(t.length===0)return new Set;let r=new Map(t.map(o=>[o.symbolId,o.symbol])),i=this.calleeMap(t,n);return new Set([...i.entries()].filter(([o,s])=>{let a=r.get(o);return s.some(c=>c.symbol!==a)}).map(([o])=>o))}fileDependencyGraph(t){return ie(this.db,t)}fileKind(t){return G(t)}hasSuppressionComment(t){return Wo(this.db,t.relativePath,t.startLine)}sourceFiles(){return $e(this.db)}scanSourceReferences(t,n){jS(this.db,t,n)}callableSignature(t){let n=ut(this.db).forFile(t.relativePath,{facts:!0}).facts?.callables.find(r=>r.startLine===t.startLine&&r.endLine===t.endLine);return n?{paramCount:n.paramCount}:null}};import{statSync as PO}from"fs";function cr(e){let t=e.get("SELECT COUNT(*) as c FROM documents").c,n=e.get("SELECT COUNT(*) as c FROM global_symbols").c,r=e.get("SELECT COUNT(*) as c FROM mentions WHERE role = 1").c,i=e.get("SELECT COUNT(*) as c FROM mentions WHERE role != 1").c;return{documents:t,symbols:n,definitions:r,references:i,...kO(e.config.dbPath)}}function kO(e){try{let t=PO(e);return{indexSizeBytes:t.size,lastBuilt:t.mtime}}catch{return{indexSizeBytes:0,lastBuilt:null}}}function TO(e){return/[*?]/.test(e)?e.replace(/\*\*/g,"%").replace(/\*/g,"%").replace(/\?/g,"_"):`%${e}%`}function FO(e,t){let n=TO(t);return N(e,{like:n,includeIgnored:!1}).filter(r=>_O(t,r)).map(r=>({relativePath:r}))}function _O(e,t){if(!/[*?]/.test(e))return t.includes(e);let n=e.includes("/")?e:`**/${e}`;return ka(n.split("/"),t.split("/"))}function ka(e,t){if(e.length===0)return t.length===0;let[n,...r]=e;return n==="**"?ka(r,t)||t.length>0&&ka(e,t.slice(1)):t.length===0||!LO(n??"",t[0]??"")?!1:ka(r,t.slice(1))}function LO(e,t){let n="^";for(let r of e)r==="*"?n+="[^/]*":r==="?"?n+="[^/]":n+=NO(r);return n+="$",new RegExp(n).test(t)}function NO(e){return/[\\^$.*+?()[\]{}|]/.test(e)?`\\${e}`:e}import{basename as AO}from"path";function MO(e,t){let n=B(e,t);if(!n)return[];let r=T(n.symbol),o=new F(e).definitionsForFile(n.relativePath).filter(l=>le(l.symbol)),s=o.filter(l=>l.parentTypeName===r||l.symbol.includes(r)),c=(s.length>0?s:OO(AO(n.relativePath))===r?o.filter(l=>l.symbol.includes("<invalid-global-code>")):[]).map(l=>({startLine:l.startLine,endLine:l.endLine,name:T(l.symbol)}));return M(n.relativePath)!=="clojure"?c:BO(c,jO(e,n))}function OO(e){return e.replace(/\.[^.]+$/,"")}function jO(e,t){let n=T(t.symbol);return n?(z(e,t.relativePath)?.clojureMembers??[]).filter(r=>r.ownerName===n).map(r=>({startLine:r.startLine,endLine:r.endLine,name:r.memberName})):[]}function BO(e,t){let n=new Map;for(let r of[...e,...t])n.set(`${r.name}:${r.startLine}:${r.endLine}`,r);return[...n.values()].sort((r,i)=>r.startLine-i.startLine||r.endLine-i.endLine)}function pd(e,t,n={}){let r=B(e,t);if(!r)return{definitions:[],referencedBy:[]};let i=e.get("SELECT display_name, documentation FROM global_symbols WHERE id = ?",r.symbolId),o=Xt(i?.documentation??null),s=e.isIgnored(r.relativePath)?[]:[{relativePath:r.relativePath,startLine:r.startLine,endLine:r.endLine,signature:HO(o,i?.display_name??null,r.symbol),source:$O(e,r.relativePath,r.startLine,r.endLine)}],a=Pt(e,r,{semantic:n.semantic,semanticEvidence:H}).map(c=>({relativePath:c.file,line:c.line,enclosingSymbol:c.enclosingSymbol,enclosingShort:c.enclosingSymbol?I(c.enclosingSymbol):"(top-level)"}));return{definitions:s,referencedBy:a}}function $O(e,t,n,r){let i=k(e,t);if(!i)return null;let s=i.split(`
418
+ `).slice(n,r+1).join(`
419
+ `).trimEnd();return s.length>0?s:null}function HO(e,t,n){let r=Yt(e);if(r&&!UO(r))return r;let i=(t??"").trim();return i?te(n)&&!i.endsWith("()")?`${i}()`:i:I(n)}function UO(e){return e.startsWith("undefined")||e.includes("|")||e.includes("```")}function gd(e,t){let n=Oe(e,t);return n?e.all(`SELECT DISTINCT d2.relative_path
420
+ FROM mentions m
421
+ JOIN chunks c ON m.chunk_id = c.id
422
+ JOIN documents d1 ON c.document_id = d1.id
423
+ JOIN global_symbols gs ON m.symbol_id = gs.id
424
+ JOIN (
425
+ SELECT m2.symbol_id, c2.document_id
426
+ FROM mentions m2
427
+ JOIN chunks c2 ON m2.chunk_id = c2.id
428
+ WHERE m2.role = 1
429
+ GROUP BY m2.symbol_id
430
+ ) sym_def ON sym_def.symbol_id = gs.id
431
+ JOIN documents d2 ON sym_def.document_id = d2.id
432
+ WHERE d1.relative_path = ?
433
+ AND d2.relative_path <> d1.relative_path
434
+ AND ${e.localSymbolPredicate}
435
+ ORDER BY d2.relative_path`,n).filter(i=>!e.isIgnored(i.relative_path)).map(i=>({relativePath:i.relative_path})):[]}function hd(e,t){let n=Oe(e,t);return n?e.all(`SELECT DISTINCT d1.relative_path
436
+ FROM mentions m
437
+ JOIN chunks c ON m.chunk_id = c.id
438
+ JOIN documents d1 ON c.document_id = d1.id
439
+ JOIN global_symbols gs ON m.symbol_id = gs.id
440
+ JOIN (
441
+ SELECT m2.symbol_id, c2.document_id
442
+ FROM mentions m2
443
+ JOIN chunks c2 ON m2.chunk_id = c2.id
444
+ WHERE m2.role = 1
445
+ GROUP BY m2.symbol_id
446
+ ) sym_def ON sym_def.symbol_id = gs.id
447
+ JOIN documents d2 ON sym_def.document_id = d2.id
448
+ WHERE d2.relative_path = ?
449
+ AND d1.relative_path != ?
450
+ ORDER BY d1.relative_path`,n,n).filter(i=>!e.isIgnored(i.relative_path)).map(i=>({relativePath:i.relative_path})):[]}function yd(e,t){let n=$r(e,t);if(n.length===0)return{files:[],symbols:[],dependsOn:[],dependedOnBy:[]};let r=n.map(()=>"?").join(", "),o=e.all(`SELECT relative_path FROM documents
451
+ WHERE relative_path IN (${r})
452
+ ORDER BY relative_path`,...n).map(d=>d.relative_path).filter(d=>!e.isIgnored(d)),s=Ss(e,o,{onlyDocumented:!0,sort:!0}).map(({relativePath:d,...m})=>m),c=e.all(`SELECT DISTINCT d2.relative_path
453
+ FROM mentions m
454
+ JOIN chunks c ON m.chunk_id = c.id
455
+ JOIN documents d1 ON c.document_id = d1.id
456
+ JOIN global_symbols gs ON m.symbol_id = gs.id
457
+ JOIN (
458
+ SELECT m2.symbol_id, c2.document_id
459
+ FROM mentions m2
460
+ JOIN chunks c2 ON m2.chunk_id = c2.id
461
+ WHERE m2.role = 1
462
+ GROUP BY m2.symbol_id
463
+ ) sym_def ON sym_def.symbol_id = gs.id
464
+ JOIN documents d2 ON sym_def.document_id = d2.id
465
+ WHERE d1.relative_path IN (${r})
466
+ AND d2.relative_path NOT IN (${r})
467
+ AND ${e.localSymbolPredicate}
468
+ ORDER BY d2.relative_path`,...n,...n).map(d=>d.relative_path).filter(d=>!e.isIgnored(d)),u=e.all(`SELECT DISTINCT d1.relative_path
469
+ FROM mentions m
470
+ JOIN chunks c ON m.chunk_id = c.id
471
+ JOIN documents d1 ON c.document_id = d1.id
472
+ JOIN global_symbols gs ON m.symbol_id = gs.id
473
+ JOIN (
474
+ SELECT m2.symbol_id, c2.document_id
475
+ FROM mentions m2
476
+ JOIN chunks c2 ON m2.chunk_id = c2.id
477
+ WHERE m2.role = 1
478
+ GROUP BY m2.symbol_id
479
+ ) sym_def ON sym_def.symbol_id = gs.id
480
+ JOIN documents d2 ON sym_def.document_id = d2.id
481
+ WHERE d2.relative_path IN (${r})
482
+ AND d1.relative_path NOT IN (${r})
483
+ ORDER BY d1.relative_path`,...n,...n).map(d=>d.relative_path).filter(d=>!e.isIgnored(d));return{files:o,symbols:s,dependsOn:c,dependedOnBy:u}}function bd(e,t){let n=$r(e,t);return n.length===0?[]:zO([...WO(e,n),...GO(e,n)]).filter(r=>!e.isIgnored(r.relative_path)).map(VO)}function WO(e,t){let n=t.map(()=>"?").join(", ");return e.all(`SELECT DISTINCT d1.relative_path, gs.symbol
484
+ FROM mentions m
485
+ JOIN chunks c ON m.chunk_id = c.id
486
+ JOIN documents d1 ON c.document_id = d1.id
487
+ JOIN global_symbols gs ON m.symbol_id = gs.id
488
+ WHERE d1.relative_path NOT IN (${n})
489
+ AND (
490
+ EXISTS (
491
+ SELECT 1
492
+ FROM defn_enclosing_ranges der
493
+ JOIN documents d2 ON der.document_id = d2.id
494
+ WHERE der.symbol_id = gs.id
495
+ AND d2.relative_path IN (${n})
496
+ )
497
+ OR EXISTS (
498
+ SELECT 1
499
+ FROM mentions def_m
500
+ JOIN chunks def_c ON def_m.chunk_id = def_c.id
501
+ JOIN documents d2 ON def_c.document_id = d2.id
502
+ WHERE def_m.symbol_id = gs.id
503
+ AND def_m.role = 1
504
+ AND d2.relative_path IN (${n})
505
+ )
506
+ )
507
+ AND m.role != 1
508
+ AND ${e.localSymbolPredicate}
509
+ ${e.pathExclusionsFor("d1")}
510
+ ORDER BY d1.relative_path`,...t,...t,...t)}function GO(e,t){let n=new F(e);return t.flatMap(r=>n.definitionsForFile(r).filter(i=>le(i.symbol)).map(i=>({relative_path:r,symbol:i.symbol})))}function zO(e){let t=new Set;return e.filter(n=>{let r=`${n.relative_path}|${n.symbol}`;return t.has(r)?!1:(t.add(r),!0)})}function VO(e){return{consumer:e.relative_path,symbol:e.symbol,shortName:I(e.symbol)}}var lo=new WeakMap,$S=oe({kind:"definition-exclusions",invalidation:J("definition-exclusions"),serialize:e=>JSON.stringify(e),deserialize:qO});function US(e,t){let n=M(t);if(!(n==="rust"||n==="typescript"||n==="tsx"||n==="javascript"))return[];let i=k(e,t);if(!i)return[];let o=ce(e,t,i),s=$S.read(e,t,o);if(s)return s;let a=n==="rust"?tj(e,t):XO(e,t);return $S.write(e,t,o,a),a}function qO(e){try{let t=JSON.parse(e);if(!Array.isArray(t))return null;let n=t.map(KO);return n.some(r=>r===null)?null:n}catch{return null}}function KO(e){if(!e||typeof e!="object")return null;let t=e;if(typeof t.startLine!="number"||!Number.isFinite(t.startLine)||typeof t.endLine!="number"||!Number.isFinite(t.endLine)||typeof t.reason!="string"||t.containerName!==void 0&&typeof t.containerName!="string")return null;let n=t.disposition===void 0?fj(t.reason):t.disposition;return n!=="exclude"&&n!=="implicit-usage"?null:{startLine:t.startLine,endLine:t.endLine,reason:t.reason,disposition:n,...t.containerName?{containerName:t.containerName}:{}}}var WS=new Set(["describe","it","test","fdescribe","fit","xdescribe","xit","beforeEach","afterEach","beforeAll","afterAll","before","after","suite","bench","benchmark"]),JO=/\b(?:describe|it|test|fdescribe|fit|xdescribe|xit|beforeEach|afterEach|beforeAll|afterAll|before|after|suite|bench|benchmark)\s*\(/,YO=/\b(?:export\s+)?(?:async\s+)?function\s+use[A-Z][A-Za-z0-9_$]*\b|\b(?:const|let|var)\s+use[A-Z][A-Za-z0-9_$]*\s*(?::[^=;]+)?=\s*(?:async\s*)?(?:function\b|(?:<[^=;{]+>\s*)?(?:\([^)]*\)|[A-Za-z_$][\w$]*)\s*=>)/;function XO(e,t){let n=k(e,t);if(!n||!QO(n))return[];let r=K(e,t);if(!r)return[];let i=lo.get(r);if(i)return i;let o=!1,s=r.rootNode;for(let c of s.namedChildren){if(c.type!=="expression_statement")continue;let l=c.namedChild(0);if(!l||l.type!=="call_expression")continue;let u=l.namedChild(0);if(!u)continue;let d=u.type==="member_expression"?u.namedChild(u.namedChildCount-1)?.text:u.text;if(d&&WS.has(d)){o=!0;break}}let a=[];o&&a.push({startLine:0,endLine:s.endPosition.row,reason:"TS/JS test file (describe/it/test at top level)",disposition:"exclude"});for(let c of s.namedChildren){let l=null,u=null;if(c.type==="function_declaration")l=c.namedChild(0)?.text??null,u=c;else if(c.type==="export_statement"){let d=c.namedChild(0);d?.type==="function_declaration"&&(l=d.namedChild(0)?.text??null,u=d)}else if(c.type==="lexical_declaration"){let d=c.namedChild(0);if(d?.type==="variable_declarator"){let m=d.namedChild(0)?.text,f=d.namedChild(1);m&&(f?.type==="arrow_function"||f?.type==="function_expression")&&(l=m,u=d)}}l&&/^use[A-Z]/.test(l)&&u&&a.push({startLine:u.startPosition.row,endLine:u.endPosition.row,reason:"React custom hook (use*)",disposition:"exclude"})}return a.push(...GS(r,new Set(["function_declaration","method_definition","class_declaration","interface_declaration","type_alias_declaration","enum_declaration","variable_declarator","export_statement"]),new Set(["comment"]))),lo.set(r,a),a}function QO(e){if(e.includes("scip-query"))return!0;let t=!1;for(let n of WS)if(e.includes(n)){t=!0;break}return t&&JO.test(e)?!0:e.includes("use")&&YO.test(e)}var ZO=/scip-query[\s:-]*ignore[\s:-]*(?:dead(?:-code)?|stale)?/i;function ej(e){return ZO.test(e)}function GS(e,t,n){let r=[],i=o=>{if(t.has(o.type)&&o.parent){let a=o.parent.children,c=-1;for(let l=0;l<a.length;l+=1)if(a[l].startIndex===o.startIndex&&a[l].type===o.type){c=l;break}if(c>0)for(let l=c-1;l>=0;l-=1){let u=a[l];if(n.has(u.type)){if(ej(u.text)){r.push({startLine:o.startPosition.row,endLine:o.endPosition.row,reason:"scip-query suppression comment",disposition:"exclude"});break}continue}if(!(u.type==="attribute_item"||u.type==="inner_attribute_item"))break}}for(let s of o.namedChildren)i(s)};return i(e.rootNode),r}function tj(e,t){let n=K(e,t);if(!n)return[];let r=lo.get(n);if(r)return r;let i=[],o=nj(n);return o?(lo.set(n,o),o):(zS(n.rootNode,i,!1,!1),i.push(...GS(n,new Set(["function_item","function_signature_item","struct_item","enum_item","union_item","impl_item","mod_item","static_item","const_item"]),new Set(["line_comment","block_comment"]))),i.push(...dj(n.rootNode)),lo.set(n,i),i)}function nj(e){return pj(e.rootNode)?[{startLine:0,endLine:e.rootNode.endPosition.row,reason:"generated file (@generated header)",disposition:"exclude"}]:null}function zS(e,t,n,r){let i=n,o=r;e.type==="trait_item"&&t.push({startLine:e.startPosition.row,endLine:e.endPosition.row,reason:"trait declaration body (dynamic dispatch)",disposition:"implicit-usage"}),e.type==="impl_item"&&e.childForFieldName("trait")&&(o=!0,t.push({startLine:e.startPosition.row,endLine:e.endPosition.row,reason:"trait impl block (dynamic dispatch)",disposition:"implicit-usage"})),e.type==="function_item"||e.type==="function_signature_item"?rj(e,t,n,r):r&&uj(e)?t.push({startLine:e.startPosition.row,endLine:e.endPosition.row,reason:"trait impl associated item (dynamic dispatch)",disposition:"implicit-usage"}):e.type==="struct_item"||e.type==="enum_item"||e.type==="union_item"?ij(e,t,n):e.type==="mod_item"&&Sd(e).some(s=>/#\[\s*cfg\s*\(\s*test\s*\)/.test(s))&&(i=!0);for(let s of e.namedChildren)zS(s,t,i,o)}function rj(e,t,n,r){let i=Sd(e),o=null;r?o={reason:"trait impl method (dynamic dispatch)",disposition:"implicit-usage"}:n&&(o={reason:"inside #[cfg(test)] mod",disposition:"exclude"});for(let s of i){if(VS(s)){o={reason:"#[allow(dead_code)]",disposition:"exclude"};break}let a=cj(s);if(a){o=a;break}}o&&t.push({startLine:e.startPosition.row,endLine:e.endPosition.row,reason:o.reason,disposition:o.disposition})}function ij(e,t,n){let r=Sd(e),i=e.namedChildren.find(o=>o.type==="type_identifier")?.text;r.some(lj)&&t.push({startLine:e.startPosition.row,endLine:e.endPosition.row,reason:"#[derive(...)] - generated impl may access fields",disposition:"implicit-usage",containerName:i}),r.some(VS)&&t.push({startLine:e.startPosition.row,endLine:e.endPosition.row,reason:"#[allow(dead_code)]",disposition:"exclude",containerName:i}),n&&t.push({startLine:e.startPosition.row,endLine:e.endPosition.row,reason:"inside #[cfg(test)] mod",disposition:"exclude",containerName:i})}function Sd(e){let t=e.parent;if(!t)return[];let n=t.children,r=-1;for(let o=0;o<n.length;o+=1)if(n[o].startIndex===e.startIndex&&n[o].type===e.type){r=o;break}if(r<=0)return[];let i=[];for(let o=r-1;o>=0;o-=1){let s=n[o];if(s.type==="attribute_item"||s.type==="inner_attribute_item")i.push(s.text);else{if(s.type==="line_comment"||s.type==="block_comment")continue;break}}return i}var oj=new Set(["test","bench","tokio::test","async_std::test"]),sj=new Set(["no_mangle","export_name","link_name","used","macro_export","proc_macro","proc_macro_derive","proc_macro_attribute"]),aj=new Set(["allow","warn","deny","forbid","cfg","cfg_attr","doc","inline","cold","must_use","deprecated","repr","derive","automatically_derived","non_exhaustive","path","link","link_section","global_allocator","panic_handler"]);function cj(e){if(/#\[\s*cfg\s*\(\s*test\s*\)/.test(e))return{reason:"#[cfg(test)]",disposition:"exclude"};let t=mj(e);return t?oj.has(t)?{reason:`#[${t}]`,disposition:"exclude"}:sj.has(t)?{reason:`Rust ABI/export attribute #[${t}]`,disposition:"implicit-usage"}:aj.has(t)?null:{reason:`Rust attribute macro #[${t}]`,disposition:"implicit-usage"}:null}function lj(e){return/#\[\s*derive\s*\(/.test(e)}function VS(e){return/#\[\s*allow\s*\(\s*dead_code\s*\)/.test(e)}function uj(e){return e.type==="const_item"||e.type==="type_item"||e.type==="static_item"||e.type==="associated_type"}function dj(e){let t=gj(e);if(t.size===0)return[];let n=[];for(let r of e.descendantsOfType("mod_item")){let i=r.childForFieldName("name")?.text;i&&t.has(i)&&n.push({startLine:r.startPosition.row,endLine:r.endPosition.row,reason:'attribute `with = "..."` module - body may be invoked via reflection',disposition:"implicit-usage",containerName:i})}return n}function mj(e){let t=/^#!?\[\s*([A-Za-z_][A-Za-z0-9_]*(?:\s*::\s*[A-Za-z_][A-Za-z0-9_]*)*)/.exec(e);return t?t[1].replace(/\s+/g,""):null}function fj(e){return e==="#[tauri::command]"||e==="#[command]"||e==="#[wasm_bindgen]"||e==="#[no_mangle]"||e==="#[napi]"||e==="#[pyfunction]"||e==="#[pymethod]"||e==="#[pyo3]"||e==="#[doc(hidden)]"||e.startsWith("trait ")||e.startsWith("#[derive(<reflective>)]")||e.startsWith("#[derive(...)]")||e.startsWith('serde `with = "')||e.startsWith('attribute `with = "')||e.startsWith("Rust attribute macro #[")||e.startsWith("Rust ABI/export attribute #[")?"implicit-usage":"exclude"}function pj(e){for(let t=0;t<Math.min(e.namedChildCount,12);t+=1){let n=e.namedChild(t);if(!n||n.type!=="line_comment"&&n.type!=="block_comment")break;if(/@generated\b/.test(n.text)||/This file is .*generated\b/i.test(n.text)||/Code generated by/i.test(n.text)||/Generated by:\s*https?:\/\/openapi-generator/i.test(n.text)||/openapi-generator/i.test(n.text)&&/Generated by/i.test(n.text))return!0}return!1}var HS=/\bwith\s*=\s*"([^"]+)"/g;function gj(e){let t=new Set;for(let n of e.descendantsOfType("attribute_item")){HS.lastIndex=0;let r;for(;(r=HS.exec(n.text))!==null;){let i=r[1],o=i.split("::").pop()??i;o&&t.add(o)}}return t}function qS(e){let t=Cd(e);return(n,r,i,o)=>t(n,r,i,o)?.disposition==="exclude"}function Cd(e){let t=new Map,n=r=>{let i=t.get(r);if(i)return i;let o=US(e,r),s=new Map;for(let a of o){if(!a.containerName)continue;let c=s.get(a.containerName)??[];c.push(a),s.set(a.containerName,c)}return i={ranges:o,containers:s},t.set(r,i),i};return(r,i,o,s)=>{let a=n(r),c=[];for(let u of a.ranges)i>=u.startLine&&i<=u.endLine&&c.push(u);let l=new Set;s&&l.add(s);for(let u of Rs(o))l.add(u);for(let u of l){let d=a.containers.get(u);d&&c.push(...d)}return hj(c)}}function hj(e){if(e.length===0)return null;let n=e.find(r=>r.disposition==="exclude")??e[0];return{disposition:n.disposition,reason:n.reason}}function xd(e,t={}){wc(e,{groups:t.semanticProvider===!0?["whole-project","semantic-provider"]:["whole-project"]})}function KS(e,t,n={}){wc(e,{groups:n.definitions===!0?["source-file","definition-catalog"]:["source-file"],file:t.replace(/\\/g,"/")})}function JS(e,t){if(t.isIgnoredPath(e.relativePath))return je("ignored-file");if(gn(e.symbol))return je("module-like-symbol");if(!Ta(e.symbol))return je("non-value-symbol");if(!e.isFunctionLike&&e.enclosingSymbol&&Ta(e.enclosingSymbol))return je("nested-non-callable-value");if(!t.includeTests&&!yj(e.relativePath))return je("test-file");if(!t.includeTests&&t.isExcludedRegion(e.relativePath,e.startLine,e.symbol,e.parentTypeName))return je("excluded-file-region");let n=T(e.symbol);if(n==="<constructor>")return je("implicit-constructor");if(e.symbol.startsWith("scip-python ")){if(n==="__all__")return je("python-runtime-metadata");if(/^__[^_].*__$/.test(n))return je("python-protocol-member")}return t.isDeclarationOnlyCallable()?je("declaration-only-callable"):t.isFrameworkContractCallable()?je("framework-contract-member"):Ie(e.symbol)?je("rust-trait-impl-member"):br(e.symbol)?je("rust-test-module"):!t.includeMembers&&!bj(e)?je("member"):e.endLine-e.startLine+1<t.minLoc?je("below-min-loc"):{accepted:!0}}function yj(e){return G(e)!=="test"}function je(e){return{accepted:!1,rejectionReason:e}}function Ta(e){return te(e)||e.endsWith("().")||e.endsWith(".")}function bj(e){return le(e.symbol)||Rs(e.symbol).length===0}function Fa(e,t){return O(e)-O(t)||e.relativePath.localeCompare(t.relativePath)}function se(e,t){return typeof t!="number"||t<=0||e.length<=t?e:e.slice(0,t)}function Vr(e){let t=new Set,n=[];for(let r of e){let i=`${r.symbol}|${r.file}`;t.has(i)||(t.add(i),n.push(r))}return n}function YS(){return new Map}function XS(e,t,n){let r=new Map;for(let i of lg(e,n))e.isIgnored(i.relative_path)||t.has(i.relative_path)||La(r,i.symbol_id,i.relative_path,i.ref_count,"scip-mention");return r}function QS(e,t,n,r={}){let i=new Set;if(r.conservative||n.size===0){for(let o of dg(e,t))i.add(o.symbol_id);return i}for(let o of ug(e,t))e.isIgnored(o.relative_path)||n.has(o.relative_path)||i.add(o.symbol_id);return i}function Rd(e,t){let n=e.get(t);if(!n)return!1;for(let r of n.values())if(r.occurrences>0)return!0;return!1}function _a(e,t,n){let r=e.get(t);if(!r)return!1;for(let[i,o]of r)if(i!==n&&o.occurrences>0)return!0;return!1}function ZS(e){return e?.occurrences??0}function La(e,t,n,r,i="source-fallback"){if(r<=0)return;let o=tC(e,t,n);o.occurrences+=r,o.sources.add(i)}function eC(e,t,n,r,i){if(r<=0)return;let o=tC(e,t,n);o.occurrences=Math.max(r,o.occurrences),o.sources.add(i)}function tC(e,t,n){let r=e.get(t);r||(r=new Map,e.set(t,r));let i=r.get(n);return i||(i={occurrences:0,sources:new Set},r.set(n,i)),i}var Sj=new Set(["componentDidCatch","componentDidMount","componentDidUpdate","componentWillUnmount","getDerivedStateFromError","getDerivedStateFromProps","getSnapshotBeforeUpdate","render","shouldComponentUpdate","UNSAFE_componentWillMount","UNSAFE_componentWillReceiveProps","UNSAFE_componentWillUpdate"]);function qr(e,t){if(!t.parentTypeName||!/\.[cm]?[jt]sx?$/.test(t.relativePath))return!1;let n=K(e,t.relativePath);if(!n)return!1;let r=n.rootNode.descendantsOfType("method_definition").find(s=>s.startPosition.row<=t.startLine&&s.endPosition.row>=t.endLine);if(!r)return!1;if(/\boverride\b/.test(r.text.slice(0,Math.max(0,r.text.indexOf("{")))))return!0;let i=r.parent;for(;i&&i.type!=="class_declaration"&&i.type!=="class";)i=i.parent;if(!i)return!1;let o=i.text.slice(0,Math.max(0,i.text.indexOf("{")));return/\bimplements\b/.test(o)||/\bextends\b/.test(o)?!0:Sj.has(t.leaf)&&/\bextends\s+(?:React\.)?(?:Component|PureComponent)\b/.test(o)}var Cj=1e3,xj=300;function lr(e,t={}){let{scope:n,minLoc:r=1,includeTests:i=!1,skipBarrels:o=!1,includeMembers:s=!1,deadCodeOnly:a=!1,scanLimit:c,semantic:l=!0}=t,u=0,d=E("dead.candidates",()=>{let S=se(Rj(e,{scope:n,minLoc:r,includeTests:i,includeMembers:s}),c);return u=S.length,S},()=>({definitions:u})),m=0,f=o?E("dead.inactive-barrels",()=>{let S=new Set(ES(e));return m=S.size,S},()=>({paths:m})):new Set,p=0,g=a?YS():E("dead.mention-reference-counts",()=>{let S=XS(e,f,d.map(v=>v.symbolId));return p=S.size,S},()=>({definitions:d.length,symbolsWithReferences:p})),y=0,h=a?E("dead.mentioned-symbol-ids",()=>{let S=QS(e,d.map(v=>v.symbolId),f,{conservative:f.size===0});return y=S.size,S},()=>({definitions:d.length,referencedSymbols:y})):new Set,x=a?d.filter(S=>!h.has(S.symbolId)):d.filter(S=>!_a(g,S.symbolId,S.relativePath));a?E("dead.source-fallback.dead-code-only",()=>kj(e,x,g,{inactiveBarrelPaths:f}),()=>({definitions:x.length,testReferencesIncluded:!0})):E("dead.source-fallback.ast",()=>Pj(e,x,g,{inactiveBarrelPaths:f}),()=>({definitions:x.length,testReferencesIncluded:!0}));let b=a?x.filter(S=>!Rd(g,S.symbolId)):x.filter(S=>!_a(g,S.symbolId,S.relativePath));E("dead.caller-map-supplement",()=>Nj(e,b,g,{inactiveBarrelPaths:f,includeSemantic:!a&&l}),()=>({definitions:b.length,semantic:!a&&l}));let C=a?x.filter(S=>!Rd(g,S.symbolId)):d;return Dj(e,wj(C,g))}function Rj(e,t){let n=qS(e),r=[];for(let i of vi(e,{scope:t.scope,symbolMatches:Ta,sqlPrefilter:"function-like"}))JS(i,{minLoc:t.minLoc,includeTests:t.includeTests,includeMembers:t.includeMembers,isIgnoredPath:s=>e.isIgnored(s),isExcludedRegion:n,isDeclarationOnlyCallable:()=>Ij(e,i),isFrameworkContractCallable:()=>qr(e,i)}).accepted&&r.push(i);return r}var vj=["method_signature","abstract_method_signature","call_signature","construct_signature"];function Ij(e,t){if(!t.parentTypeName||!/\.[cm]?[jt]sx?$/.test(t.relativePath))return!1;let n=K(e,t.relativePath);if(n)return n.rootNode.descendantsOfType([...vj]).some(i=>i.startPosition.row<=t.startLine&&i.endPosition.row>=t.endLine);let r=Ce(e,t.relativePath).slice(t.startLine,t.endLine+1).join(`
511
+ `).trim();return r.endsWith(";")&&!r.includes("=>")&&!r.includes("{")}function wj(e,t){return e.map(n=>Ej(n,t)).filter(n=>n.cross_file_refs===0).sort((n,r)=>r.loc-n.loc||n.relative_path.localeCompare(r.relative_path)||n.start_line-r.start_line)}function Ej(e,t){let n=t.get(e.symbolId)??new Map,r=ZS(n.get(e.relativePath)),i=0;for(let[o,s]of n)o!==e.relativePath&&(i+=s.occurrences);return{relative_path:e.relativePath,start_line:e.startLine,end_line:e.endLine,loc:e.endLine-e.startLine+1,symbol:e.symbol,parent_type_name:e.parentTypeName,same_file_refs:r,cross_file_refs:i}}function Dj(e,t){let n=Cd(e),r=[],i=0,o=0,s=0,a=0,c=0,l=0;for(let u of t){if(e.isIgnored(u.relative_path))continue;if(De(e,u.relative_path)){a++;continue}if(de(e,u.symbol,u.relative_path)){c++;continue}let d=n(u.relative_path,u.start_line,u.symbol,u.parent_type_name),m=d?.disposition==="implicit-usage"?d.reason:void 0,f=m?"implicit-usage":u.same_file_refs===0?"dead-code":"file-internal";f==="dead-code"?i++:f==="file-internal"?o++:s++,l+=u.loc,r.push({relativePath:u.relative_path,startLine:u.start_line,endLine:u.end_line,loc:u.loc,symbol:u.symbol,shortName:I(u.symbol),sameFileRefs:u.same_file_refs,kind:f,...m?{implicitUsageReason:m}:{}})}return{symbols:r,counts:{total:r.length,deadCode:i,fileInternal:o,implicitUsage:s,loc:l},applicability:{entrySurfaceExcluded:a,externalRootExcluded:c,implicitUsageSignals:s},totalCount:r.length,deadCodeCount:i,fileInternalCount:o,implicitUsageCount:s,totalLoc:l}}function Pj(e,t,n,r){if(t.length===0)return;let i=new F(e),o=new Set(t.map(c=>c.symbolId)),s=new Set(t.map(c=>c.leaf).filter(Boolean)),a=new Set(i.sourceFiles());for(let c of N(e))a.add(c);i.scanSourceReferences({paths:a,includeVueSfc:!0,includeCrossLanguageDispatchNames:!0,includeRustAttributeNames:!0,identifierResolution:"permissive",candidateNames:s,skipPath:c=>r.inactiveBarrelPaths.has(c)},c=>{o.has(c.target.symbolId)&&(_j(e,c)||La(n,c.target.symbolId,c.sourceFile,Lj(c),"source-fallback"))})}function kj(e,t,n,r){if(t.length===0)return;let i=new F(e),o=Tj(t),s=new Set(i.sourceFiles());for(let u of N(e))s.add(u);let a=new Set(o.keys()),c=new Map,l=u=>{let d=c.get(u);return d||(d=Ts(e,u),c.set(u,d)),d};i.scanSourceReferences({paths:s,includeVueSfc:!0,includeCrossLanguageDispatchNames:!0,includeRustAttributeNames:!0,identifierResolution:"permissive",candidateNames:a,skipPath:u=>r.inactiveBarrelPaths.has(u),resolveTargets:({sourceFile:u,name:d,kind:m})=>{let f=o.get(d);return f?Fj(u,d,f,()=>l(u),{permissive:m!=="cross-language-dispatch"}):[]},afterPath:u=>{c.delete(u),KS(e,u)}},u=>{let d=u.kind==="identifier"&&u.sourceFile===u.target.relativePath?Math.max(0,u.occurrences-1):u.occurrences;u.kind==="identifier"&&nC(e,{sourceFile:u.sourceFile,name:u.name,target:u.target,occurrences:d})||La(n,u.target.symbolId,u.sourceFile,d,"source-fallback")})}function Tj(e){let t=new Map;for(let n of e){if(!n.leaf)continue;let r=t.get(n.leaf)??[];r.push(n),t.set(n.leaf,r)}return t}function Fj(e,t,n,r,i){let o=n.filter(l=>l.relativePath===e);if(o.length>0)return o;if(!i.permissive&&n.length===1)return[...n];let s=r(),a=s.get(t);if(a)for(let l of a){let u=n.filter(d=>Ve(l,d.relativePath));if(u.length>0)return u}let c=new Set;for(let l of s.values())for(let u of l)c.add(u);for(let l of c){let u=n.filter(d=>Ve(l,d.relativePath));if(u.length>0&&u.length===n.length)return u}return i.permissive?[...n]:[]}function _j(e,t){return t.kind==="cross-language-dispatch"&&t.target.relativePath===t.sourceFile?!0:t.kind==="identifier"&&nC(e,t)}function Lj(e){return e.kind==="identifier"&&e.target.relativePath===e.sourceFile?Math.max(0,e.occurrences-1):e.occurrences}function nC(e,t){return t.occurrences>1?!1:Z(e,t.sourceFile).some(n=>n.used||n.sourcePath!==t.target.relativePath?!1:n.importedName===t.name||n.localName===t.name)}function Nj(e,t,n,r){let i=r.includeSemantic!==!1,o=i&&t.length>=Cj&&N(e).length>=xj,s=(u,d)=>{d===u.relativePath||e.isIgnored(d)||r.inactiveBarrelPaths.has(d)||eC(n,u.symbolId,d,1,"caller-map")};if(o?E("dead.caller-map.per-symbol-non-semantic",()=>{for(let u of t){let d=xt(e,u,{semantic:!1,semanticEvidence:H});for(let m of d)s(u,m.file)}},()=>({definitions:t.length,semantic:!1})):E("dead.caller-map.per-symbol",()=>{for(let u of t){let d=xt(e,u,{semantic:i,semanticEvidence:H});if(d.length!==0)for(let m of d)s(u,m.file)}},()=>({definitions:t.length,semantic:i})),!o)return;let a=0,c=E("dead.caller-map.semantic-candidates",()=>{let u=t.filter(d=>!_a(n,d.symbolId,d.relativePath));return a=u.length,u},()=>({definitions:t.length,semanticCandidates:a}));if(c.length===0)return;let l=Sy(e,c);for(let u of c){let d=l.get(u.symbolId);if(d)for(let m of d)s(u,m)}}function Aj(e,t={}){let{limit:n=30,scope:r}=t,i=r?"AND def_d.relative_path LIKE ?":"",o=r?[`%${r}%`]:[],a=e.all(`SELECT
512
+ gs.symbol,
513
+ COUNT(*) AS ref_count,
514
+ COUNT(DISTINCT ref_d.id) AS file_count,
515
+ def_d.relative_path AS defined_in
516
+ FROM mentions m
517
+ JOIN chunks c ON m.chunk_id = c.id
518
+ JOIN documents ref_d ON c.document_id = ref_d.id
519
+ JOIN global_symbols gs ON m.symbol_id = gs.id
520
+ JOIN (
521
+ SELECT m2.symbol_id, c2.document_id
522
+ FROM mentions m2
523
+ JOIN chunks c2 ON m2.chunk_id = c2.id
524
+ WHERE m2.role = 1
525
+ GROUP BY m2.symbol_id
526
+ ) sym_def ON sym_def.symbol_id = gs.id
527
+ JOIN documents def_d ON sym_def.document_id = def_d.id
528
+ WHERE m.role != 1
529
+ AND def_d.id != ref_d.id
530
+ ${e.pathExclusionsFor("def_d")}
531
+ ${e.symbolNoiseFor("gs")}
532
+ ${i}
533
+ GROUP BY gs.id
534
+ ORDER BY ref_count DESC
535
+ LIMIT ?`,...o,n).filter(c=>!e.isIgnored(c.defined_in)).map(c=>({symbol:c.symbol,shortName:I(c.symbol),refCount:c.ref_count,fileCount:c.file_count,definedIn:c.defined_in}));return a.length>0?a:Mj(e,r,n)}function Mj(e,t,n){return xe(e,{scope:t}).filter(r=>!e.isIgnored(r.relativePath)).map(r=>Oj(e,r)).filter(r=>r.refCount>0).sort((r,i)=>i.refCount-r.refCount||i.fileCount-r.fileCount).slice(0,n)}function Oj(e,t){let r=xt(e,t,{limit:500,semanticEvidence:H}).filter(i=>i.file!==t.relativePath);return{symbol:t.symbol,shortName:I(t.symbol),refCount:r.length,fileCount:new Set(r.map(i=>i.file)).size,definedIn:t.relativePath}}function jj(e,t,n={}){return Kj(e,t,n)?.map(r=>({symbol:r.symbol,shortName:r.shortName,fromFile:r.fromFile}))??[]}function Bj(e,t){let n=B(e,t),r=Uj(e,t);if(r.length>0&&!Gj(n))return r;let i=Wj(e,t,n);return vd(t)&&i.length>0?i:zj([...r,...i])}function $j(e,t,n={}){let r=Oe(e,t);if(!r)return[];let i=iC(e,r),o=n.semantic===!1?null:rC(e,r);return(o?Hj(o,i):i).filter(a=>!a.used).map(a=>({symbol:a.symbol,shortName:a.shortName,importedIn:a.importer}))}function Hj(e,t){let n=new Map;for(let i of t){let o=n.get(i.shortName);o?o.push(i):n.set(i.shortName,[i])}let r=e.map(i=>{let o=n.get(i.shortName),s=o?.shift();return o?.length===0&&n.delete(i.shortName),s?{...i,used:i.used||s.used}:i});return r.push(...[...n.values()].flat()),r}function Uj(e,t){return e.all(`SELECT DISTINCT gs.symbol, d.relative_path AS importer
536
+ FROM mentions m
537
+ JOIN chunks c ON m.chunk_id = c.id
538
+ JOIN documents d ON c.document_id = d.id
539
+ JOIN global_symbols gs ON m.symbol_id = gs.id
540
+ WHERE gs.symbol LIKE ?
541
+ AND m.role = 2
542
+ ORDER BY d.relative_path`,`%${t}%`).filter(r=>!e.isIgnored(r.importer)).map(r=>({symbol:r.symbol,shortName:I(r.symbol),fromFile:r.importer}))}function Wj(e,t,n=B(e,t)){let r=n?.relativePath??null,i=n?T(n.symbol):t.replace(/\(\)$/,""),o=n?gn(n.symbol):!1,s=new Set;for(let c of N(e,{includeIgnored:!1}))for(let l of Z(e,c))Vj(l,c,{targetFile:r,targetLeaf:i,targetIsModule:o,targetPattern:t})&&s.add(c);let a=vd(t)?t.trim():null;return[...s].sort().map(c=>({symbol:a??n?.symbol??i,shortName:a??(n?I(n.symbol):i),fromFile:c}))}function Gj(e){return!!(e&&(e.symbol.startsWith("scip-clojure ")||M(e.relativePath)==="clojure"))}function zj(e){let t=new Set,n=[];for(let r of e){let i=`${r.symbol}|${r.fromFile}`;t.has(i)||(t.add(i),n.push(r))}return n.sort((r,i)=>r.fromFile.localeCompare(i.fromFile)||r.shortName.localeCompare(i.shortName))}function Vj(e,t,n){return!e.sourcePath||n.targetFile&&ne(e.sourcePath)!==ne(n.targetFile)?!1:e.kind==="side-effect"||n.targetFile&&Qj(t)||e.kind==="namespace"&&qj(e,n.targetPattern)||n.targetIsModule||e.kind==="named"&&e.importedName===n.targetLeaf?!0:e.kind==="namespace"&&e.usedMembers.includes(n.targetLeaf)}function qj(e,t){let n=t.trim().replace(/\(\)$/,"");return vd(n)?e.importedName===n||e.localName===n:!1}function vd(e){let t=e.trim().replace(/\(\)$/,"");return t.includes(".")&&!t.includes("/")&&!t.includes(":")}function Kj(e,t,n={}){let r=Oe(e,t);return r?Jj(e,r,n)??(n.semantic===!1?null:rC(e,r))??iC(e,r):null}function Jj(e,t,n){let i=e.all(`SELECT DISTINCT
543
+ gs.symbol,
544
+ def_d.relative_path AS from_file,
545
+ imp_d.relative_path AS importer,
546
+ EXISTS (
547
+ SELECT 1
548
+ FROM mentions ref_m
549
+ JOIN chunks ref_c ON ref_m.chunk_id = ref_c.id
550
+ WHERE ref_m.symbol_id = gs.id
551
+ AND ref_m.role != 1
552
+ AND ref_c.document_id = imp_d.id
553
+ ) AS used
554
+ FROM mentions m
555
+ JOIN chunks c ON m.chunk_id = c.id
556
+ JOIN documents imp_d ON c.document_id = imp_d.id
557
+ JOIN global_symbols gs ON m.symbol_id = gs.id
558
+ LEFT JOIN (
559
+ SELECT m2.symbol_id, c2.document_id
560
+ FROM mentions m2
561
+ JOIN chunks c2 ON m2.chunk_id = c2.id
562
+ WHERE m2.role = 1
563
+ GROUP BY m2.symbol_id
564
+ ) sym_def ON sym_def.symbol_id = gs.id
565
+ LEFT JOIN documents def_d ON sym_def.document_id = def_d.id
566
+ WHERE imp_d.relative_path = ?
567
+ AND m.role = 2
568
+ ORDER BY def_d.relative_path, gs.symbol`,t).filter(o=>!e.isIgnored(o.importer));if(i.length>0){let o=n.semantic===!1?[]:Gi(e,t);return i.map(s=>({symbol:s.symbol,shortName:I(s.symbol),fromFile:s.from_file??"(external)",importer:s.importer,used:s.used!==0||o.some(a=>a.isUsed&&a.sourcePath===s.from_file)}))}return null}function rC(e,t){let n=Gi(e,t);return n.length>0?n.map(r=>{let i=oC(r.importedName,r.localName,r.kind);return{symbol:i,shortName:i,fromFile:r.sourcePath??"(external)",importer:t,used:r.kind==="side-effect"?!0:r.isUsed}}):null}function iC(e,t){let n=Yj(t,k(e,t));return Z(e,t).map(r=>{let i=oC(r.importedName,r.localName,r.kind),o=r.kind==="side-effect"||Xj(t,r)||n.has(r.localName??r.importedName)?!0:r.used;return{symbol:i,shortName:i,fromFile:r.sourcePath??"(external)",importer:t,used:o}})}function Yj(e,t){let n=new Set;if(M(e)!=="python")return n;let r=/(?:^|\n)\s*__all__\s*(?:\+?=)\s*[[(]([\s\S]*?)[\])]/g;for(let i of t.matchAll(r)){let o=i[1]??"";for(let s of o.matchAll(/(['"])([A-Za-z_]\w*)\1/g))n.add(s[2])}return n}function Xj(e,t){if(M(e)!=="rust"||t.used||t.kind==="side-effect")return!1;let n=t.localName??t.importedName;return n==="_"||/^[A-Z]/.test(n)}function oC(e,t,n){return n==="namespace"&&e==="*"&&t?`* as ${t}`:n==="default"&&t?`default as ${t}`:n==="side-effect"?"(side effect import)":t&&t!==e?`${e} as ${t}`:e}function Qj(e){return/\.(?:c|h|cc|cpp|cxx|hpp|hh|hxx)$/i.test(e)}function Zj(e,t){let n=B(e,t);if(!n)return[];let i=new F(e).definitionsForFile(n.relativePath).filter(o=>o.symbol!==n.symbol).filter(o=>If(n.symbol,o.symbol)).sort((o,s)=>o.startLine-s.startLine||o.endLine-s.endLine).map(o=>({symbol:o.symbol,shortName:I(o.symbol),startLine:o.startLine,endLine:o.endLine,kind:ue(o.symbol)??"unknown"}));return M(n.relativePath)!=="clojure"?i:tB(i,eB(e,n))}function eB(e,t){let n=T(t.symbol);if(!n)return[];let r=I(t.symbol);return(z(e,t.relativePath)?.clojureMembers??[]).filter(i=>i.ownerName===n).map(i=>({symbol:`${t.symbol}${i.memberName}().`,shortName:`${r}:${i.memberName}()`,startLine:i.startLine,endLine:i.endLine,kind:i.memberKind}))}function tB(e,t){let n=new Map;for(let r of[...e,...t])n.set(`${r.shortName}:${r.startLine}:${r.endLine}`,r);return[...n.values()].sort((r,i)=>r.startLine-i.startLine||r.endLine-i.endLine)}function nB(e,t){let n=B(e,t);if(!n)return[];let r=e.get(`SELECT COUNT(DISTINCT c.document_id) AS file_count
569
+ FROM mentions m
570
+ JOIN chunks c ON m.chunk_id = c.id
571
+ JOIN (
572
+ SELECT m2.symbol_id, c2.document_id
573
+ FROM mentions m2
574
+ JOIN chunks c2 ON m2.chunk_id = c2.id
575
+ WHERE m2.role = 1
576
+ GROUP BY m2.symbol_id
577
+ ) sym_def ON sym_def.symbol_id = m.symbol_id
578
+ WHERE m.symbol_id = ?
579
+ AND m.role != 1
580
+ AND sym_def.document_id != c.document_id`,n.symbolId);return[{name:I(n.symbol),count:r?.file_count??0,symbol:n.symbol,definedIn:n.relativePath}]}function rB(e,t){let n=Oe(e,t);if(!n)return[];let i=e.all(`SELECT d.relative_path, COUNT(DISTINCT gs.id) AS symbol_count
581
+ FROM mentions m
582
+ JOIN chunks c ON m.chunk_id = c.id
583
+ JOIN documents d ON c.document_id = d.id
584
+ JOIN global_symbols gs ON m.symbol_id = gs.id
585
+ JOIN (
586
+ SELECT m2.symbol_id, c2.document_id
587
+ FROM mentions m2
588
+ JOIN chunks c2 ON m2.chunk_id = c2.id
589
+ WHERE m2.role = 1
590
+ GROUP BY m2.symbol_id
591
+ ) sym_def ON sym_def.symbol_id = gs.id
592
+ JOIN documents def_d ON sym_def.document_id = def_d.id
593
+ WHERE d.relative_path = ?
594
+ AND m.role != 1
595
+ AND def_d.id != d.id
596
+ GROUP BY d.id
597
+ ORDER BY symbol_count DESC`,n).filter(a=>!e.isIgnored(a.relative_path)).map(a=>({name:a.relative_path,count:a.symbol_count}));if(i.length>0)return i;let s=ie(e).get(n);return!s||s.size===0?[]:[{name:n,count:s.size}]}function iB(e,t={}){return oB(e,t).map(n=>({name:I(n.symbol),count:n.file_count,symbol:n.symbol,definedIn:n.defined_in}))}function oB(e,t){let{limit:n=30,scope:r}=t,i=r?"AND def_d.relative_path LIKE ?":"",o=r?[`%${r}%`]:[];return e.all(`SELECT gs.symbol,
598
+ COUNT(DISTINCT c.document_id) AS file_count,
599
+ def_d.relative_path AS defined_in
600
+ FROM mentions m
601
+ JOIN chunks c ON m.chunk_id = c.id
602
+ JOIN global_symbols gs ON m.symbol_id = gs.id
603
+ JOIN (
604
+ SELECT m2.symbol_id, c2.document_id
605
+ FROM mentions m2
606
+ JOIN chunks c2 ON m2.chunk_id = c2.id
607
+ WHERE m2.role = 1
608
+ GROUP BY m2.symbol_id
609
+ ) sym_def ON sym_def.symbol_id = gs.id
610
+ JOIN documents def_d ON sym_def.document_id = def_d.id
611
+ WHERE m.role != 1
612
+ AND def_d.id != c.document_id
613
+ ${e.pathExclusionsFor("def_d")}
614
+ ${e.symbolNoiseFor("gs")}
615
+ ${i}
616
+ GROUP BY gs.id
617
+ HAVING file_count > 1
618
+ ORDER BY file_count DESC
619
+ LIMIT ?`,...o,n)}function sB(e,t={}){let{limit:n=30,scope:r}=t,i=r?"AND d.relative_path LIKE ?":"",o=r?[`%${r}%`]:[];return e.all(`SELECT d.relative_path, COUNT(DISTINCT gs.id) AS symbol_count
620
+ FROM mentions m
621
+ JOIN chunks c ON m.chunk_id = c.id
622
+ JOIN documents d ON c.document_id = d.id
623
+ JOIN global_symbols gs ON m.symbol_id = gs.id
624
+ JOIN (
625
+ SELECT m2.symbol_id, c2.document_id
626
+ FROM mentions m2
627
+ JOIN chunks c2 ON m2.chunk_id = c2.id
628
+ WHERE m2.role = 1
629
+ GROUP BY m2.symbol_id
630
+ ) sym_def ON sym_def.symbol_id = gs.id
631
+ JOIN documents def_d ON sym_def.document_id = def_d.id
632
+ WHERE m.role != 1
633
+ AND def_d.id != d.id
634
+ ${e.pathExclusionsFor("d")}
635
+ ${e.symbolNoiseFor("gs")}
636
+ ${i}
637
+ GROUP BY d.id
638
+ ORDER BY symbol_count DESC
639
+ LIMIT ?`,...o,n).filter(a=>!e.isIgnored(a.relative_path)).map(a=>({name:a.relative_path,count:a.symbol_count}))}function aB(e,t,n){let r=Oe(e,t)??t,i=Oe(e,n)??n,o=e.get(`SELECT COUNT(DISTINCT gs.id) AS shared
640
+ FROM global_symbols gs
641
+ WHERE (
642
+ -- Defined in file1, referenced in file2
643
+ EXISTS (
644
+ SELECT 1
645
+ FROM mentions def_m
646
+ JOIN chunks def_c ON def_m.chunk_id = def_c.id
647
+ JOIN documents d ON def_c.document_id = d.id
648
+ WHERE def_m.symbol_id = gs.id AND def_m.role = 1 AND d.relative_path = ?
649
+ )
650
+ AND EXISTS (
651
+ SELECT 1 FROM mentions m
652
+ JOIN chunks c ON m.chunk_id = c.id
653
+ JOIN documents d ON c.document_id = d.id
654
+ WHERE m.symbol_id = gs.id AND m.role != 1 AND d.relative_path = ?
655
+ )
656
+ ) OR (
657
+ -- Defined in file2, referenced in file1
658
+ EXISTS (
659
+ SELECT 1
660
+ FROM mentions def_m
661
+ JOIN chunks def_c ON def_m.chunk_id = def_c.id
662
+ JOIN documents d ON def_c.document_id = d.id
663
+ WHERE def_m.symbol_id = gs.id AND def_m.role = 1 AND d.relative_path = ?
664
+ )
665
+ AND EXISTS (
666
+ SELECT 1 FROM mentions m
667
+ JOIN chunks c ON m.chunk_id = c.id
668
+ JOIN documents d ON c.document_id = d.id
669
+ WHERE m.symbol_id = gs.id AND m.role != 1 AND d.relative_path = ?
670
+ )
671
+ )`,r,i,i,r);return{...sC(r,i,o?.shared??0)}}function cB(e,t={}){let{limit:n=20,scope:r}=t,i=r?"AND def_d.relative_path LIKE ? AND ref_d.relative_path LIKE ?":"",o=r?[`%${r}%`,`%${r}%`]:[];return e.all(`SELECT
672
+ def_d.relative_path AS file1,
673
+ ref_d.relative_path AS file2,
674
+ COUNT(DISTINCT gs.id) AS shared
675
+ FROM mentions m
676
+ JOIN chunks c ON m.chunk_id = c.id
677
+ JOIN documents ref_d ON c.document_id = ref_d.id
678
+ JOIN global_symbols gs ON m.symbol_id = gs.id
679
+ JOIN (
680
+ SELECT m2.symbol_id, c2.document_id
681
+ FROM mentions m2
682
+ JOIN chunks c2 ON m2.chunk_id = c2.id
683
+ WHERE m2.role = 1
684
+ GROUP BY m2.symbol_id
685
+ ) sym_def ON sym_def.symbol_id = gs.id
686
+ JOIN documents def_d ON sym_def.document_id = def_d.id
687
+ WHERE m.role != 1
688
+ AND def_d.id != ref_d.id
689
+ ${e.pathExclusionsFor("def_d","ref_d")}
690
+ ${i}
691
+ GROUP BY def_d.id, ref_d.id
692
+ ORDER BY shared DESC
693
+ LIMIT ?`,...o,n).filter(a=>!e.isIgnored(a.file1)&&!e.isIgnored(a.file2)).map(a=>sC(a.file1,a.file2,a.shared))}function sC(e,t,n){return{file1:e,file2:t,sharedSymbols:n,actionTier:"signal",couplingKind:"shared-symbol-coupling",evidenceReasons:[`${n} symbol(s) are defined in one file and referenced by the other`],recommendation:"Review whether the shared symbol surface is an intentional boundary or hidden coordination pressure before moving code."}}function uo(e,t={}){return lC(e,t).cycles}function lC(e,t={}){let{scope:n,maxDepth:r=10}=t,i=ie(e,n,{scipEdges:"imports-only"}),o=[],s=new Set,a=new Set,c=[],l=!1;function u(m,f){if(f>r){l=!0;return}if(a.has(m)){let g=c.indexOf(m);if(g!==-1){let y=c.slice(g).concat(m),h=y.indexOf(y.reduce((C,S)=>C<S?C:S)),x=[...y.slice(h,-1),...y.slice(0,h),y[h]],b=x.join(" -> ");d.has(b)||(d.add(b),o.push({path:x,kind:lB(x)}))}return}if(s.has(m))return;s.add(m),a.add(m),c.push(m);let p=i.get(m);if(p)for(let g of p)u(g,f+1);c.pop(),a.delete(m)}let d=new Set;for(let m of i.keys())s.has(m)||u(m,0);return o.sort((m,f)=>m.kind!==f.kind?m.kind==="real"?-1:1:m.path.length-f.path.length),{cycles:o,truncated:l,maxDepth:r}}function lB(e){for(let r of e){let i=G(r);if(i==="test"||i==="barrel"||i==="entry")return"module-hierarchy"}if(e.length!==3)return"real";let[t,n]=e;return!t||!n?"real":zr(t)||zr(n)||aC(t,n)||aC(n,t)||cC(t,n)||cC(n,t)||G(t)==="entry"||G(n)==="entry"?"module-hierarchy":"real"}function aC(e,t){if(!/\.rs$/.test(e)||!/\.rs$/.test(t))return!1;let n=t.replace(/\.rs$/,"/");return e.startsWith(n)?!e.slice(n.length).includes("/"):!1}function cC(e,t){if(!/\.rs$/.test(e)||!/\.rs$/.test(t))return!1;let n=e.replace(/\.rs$/,""),r=t.replace(/\.rs$/,"");if(n===r+"_tests"||n===r+"/tests")return!0;let i=e.split("/"),o=t.split("/");if(i.length===o.length&&i.includes("tests")&&o.includes("src")){let s=i[i.length-1],a=o[o.length-1];if(s&&s===a)return!0}return!1}import{readdirSync as uB}from"fs";import{join as uC}from"path";function Tn(e,t){let n=Na(e),r=Na(t);if(n.endsWith("/**")){let i=n.slice(0,-3);return r===i||r.startsWith(`${i}/`)}if(n.endsWith("/*")){let i=n.slice(0,-2);if(!r.startsWith(`${i}/`))return!1;let o=r.slice(i.length+1);return o.length>0&&!o.includes("/")}return n==="**"?!0:n==="*"?r.length>0&&!r.includes("/"):n===r}function dB(e){return Na(e).replace(/\/\*\*?$/,"")}function Aa(e,t){let n=Na(t),r=dB(n),i=n.endsWith("/**"),o=[],s=(a,c)=>{let l;try{l=uB(a,{withFileTypes:!0})}catch{return}for(let u of l){if(u.name.startsWith("."))continue;let d=c?`${c}/${u.name}`:u.name;Tn(n,d)&&o.push(d),i&&u.isDirectory()&&s(uC(a,u.name),d)}};return s(uC(e,r),r),o.sort()}function Na(e){return e.replace(/\\/g,"/").replace(/^\.\//,"").replace(/\/+$/,"")}function mo(e){let t=new Map,n=[],r=new Map,i=new Map,o=new Set,s=[],a=0,c=l=>(e.get(l)??[]).values();for(let l of e.keys()){if(r.has(l))continue;let u=[];for(r.set(l,a),i.set(l,a),a+=1,s.push(l),o.add(l),u.push({node:l,iter:c(l),pendingChild:null});u.length>0;){let d=u[u.length-1];if(d.pendingChild!==null){let p=d.pendingChild;d.pendingChild=null,i.set(d.node,Math.min(i.get(d.node),i.get(p)))}let m=d.iter.next();if(m.done){if(i.get(d.node)===r.get(d.node)){let p=[];for(;;){let g=s.pop();if(o.delete(g),p.push(g),t.set(g,n.length),g===d.node)break}n.push(p)}u.pop();continue}let f=m.value;r.has(f)?o.has(f)&&i.set(d.node,Math.min(i.get(d.node),r.get(f))):(r.set(f,a),i.set(f,a),a+=1,s.push(f),o.add(f),d.pendingChild=f,u.push({node:f,iter:c(f),pendingChild:null}))}}return{components:n,componentOf:t}}var mB=/\.(test|spec)\.(ts|tsx|js|jsx|mts|cts)$/,dC=new Map;function mC(e,t,n,r){if(!t?.testPaths?.length)return[];let i=fB(t),o=[];for(let s of pB(e,t.testPaths)){let a=gB(e,s,r),c=a?n(a):null;if(c)for(let l of Z(e,s)){let u=l.sourcePath;if(!u)continue;let d=n(u);d&&d!==c&&(i.get(c)?.has(d)||o.push({testFile:s,ownerBoundary:c,importedFile:u,importedBoundary:d,reason:"outside-owner-policy"}))}}return hB(o)}function fB(e){let t=e.allowedDependencies??{},n=e.boundaries.map(s=>s.name),r=new Map,i=(s,a)=>{for(let c of t[s]??[])a.has(c)||(a.add(c),i(c,a))};for(let s of n){let a=new Set;i(s,a),r.set(s,a)}let o=new Map;for(let s of n){let a=new Set(r.get(s));for(let c of n)c!==s&&r.get(c)?.has(s)&&a.add(c);o.set(s,a)}return o}function pB(e,t){let n=`${e.config.projectRoot}\0${t.join("\0")}`,r=dC.get(n);if(r)return r;let i=new Set;for(let s of t)for(let a of Aa(e.config.projectRoot,s))mB.test(a)&&i.add(a);let o=[...i].sort();return dC.set(n,o),o}function gB(e,t,n){let r=t.replace(/^tests\//,"src/").replace(/\.(test|spec)\.(\w+)$/,".$2");if(r!==t&&n(r))return r;let i=t.split("/").pop().replace(/\.(test|spec)\.(\w+)$/,".$2"),o=Z(e,t).map(s=>s.sourcePath).filter(s=>!!s&&n(s)&&s.split("/").pop()===i);return o.length===1?o[0]:null}function hB(e){let t=new Map;for(let n of e){let r=`${n.testFile}\0${n.importedBoundary}`;t.has(r)||t.set(r,n)}return[...t.values()].sort((n,r)=>n.testFile.localeCompare(r.testFile)||n.importedBoundary.localeCompare(r.importedBoundary))}var Rt="architecture:";function fC(e,t,n,r={}){let i=SB(e,t);if(!n||n.boundaries.length===0)return{configured:!1,boundaries:[],edges:[],forbiddenEdges:[],reciprocalPairs:[],cycles:[],coarseBoundaries:[],staleAllowances:[],boundaryLimits:[],fragileEdges:[],testBoundaryViolations:[],coverage:{totalFiles:i.length,mappedFiles:0,unmappedFiles:[],ambiguousFiles:[]},policyCoverage:{declaredRows:0,totalBoundaries:0,missingRows:[],requiresCompletePolicy:!1,requiresMinimalPolicy:!1}};let o=new Map,s=new Map(n.boundaries.map(b=>[b.name,new Set])),a=[],c=[];for(let b of i){let C=n.boundaries.filter(S=>S.paths.some(v=>Tn(v,b))).map(S=>S.name).sort();if(C.length===0)a.push(b);else if(C.length>1)c.push({file:b,boundaries:C});else{let S=C[0];o.set(b,S),s.get(S).add(b)}}let l=new Map;for(let[b,C]of e){let S=o.get(b);if(S)for(let v of C){let R=o.get(v);if(!R||S===R)continue;let D=Kr(S,R),w=l.get(D);w||(w={from:S,to:R,fileEdges:[],importers:new Set,importedFiles:new Set},l.set(D,w)),w.fileEdges.push({fromFile:b,toFile:v}),w.importers.add(b),w.importedFiles.add(v)}}let u=[...l.values()].map(b=>CB(b,n)).sort(PB),d=u,m=new Map(d.map(b=>[Kr(b.from,b.to),b])),f=new Map(n.boundaries.map(b=>[b.name,new Set]));for(let b of d)f.get(b.from).add(b.to);let p=[];for(let b of d){if(b.from>=b.to)continue;let C=m.get(Kr(b.to,b.from));C&&p.push({boundaries:[b.from,b.to],forward:b,reverse:C})}let{components:g}=mo(f),y=g.filter(b=>b.length>1).map(b=>RB(b,d,n.requireAcyclic===!0)).sort((b,C)=>C.boundaries.length-b.boundaries.length||b.boundaries.join("/").localeCompare(C.boundaries.join("/"))),h=n.allowedDependencies??{},x=n.boundaries.map(b=>b.name).filter(b=>!Object.hasOwn(h,b)).sort();return{configured:!0,boundaries:n.boundaries.map(b=>({name:b.name,paths:[...b.paths],fileCount:s.get(b.name).size,dependencyPolicyDeclared:Object.hasOwn(h,b.name)})).sort((b,C)=>b.name.localeCompare(C.name)),edges:u,forbiddenEdges:d.filter(b=>b.policyStatus==="forbidden"),reciprocalPairs:p,cycles:y,staleAllowances:IB(n,d),boundaryLimits:wB(n,d,s),fragileEdges:d.filter(b=>b.fragile),testBoundaryViolations:r.testBoundaryViolations??[],coarseBoundaries:vB(e,s,r.isModuleHierarchyFile,n.requireResolvedBoundaries===!0,b=>n.boundaries.find(C=>C.name===b)?.subUnits??"directory"),coverage:{totalFiles:i.length,mappedFiles:o.size,unmappedFiles:a,ambiguousFiles:c},policyCoverage:{declaredRows:n.boundaries.length-x.length,totalBoundaries:n.boundaries.length,missingRows:x,requiresCompletePolicy:n.requireCompletePolicy===!0,requiresMinimalPolicy:n.requireMinimalPolicy===!0}}}function ur(e,t={}){let n=ie(e,t.scope,{scipEdges:"imports-only",sourceEdges:"imports-and-reexports"}),r=N(e,{includeIgnored:!1}).filter(o=>!t.scope||o.includes(t.scope)),i=new Set(r);return fC(n,r,e.config.architecture,{isModuleHierarchyFile:o=>bB(e,o),testBoundaryViolations:mC(e,e.config.architecture,o=>yB(e.config.architecture,o),o=>i.has(o))})}function yB(e,t){let n=(e?.boundaries??[]).filter(r=>r.paths.some(i=>Tn(i,t)));return n.length===1?n[0].name:null}function bB(e,t){let n=G(t);return n==="test"||n==="entry"?!0:n!=="barrel"?!1:Y(e,t).length===0}function Ma(e){let t=e.forbiddenEdges.map(r=>`${Rt}forbidden-edge:${encodeURIComponent(r.from)}:${encodeURIComponent(r.to)}`);if(e.policyCoverage.requiresCompletePolicy)for(let r of e.policyCoverage.missingRows)t.push(`${Rt}missing-policy-row:${encodeURIComponent(r)}`);if(e.policyCoverage.requiresMinimalPolicy)for(let r of e.staleAllowances)t.push(`${Rt}stale-allowance:${encodeURIComponent(r.from)}:${encodeURIComponent(r.to)}`);for(let r of e.testBoundaryViolations)t.push(`${Rt}test-boundary:${encodeURIComponent(r.testFile)}:${encodeURIComponent(r.importedBoundary)}`);for(let r of e.boundaryLimits)t.push(`${Rt}boundary-limit:${r.kind}:${encodeURIComponent(r.boundary)}`);let n=new Map;for(let r of e.coarseBoundaries)r.violatesPolicy&&n.set(r.boundary,(n.get(r.boundary)??0)+1);for(let[r,i]of n){let o=`${Rt}coarse-boundary:${encodeURIComponent(r)}`;t.push(o);for(let s=2;s<=i;s+=1)t.push(`${o}:component:${s}`)}for(let r of e.cycles)r.violatesPolicy&&t.push(`${Rt}cycle:${r.boundaries.map(i=>encodeURIComponent(i)).sort().join("|")}`);return[...new Set(t)].sort()}function pC(e){return!!e&&(Object.keys(e.allowedDependencies??{}).length>0||e.requireCompletePolicy===!0||e.requireAcyclic===!0||e.requireResolvedBoundaries===!0||e.requireMinimalPolicy===!0||e.maxBoundaryFanOut!==void 0||e.maxBoundaryFiles!==void 0||e.boundaries.some(t=>t.maxFiles!==void 0)||(e.testPaths?.length??0)>0)}function SB(e,t){let n=new Set(t);for(let[r,i]of e){n.add(r);for(let o of i)n.add(o)}return[...n].sort()}function CB(e,t){let n=[...e.fileEdges].sort((r,i)=>r.fromFile.localeCompare(i.fromFile)||r.toFile.localeCompare(i.toFile));return{from:e.from,to:e.to,policyStatus:xB(t,e.from,e.to),fileEdgeCount:n.length,importerCount:e.importers.size,importedFileCount:e.importedFiles.size,examples:n.slice(0,5),fragile:n.length===1}}function xB(e,t,n){return!e.allowedDependencies||!Object.hasOwn(e.allowedDependencies,t)?"undeclared":e.allowedDependencies[t].includes(n)?"allowed":"forbidden"}function RB(e,t,n){let r=[...e].sort(),i=new Set(r),o=t.filter(a=>i.has(a.from)&&i.has(a.to)),s=Math.min(...o.map(a=>a.fileEdgeCount));return{boundaries:r,internalEdges:o,narrowestEdges:o.filter(a=>a.fileEdgeCount===s),violatesPolicy:n}}function vB(e,t,n=EB,r=!1,i=()=>"directory"){let o=[];for(let[s,a]of t){let c=i(s)==="file"?p=>p:DB,l=[...a].filter(p=>!n(p));if(l.length<2)continue;let u=new Set(l),d=new Map,m=new Map;for(let p of l)m.set(c(p),new Set);for(let p of l)for(let g of e.get(p)??[]){if(!u.has(g))continue;let y=c(p),h=c(g);if(y===h)continue;let x=Kr(y,h),b=d.get(x);b||(b={from:y,to:h,fileEdges:[]},d.set(x,b)),b.fileEdges.push({fromFile:p,toFile:g}),m.get(y).add(h)}let{components:f}=mo(m);for(let p of f){if(p.length<2)continue;let g=new Set(p),y=[...d.values()].filter(x=>g.has(x.from)&&g.has(x.to)).map(x=>({from:x.from,to:x.to,fileEdgeCount:x.fileEdges.length,examples:x.fileEdges.slice(0,5)})).sort((x,b)=>x.from.localeCompare(b.from)||x.to.localeCompare(b.to)),h=Math.min(...y.map(x=>x.fileEdgeCount));o.push({boundary:s,violatesPolicy:r,subUnits:[...p].sort(),internalEdges:y,narrowestEdges:y.filter(x=>x.fileEdgeCount===h)})}}return o.sort((s,a)=>a.subUnits.length-s.subUnits.length||s.boundary.localeCompare(a.boundary))}function IB(e,t){let n=new Set(t.map(s=>Kr(s.from,s.to))),r=e.allowedDependencies??{},i=new Set(e.boundaries.map(s=>s.name)),o=[];for(let[s,a]of Object.entries(r))if(i.has(s))for(let c of a)!i.has(c)||n.has(Kr(s,c))||o.push({from:s,to:c});return o.sort((s,a)=>s.from.localeCompare(a.from)||s.to.localeCompare(a.to))}function wB(e,t,n){let r=[],i=new Map;for(let o of t)i.set(o.from,(i.get(o.from)??0)+1);for(let o of e.boundaries){if(e.maxBoundaryFanOut!==void 0){let a=i.get(o.name)??0;a>e.maxBoundaryFanOut&&r.push({boundary:o.name,kind:"fan-out",observed:a,limit:e.maxBoundaryFanOut})}let s=o.maxFiles??e.maxBoundaryFiles;if(s!==void 0){let a=n.get(o.name)?.size??0;a>s&&r.push({boundary:o.name,kind:"files",observed:a,limit:s})}}return r.sort((o,s)=>o.boundary.localeCompare(s.boundary)||o.kind.localeCompare(s.kind))}function EB(e){let t=G(e);return t==="test"||t==="entry"}function DB(e){let t=e.lastIndexOf("/");return t===-1?".":e.slice(0,t)}function Kr(e,t){return`${e}\0${t}`}function PB(e,t){return e.from.localeCompare(t.from)||e.to.localeCompare(t.to)}function kB(e,t={}){let{limit:n=20,scope:r,minFanIn:i=2,minFanOut:o=2,scanLimit:s}=t,a=new F(e);return se(a.productionCallableDefinitions({scope:r,requireCallableSymbol:!0,includeSuppressed:!0,sortByLocDesc:typeof s=="number"&&s>0}),s).map(u=>TB(e,u,t.semantic!==!1)).filter(u=>u.fanIn>=i&&u.fanOut>=o).sort((u,d)=>d.score-u.score||d.fanIn-u.fanIn).slice(0,n)}function TB(e,t,n){let r=[...new Set(xt(e,t,{limit:500,semantic:n,semanticEvidence:H}).map(l=>l.file))].sort(),i=new Map;for(let l of ft(e,t,{limit:500,semantic:n,semanticEvidence:H})){if(l.file===t.relativePath)continue;let u=`${l.symbol}|${l.file}`;i.has(u)||i.set(u,{symbol:l.symbol,shortName:I(l.symbol),file:l.file})}let o=[...i.values()].sort((l,u)=>l.file.localeCompare(u.file)||l.symbol.localeCompare(u.symbol)),s=r.length,a=o.length,c=s*a;return{symbol:t.symbol,shortName:I(t.symbol),fanIn:s,fanOut:a,callerFiles:r,externalCallees:o,score:c,definedIn:t.relativePath,actionTier:"signal",riskKind:"coordination-hotspot",evidenceReasons:[`${s} incoming file(s) reference this symbol`,`${a} 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."}}function fo(e,t={}){let{scope:n,minLoc:r=3,scanLimit:i}=t,o=new F(e),s=t.semantic!==!1,a=0,c=E("isolated.candidates",()=>{let v=se(o.productionCallableDefinitions({scope:n,minLoc:r,excludeEntrySurfaces:!0,excludeRootedSymbols:!0,excludeRustTraitImplMembers:!0,includeSuppressed:!0,requireFunctionLikeSymbol:!0,sortByLocDesc:typeof i=="number"&&i>0}),i).filter(R=>!qr(e,R));return a=v.length,v},()=>({definitions:a})),l=0,u=E("isolated.strict-callees",()=>{let S=o.symbolsWithNonSelfCallees(c,{additive:!1,semantic:!1});return l=S.size,S},()=>({definitions:c.length,symbols:l})),d=c.filter(S=>!u.has(S.symbolId)),m=0,f=E("isolated.scip-callers",()=>{let S=o.crossFileCallerMap(d,{semantic:!1});return m=S.size,S},()=>({definitions:d.length,symbols:m})),p=new Set(f.keys());for(let S of o.frameworkReferencedSymbolIds(d))p.add(S);let g=d.filter(S=>!p.has(S.symbolId));if(s&&g.length>0){for(let S of En(e,g).keys())p.add(S);for(let S of o.symbolsWithNonSelfCallees(g,{additive:!1,semantic:!0}))u.add(S);g=g.filter(S=>!p.has(S.symbolId)).filter(S=>!u.has(S.symbolId))}let y=0,h=E("isolated.source-fallback-callers",()=>{let S=o.sourceFallbackCallerFiles(g,{skipPath:v=>G(v)==="test"});return y=S.size,S},()=>({definitions:g.length,symbols:y}));for(let S of h.keys())p.add(S);let x=g.filter(S=>!p.has(S.symbolId)),b=0,C=E("isolated.additive-callees",()=>{let S=o.symbolsWithNonSelfCallees(x,{additive:!0,semantic:s});return b=S.size,S},()=>({definitions:x.length,symbols:b}));for(let S of C)u.add(S);return x.filter(S=>!u.has(S.symbolId)).sort((S,v)=>O(v)-O(S)||S.relativePath.localeCompare(v.relativePath)||S.startLine-v.startLine).map(S=>({symbol:S.symbol,shortName:I(S.symbol),relativePath:S.relativePath,startLine:S.startLine,endLine:S.endLine,loc:O(S)}))}import{SymbolInformation_Kind as Pe}from"@c4312/scip";var gC=500;function FB(e){let t=parseInt(e,10);if(!isNaN(t))return t;let n=e.toLowerCase(),r=LS.get(n);if(r!==void 0)return r;for(let[i,o]of Da)if(o.toLowerCase().includes(n))return i;return null}function _B(e,t,n={}){let{scope:r,limit:i=100}=n,o=FB(t);return o===null?[]:NB(e,r).map(a=>({row:a,resolvedKind:yC(a)})).filter(a=>a.resolvedKind===o).slice(0,i).map(({row:a,resolvedKind:c})=>({symbol:a.symbol,shortName:I(a.symbol),kind:c,kindName:ao(c),relativePath:a.relative_path,startLine:a.start_line,endLine:a.end_line}))}function LB(e,t={}){let n=AB(e,t.scope);for(let r of MB(e,t.scope)){let i=yC(r);i===null||i===0||n.set(i,(n.get(i)??0)+1)}return[...n.entries()].sort((r,i)=>i[1]-r[1]||r[0]-i[0]).map(([r,i])=>({kind:r,kindName:ao(r),count:i}))}function NB(e,t){return xe(e,{scope:t}).map(OB)}function AB(e,t){let n=new Map;for(let r of hC(N(e,{scope:t,includeIgnored:!1}))){let i=r.map(()=>"?").join(", "),o=e.all(`SELECT gs.kind AS kind, COUNT(*) AS count
694
+ FROM defn_enclosing_ranges der
695
+ JOIN global_symbols gs ON der.symbol_id = gs.id
696
+ JOIN documents d ON der.document_id = d.id
697
+ WHERE gs.kind IS NOT NULL
698
+ AND gs.kind != 0
699
+ AND gs.symbol NOT LIKE '%#'
700
+ AND d.relative_path IN (${i})
701
+ GROUP BY gs.kind`,...r);for(let s of o)n.set(s.kind,(n.get(s.kind)??0)+s.count)}return n}function MB(e,t){let n=[];for(let r of hC(N(e,{scope:t,includeIgnored:!1}))){let i=r.map(()=>"?").join(", ");n.push(...e.all(`SELECT gs.symbol,
702
+ gs.kind,
703
+ gs.documentation,
704
+ gs.enclosing_symbol,
705
+ d.relative_path,
706
+ der.start_line,
707
+ der.end_line
708
+ FROM defn_enclosing_ranges der
709
+ JOIN global_symbols gs ON der.symbol_id = gs.id
710
+ JOIN documents d ON der.document_id = d.id
711
+ WHERE (gs.kind IS NULL OR gs.kind = 0 OR gs.symbol LIKE '%#')
712
+ ${e.symbolNoiseFor("gs")}
713
+ AND d.relative_path IN (${i})
714
+ ORDER BY d.relative_path, der.start_line, der.end_line, gs.symbol`,...r))}return n}function hC(e){let t=[];for(let n=0;n<e.length;n+=gC)t.push(e.slice(n,n+gC));return t}function OB(e){return{symbol:e.symbol,kind:e.kind,documentation:e.documentation,enclosing_symbol:e.enclosingSymbol,relative_path:e.relativePath,start_line:e.startLine,end_line:e.endLine}}function yC(e){return e.kind!==null&&e.kind!==0?jB(e.kind,e.symbol,e.documentation):BB(e.symbol,e.documentation,e.enclosing_symbol)}function jB(e,t,n){let r=(n??"").toLowerCase();if(ue(t)==="type"){if(r.includes("type "))return Pe.TypeAlias;if(r.includes("interface "))return Pe.Interface;if(r.includes("struct "))return Pe.Struct;if(r.includes("trait "))return Pe.Trait;if(r.includes("class "))return Pe.Class}return e}function BB(e,t,n){let r=ye(e);if("kind"in r)return null;let i=r.descriptors,o=i[i.length-2]??null,s=ue(e),a=(t??"").toLowerCase();return s==="type"?a.includes("type ")?Pe.TypeAlias:a.includes("interface ")?Pe.Interface:a.includes("struct ")?Pe.Struct:a.includes("trait ")?Pe.Trait:a.includes("class ")?Pe.Class:Pe.Class:s==="method"?o?.suffix==="type"?Pe.Method:Pe.Function:s==="namespace"?Pe.Module:s!=="term"?null:a.includes("async def ")||a.includes("def ")?Pe.Function:(n?ue(n):o?.suffix??null)==="type"?Pe.Field:Pe.Variable}function $B(e,t={}){let{limit:n=10,scope:r,minDepth:i=3}=t,o=ie(e,r),{components:s,componentOf:a}=mo(o),c=new Map;for(let g=0;g<s.length;g++)c.set(g,new Set);for(let[g,y]of o){let h=a.get(g);for(let x of y){let b=a.get(x);b!==h&&c.get(h).add(b)}}let l=new Array(s.length),u=new Array(s.length);for(let g=0;g<s.length;g++){let y=[],h=0;for(let x of c.get(g)){let b=u[x];b>h&&(h=b,y=l[x])}l[g]=[g,...y],u[g]=1+h}function d(g){return l[g]}let m=s.map(g=>[...g].sort()),f=new Set,p=[];for(let g=0;g<s.length;g++){let h=d(g).map(C=>m[C]),x=h.map(C=>C[0]);if(h.length<i)continue;let b=x.join(" ");f.has(b)||(f.add(b),p.push(HB(x,h)))}return p.sort((g,y)=>y.depth-g.depth),UB(p).slice(0,n)}function HB(e,t){let n=t.reduce((i,o)=>i+o.length,0),r=t.filter(i=>i.length>1).length;return{chain:e,components:t,depth:t.length,fileCount:n,actionTier:"signal",chainKind:"transitive-dependency-depth",evidenceReasons:[`${t.length} condensed dependency component(s) form the representative transitive path`,`${n} file(s) are represented; ${r} component(s) contain a dependency cycle`,"cycles count once toward depth and retain their full membership separately"],recommendation:"Review whether the chain crosses ownership or layer boundaries; shorten it only when the dependency direction is accidental."}}function UB(e){let t=[];for(let n of e)t.some(r=>WB(n.chain,r.chain))||t.push(n);return t}function WB(e,t){if(e.length>=t.length)return!1;let n=t.length-e.length;for(let r=0;r<e.length;r++)if(e[r]!==t[n+r])return!1;return!0}function GB(e,t){let n=B(e,t);if(!n)return[];let r=e.get(`SELECT symbol, enclosing_symbol FROM global_symbols
715
+ WHERE id = ? LIMIT 1`,n.symbolId);if(!r)return[];let i=[{symbol:r.symbol,shortName:I(r.symbol),depth:0}],o=r.enclosing_symbol,s=1,a=new Set([r.symbol]);for(;o&&!a.has(o)&&s<20;){a.add(o);let d=e.get("SELECT symbol, enclosing_symbol FROM global_symbols WHERE symbol = ?",o);if(!d)break;i.push({symbol:d.symbol,shortName:I(d.symbol),depth:s}),o=d.enclosing_symbol,s++}if(i.length>1)return i;let c=ye(r.symbol);if("kind"in c)return i;let l=c.descriptors;if(l.length<=1)return i;let u=[i[0]];for(let d=l.length-2,m=1;d>=0;d--,m++){let p=l.slice(0,d+1).map(g=>g.suffix==="method"?`${g.name}()`:g.name.replace(/\.(ts|tsx|js|jsx|mjs|cjs|py|pyi|rs|java|scala|kt|kts|rb|go|cs|vb|dart|php|c|cc|cpp|cxx|h|hpp)$/,"")).join(":");u.push({symbol:p,shortName:p,depth:m})}return u}function Id(e,t,n={}){let r=B(e,t);if(!r)return null;let i=n.semantic!==!1,o=xt(e,r,{semantic:i,semanticEvidence:H}).filter(a=>te(a.symbol)).slice(0,50),s=Vr(ft(e,r,{limit:50,additive:!0,callableOnly:!0,semantic:i,semanticEvidence:H}));return{symbol:r.symbol,shortName:I(r.symbol),callers:o.map(a=>({symbol:a.symbol,shortName:I(a.symbol),file:a.file})),callees:s.map(a=>({symbol:a.symbol,shortName:I(a.symbol),file:a.file}))}}function pt(e,t){let n=new Set;for(let r of e)t.has(r)&&n.add(r);return n}function ke(e,t){let n=new Set;for(let r of e)t.has(r)||n.add(r);return n}function Fn(e,t){if(e.size===0&&t.size===0)return 0;let n=0;for(let i of e)t.has(i)&&(n+=1);let r=e.size+t.size-n;return r===0?0:n/r}function bC(e,t){if(e.size===0)return 0;let n=0;for(let r of e)t.has(r)&&(n+=1);return n/e.size}function wd(e,t){if(t<=0)return new Map;let n=new Map;for(let[r,i]of e)i>0&&n.set(r,Math.log(t/i));return n}function Jr(e){let t=[...e.values()].sort((r,i)=>r-i);if(t.length===0)return 0;let n=Math.floor(t.length/2);return t.length%2===0?(t[n-1]+t[n])/2:t[n]}function Yr(e,t){let n=0;for(let r of e){let i=t.get(r)??0;n+=i*i}return Math.sqrt(n)}function SC(e,t,n,r={}){let i=0,o=0,s=0,a=r.medianIdf??Jr(n),c=[],l=[];for(let m of e){let f=n.get(m)??0;o+=f*f,t.has(m)&&(i+=f*f,f>=a?c.push(m):l.push(m))}if(c.length===0&&l.length===0)return{similarity:0,significantShared:[],trivialShared:[]};for(let m of t){let f=n.get(m)??0;s+=f*f}let u=Math.sqrt(o)*Math.sqrt(s),d=u>0?i/u:0;return c.sort((m,f)=>(n.get(f)??0)-(n.get(m)??0)),{similarity:d,significantShared:c,trivialShared:l}}function CC(e,t,n,r){let i=0,o=r.medianIdf??Jr(n),s=[],a=[];for(let u of e){if(!t.has(u))continue;let d=n.get(u)??0;i+=d*d,d>=o?s.push(u):a.push(u)}if(s.length===0&&a.length===0)return{similarity:0,significantShared:[],trivialShared:[]};let c=r.magnitudeA*r.magnitudeB,l=c>0?i/c:0;return s.sort((u,d)=>(n.get(d)??0)-(n.get(u)??0)),{similarity:l,significantShared:s,trivialShared:a}}function Oa(e,t,n={}){let{minSimilarity:r=.4,limit:i=20}=n,o=ZB(e,t,{semantic:n.semantic!==!1});if(!o)return[];if(!te(o.symbol))return[];if(o.callees.size===0)return xC(e,t,{minSimilarity:r,limit:i,scanLimit:n.scanLimit,candidateMode:n.sourceCandidateMode??"full"});let s=VB(e,o,r,{scanLimit:n.scanLimit,semantic:n.semantic!==!1});return s.length>0?s.slice(0,i):xC(e,t,{minSimilarity:r,limit:i,scanLimit:n.scanLimit,candidateMode:n.sourceCandidateMode??"full"})}function kd(e,t,n,r={}){let i=B(e,t),o=B(e,n);if(!i||!o)return null;let s=Oa(e,i.symbol,{minSimilarity:0,limit:Number.POSITIVE_INFINITY,semantic:r.semantic,scanLimit:r.scanLimit}).find(l=>l.symbolB===o.symbol||l.symbolA===o.symbol);if(!s)return null;let a=i.endLine-i.startLine+1,c=o.endLine-o.startLine+1;return{symbolA:{symbol:i.symbol,shortName:I(i.symbol),file:i.relativePath,loc:a},symbolB:{symbol:o.symbol,shortName:I(o.symbol),file:o.relativePath,loc:c},similarity:s.similarity,similarityBasis:s.similarityBasis??"callees",sharedEvidence:s.sharedCallees,uniqueToA:s.uniqueToA,uniqueToB:s.uniqueToB,evidenceClass:s.evidenceClass,actionTier:s.actionTier,recommendation:s.recommendation,consolidationStrategy:zB(s)}}function zB(e){let t=e.similarityBasis==="source-tokens"?"source-token":"tracked callee";return e.sharedCallees.length===0?`No shared ${t} evidence survived similar's weighting. Inspect the source before attempting consolidation.`:e.uniqueToA.length===0&&e.uniqueToB.length===0?`The functions have identical ${t} evidence under similar's weighting. Verify signatures, guards, and return values before consolidating.`:e.uniqueToA.length===0?`A's ${t} evidence is a subset of B's. B may subsume part of A's structure, but verify signatures, guards, and non-call logic first.`:e.uniqueToB.length===0?`B's ${t} evidence is a subset of A's. A may subsume part of B's structure, but verify signatures, guards, and non-call logic first.`:e.uniqueToA.length<=2&&e.uniqueToB.length<=2?`Create a shared helper around the ${e.sharedCallees.length} shared ${t}(s). Pass the ${e.uniqueToA.length+e.uniqueToB.length} divergent point(s) as parameters or callbacks.`:`Extract the ${e.sharedCallees.length} shared ${t}(s) into a common helper. Keep each function's unique logic outside that helper (${e.uniqueToA.length} item(s) in A, ${e.uniqueToB.length} in B).`}function VB(e,t,n,r){let i=Xr(e).calleeIndex({minCallees:3,scanLimit:r.scanLimit,semantic:r.semantic}),o=a$(t,i.corpus),s=i$(o,i),a=qB(o,i),c=Jr(a),l=Yr(o.callees,a),u=[];for(let d of s){if(d.callees.size<3)continue;let m=Yr(d.callees,a),f=wC(o,d,a,{minSimilarity:n,requireSignificantShared:1,requireSharedCount:0,medianIdf:c,magnitudeA:l,magnitudeB:m});f&&u.push(f)}return u.sort((d,m)=>m.similarity-d.similarity),u}function qB(e,t){let n=new Map(t.docFreq);for(let r of e.callees)n.set(r,(n.get(r)??0)+1);return wd(n,t.corpus.length+1)}function wC(e,t,n,r){let i=JB(e,t,n,r);if(!YB(i,r))return null;let{similarity:o,significantShared:s,trivialShared:a}=i,c=s.length>0?s:a,l=TC(c,"callees");return{symbolA:e.symbol,shortNameA:I(e.symbol),fileA:e.file,symbolB:t.symbol,shortNameB:I(t.symbol),fileB:t.file,similarity:o,similarityBasis:"callees",sharedCallees:c.map(I),uniqueToA:[...ke(e.callees,t.callees)].map(I),uniqueToB:[...ke(t.callees,e.callees)].map(I),...l}}function KB(e,t,n,r){let i=r.magnitudeA??Yr(e.callees,n),o=r.magnitudeB??Yr(t.callees,n),s=0,a=0,c=0,l=r.medianIdf??Jr(n);for(let m of e.callees){if(!t.callees.has(m))continue;let f=n.get(m)??0;s+=f*f,c+=1,f>=l&&(a+=1)}if(c===0)return!1;let u=i*o;return(u>0?s/u:0)<r.minSimilarity?!1:a>=r.requireSignificantShared||c>=r.requireSharedCount}function JB(e,t,n,r){return r.magnitudeA===void 0||r.magnitudeB===void 0?SC(e.callees,t.callees,n,{medianIdf:r.medianIdf}):CC(e.callees,t.callees,n,{medianIdf:r.medianIdf,magnitudeA:r.magnitudeA,magnitudeB:r.magnitudeB})}function YB(e,t){if(e.similarity<t.minSimilarity)return!1;let n=e.significantShared.length+e.trivialShared.length;return e.significantShared.length>=t.requireSignificantShared||n>=t.requireSharedCount}function po(e,t={}){let{minSimilarity:n=.5,limit:r=20,scope:i,minCallees:o=4,crossFileOnly:s=!1,scanLimit:a}=t,c=t.semantic!==!1,l=U(),u=0,d=0,m=0,f=0,p=0,g=0,y=0;return E("similar.all",()=>{let x=Xr(e).calleeIndex({minCallees:o,scope:i,scanLimit:a,semantic:c}),b=x.corpus;u=b.length;let C=t.focusFiles,S=[],v=0;return E("similar.all.pair-scan",()=>{for(let R=0;R<b.length;R+=1){let D=b[R],w=C?.has(D.file)??!1,P=x.weightedMagnitudes[R],L=new Set;for(let re of D.callees){let Q=x.candidateIndexesByCallee.get(re);if(Q)for(let _ of Q)_<=R||C&&!w&&!C.has(b[_].file)||L.add(_)}l&&(m+=L.size,L.size>0&&(d+=1));for(let re of L){let Q=b[re];if(s&&D.file===Q.file){l&&(p+=1);continue}if(EC(D,Q)){l&&(g+=1);continue}l&&(f+=1);let _=wC(D,Q,x.idfWeights,{minSimilarity:n,requireSignificantShared:2,requireSharedCount:4,medianIdf:x.medianIdf,magnitudeA:P,magnitudeB:x.weightedMagnitudes[re]});_&&(XB(S,_,r,v),l&&(y+=1),v+=1)}}},()=>({corpusSize:u,candidateSets:d,candidatePairs:m,comparedPairs:f,crossFileSkips:p,signatureSkips:g,insertedResults:y,topResults:S.length})),E("similar.all.sort-project",()=>(S.sort((R,D)=>D.result.similarity-R.result.similarity||R.order-D.order),S.map(R=>R.result)),()=>({topResults:S.length}))},()=>({minSimilarity:n,limit:r,scope:i,minCallees:o,crossFileOnly:s,scanLimit:a,semantic:c,corpusSize:u,candidateSets:d,candidatePairs:m,comparedPairs:f,crossFileSkips:p,signatureSkips:g,insertedResults:y}))}function Td(e,t={}){let{minSimilarity:n=.5,scope:r,minCallees:i=4,crossFileOnly:o=!1,scanLimit:s}=t,a=t.semantic!==!1,c=U(),l=0,u=0,d=0,m=0,f=0,p=0,g=0;return E("similar.all-count",()=>{let h=Xr(e).calleeIndex({minCallees:i,scope:r,scanLimit:s,semantic:a}),x=h.corpus;l=x.length;let b=t.focusFiles;return E("similar.all-count.pair-scan",()=>{for(let C=0;C<x.length;C+=1){let S=x[C],v=b?.has(S.file)??!1,R=h.weightedMagnitudes[C],D=new Set;for(let w of S.callees){let P=h.candidateIndexesByCallee.get(w);if(P)for(let L of P)L<=C||b&&!v&&!b.has(x[L].file)||D.add(L)}c&&(d+=D.size,D.size>0&&(u+=1));for(let w of D){let P=x[w];if(o&&S.file===P.file){c&&(f+=1);continue}if(EC(S,P)){c&&(p+=1);continue}c&&(m+=1),KB(S,P,h.idfWeights,{minSimilarity:n,requireSignificantShared:2,requireSharedCount:4,medianIdf:h.medianIdf,magnitudeA:R,magnitudeB:h.weightedMagnitudes[w]})&&(g+=1)}}},()=>({corpusSize:l,candidateSets:u,candidatePairs:d,comparedPairs:m,crossFileSkips:f,signatureSkips:p,insertedResults:g})),g},()=>({minSimilarity:n,scope:r,minCallees:i,crossFileOnly:o,scanLimit:s,semantic:a,corpusSize:l,candidateSets:u,candidatePairs:d,comparedPairs:m,crossFileSkips:f,signatureSkips:p,insertedResults:g}))}function EC(e,t){if(e.paramCount<0||t.paramCount<0)return!1;let n=Math.abs(e.paramCount-t.paramCount),r=Math.max(2,Math.ceil(Math.max(e.paramCount,t.paramCount)*.5));return n>r}var DC=oe({kind:"source-fingerprints",invalidation:J("source-fingerprints"),serialize:D$,deserialize:E$});function XB(e,t,n,r){if(n<=0)return;if(e.length<n){e.push({result:t,order:r});return}let i=0;for(let s=1;s<e.length;s+=1){let a=e[s],c=e[i];(a.result.similarity<c.result.similarity||a.result.similarity===c.result.similarity&&a.order>c.order)&&(i=s)}let o=e[i];t.similarity<=o.result.similarity||(e[i]={result:t,order:r})}var QB=["ScipDatabase#all","ScipDatabase#get","ScipDatabase#prepare","ScipDatabase#pathExclusionsFor","ScipDatabase#isIgnored","ScipDatabase#symbolNoiseFor","PerDbValue#get","PerDbValue#has",":storage:db:ScipDatabase:all",":storage:db:ScipDatabase:get",":storage:db:ScipDatabase:prepare",":storage:db:ScipDatabase:pathExclusionsFor",":storage:db:ScipDatabase:isIgnored",":storage:db:ScipDatabase:symbolNoiseFor",":storage:per-db-cache:PerDbValue:get",":storage:per-db-cache:PerDbValue:has"];function ZB(e,t,n){let r=B(e,t);if(!r||!te(r.symbol))return null;let i=new F(e),o=ft(e,r,{semantic:n.semantic,semanticEvidence:H});return{symbol:r.symbol,file:r.relativePath,callees:ja(o.map(s=>s.symbol)),paramCount:i.callableSignature(r)?.paramCount??-1}}var e$=X("callee-fingerprint-corpus",{clearGroups:["whole-project","definition-catalog"]}),t$=X("callee-fingerprint-index",{clearGroups:["whole-project","definition-catalog"]});function PC(e,t){let{minCallees:n,scope:r,excludeSymbol:i,scanLimit:o}=t,s=t.semantic!==!1,a=e$.get(e,()=>new Map),c=`${n}|${r??""}|${o??""}|${s}`,l=!0,u=0,d=0;return E("similar.callee-fingerprints.resolve",()=>{let m=a.get(c);if(l=m!==void 0,m||(m=o$(e,{minCallees:n,scope:r,scanLimit:o,semantic:s}),a.set(c,m)),u=m.length,i===void 0)return m;let f=m.filter(p=>p.symbol!==i);return d=m.length-f.length,f},()=>({minCallees:n,scope:r,scanLimit:o,semantic:s,cacheHit:l,corpusSize:u,excludeSymbol:i!==void 0,excludedSymbols:d}))}function n$(e,t){let{minCallees:n,scope:r,scanLimit:i}=t,o=t.semantic!==!1,s=t$.get(e,()=>new Map),a=`${n}|${r??""}|${i??""}|${o}`,c=!0,l=0,u=0,d=0;return E("similar.callee-index.resolve",()=>{let m=s.get(a);return c=m!==void 0,m||(m=r$(PC(e,{minCallees:n,scope:r,scanLimit:i,semantic:o})),s.set(a,m)),l=m.corpus.length,u=m.docFreq.size,d=m.candidateIndexesByCallee.size,m},()=>({minCallees:n,scope:r,scanLimit:i,semantic:o,cacheHit:c,corpusSize:l,indexedCallees:u,candidateBuckets:d}))}function Xr(e){return{calleeCorpus:t=>PC(e,t),calleeIndex:t=>n$(e,t),sourceCorpus:(t={})=>AC(e,t),sourceIndex:(t={})=>IC(e,t),sourceCandidates:(t,n)=>(n.candidateMode??"full")==="target-pruned"?b$(e,t,{minSimilarity:n.minSimilarity,scanLimit:n.scanLimit}):y$(t,IC(e,{scanLimit:n.scanLimit}))}}function r$(e){let t=U(),n=0,r=E("similar.callee-index.doc-frequency",()=>{let m=new Map;for(let f of e)for(let p of f.callees)m.set(p,(m.get(p)??0)+1);return n=m.size,m},()=>({corpusSize:e.length,uniqueCallees:n})),i=Math.max(8,Math.ceil(Math.sqrt(e.length))),o=E("similar.callee-index.idf-weights",()=>wd(r,e.length),()=>({corpusSize:e.length,uniqueCallees:r.size})),s=E("similar.callee-index.weighted-magnitudes",()=>e.map(m=>Yr(m.callees,o)),()=>({corpusSize:e.length})),a=0,c=0,l=0,u=E("similar.callee-index.candidate-buckets",()=>{let m=new Map;for(let f=0;f<e.length;f+=1){let p=e[f];for(let g of p.callees){if((r.get(g)??0)>i){t&&(c+=1);continue}let y=m.get(g);y||(y=[],m.set(g,y)),y.push(f),t&&(a+=1)}}return t&&(l=m.size),m},()=>({corpusSize:e.length,buckets:l,candidateRefs:a,ubiquitousSkips:c,ubiquityThreshold:i})),d=E("similar.callee-index.median-idf",()=>Jr(o),()=>({uniqueCallees:o.size}));return{corpus:e,candidateIndexesByCallee:u,docFreq:r,idfWeights:o,weightedMagnitudes:s,medianIdf:d,ubiquityThreshold:i}}function i$(e,t){let n=new Map;for(let r of e.callees)for(let i of t.candidateIndexesByCallee.get(r)??[]){let o=t.corpus[i];o.symbol!==e.symbol&&n.set(o.symbol,o)}return n.size>0?[...n.values()]:t.corpus.filter(r=>r.symbol!==e.symbol)}function o$(e,t){let{minCallees:n,scope:r,scanLimit:i,semantic:o}=t,s=U(),a=new F(e),c=0,l=E("similar.callee-fingerprints.candidates",()=>{let g=se(a.productionCallableDefinitions({scope:r,minLoc:5,sortByLocDesc:typeof i=="number"&&i>0}),i);return c=g.length,g},()=>({scope:r,scanLimit:i,candidateCount:c})),u=0,d=E("similar.callee-fingerprints.callee-map",()=>{let g=a.calleeMap(l,{semantic:o});if(s)for(let y of g.values())u+=y.length;return g},()=>({candidateCount:c,semantic:o,calleeEdges:u})),m=0,f=0,p=0;return E("similar.callee-fingerprints.shape",()=>{let g=l.map(x=>({symbol:x.symbol,file:x.relativePath,callees:ja((d.get(x.symbolId)??[]).map(b=>b.symbol)),paramCount:a.callableSignature(x)?.paramCount??-1})),y=s$(g);s&&(p=y.filter((x,b)=>x.callees.size!==g[b].callees.size).length);let h=y.filter(x=>x.callees.size>=n);return m=h.length,s&&(f=h.reduce((x,b)=>x+b.callees.size,0)),h},()=>({candidateCount:c,fingerprintCount:m,retainedCalleeCount:f,minCallees:n,siblingSaturatedFingerprints:p}))}var kC=5;function s$(e){let t=new Map;for(let n of e){let r=t.get(n.file);r||(r=new Map,t.set(n.file,r));for(let i of n.callees)r.set(i,(r.get(i)??0)+1)}return e.map(n=>{let r=t.get(n.file);if(!r)return n;let i=[...n.callees].filter(s=>(r.get(s)??0)>=kC);if(i.length===0)return n;let o=new Set(n.callees);for(let s of i)o.delete(s);return{...n,callees:o}})}function a$(e,t){let n=new Map;for(let o of t)if(!(o.file!==e.file||o.symbol===e.symbol))for(let s of o.callees)n.set(s,(n.get(s)??0)+1);let r=[...e.callees].filter(o=>(n.get(o)??0)+1>=kC);if(r.length===0)return e;let i=new Set(e.callees);for(let o of r)i.delete(o);return{...e,callees:i}}function ja(e){return new Set([...e].filter(t=>!c$(t)))}function c$(e){return QB.some(t=>e.includes(t))}function xC(e,t,n){let r=m$(e,t);if(!r||r.tokens.size<3)return[];let i=n.minSimilarity>=.5?n.minSimilarity:.3,o=[],s=n.candidateMode??"full",a=0,c=0,l=0,u=0;return E("similar.source-shape",()=>{let m=Xr(e).sourceCandidates(r,{minSimilarity:i,scanLimit:n.scanLimit,candidateMode:s});a=m.length;for(let f of m){if(f.symbol===r.symbol||f.tokens.size<3)continue;c+=1;let p=pt(r.tokens,f.tokens);if(p.size<2){l+=1;continue}let g=new Set([...r.tokens,...f.tokens]),y=g.size>0?p.size/g.size:0;if(y<i){u+=1;continue}o.push({symbolA:r.symbol,shortNameA:I(r.symbol),fileA:r.file,symbolB:f.symbol,shortNameB:I(f.symbol),fileB:f.file,similarity:y,similarityBasis:"source-tokens",sharedCallees:[...p].sort(),uniqueToA:[...ke(r.tokens,f.tokens)].sort(),uniqueToB:[...ke(f.tokens,r.tokens)].sort(),...TC([...p],"source-tokens")})}return o.sort((f,p)=>p.similarity-f.similarity||f.shortNameB.localeCompare(p.shortNameB)),o.slice(0,n.limit)},()=>({symbol:r.symbol,file:r.file,targetTokens:r.tokens.size,candidateMode:s,candidates:a,comparedPairs:c,sharedSkips:l,similaritySkips:u,results:o.length}))}function TC(e,t){let n=e.flatMap(Dd),r=e.flatMap(y=>RC(y,t)),i=Ed(n,FC),o=Ed(n,_C),s=Ed(r,Pd),a=[...new Set(r.filter(vC))],c=e.filter(y=>{let h=RC(y,t);return h.some(x=>Pd.has(x))&&h.some(vC)}).length,l=[];i.length>0&&l.push(`access/query scaffolding: ${i.slice(0,5).join(", ")}`),o.length>0&&l.push(`framework/generic scaffolding: ${o.slice(0,5).join(", ")}`),s.length>0&&l.push(`domain behavior verbs: ${s.slice(0,5).join(", ")}`),s.length>0&&a.length>0&&l.push(`domain-specific terms: ${a.slice(0,5).join(", ")}`);let u=t==="source-tokens"&&n.length>0&&n.every(y=>LC.has(y));u&&l.push("shared source tokens are generic scaffolding");let d=s.length>0&&a.length>0,m=i.length+o.length>0,f=t==="callees"&&d&&e.length>=4&&a.length>=4&&c>=2,p=f?"domain-behavior":d?m?"mixed":"domain-behavior":i.length>0?"access-query-scaffolding":o.length>0||u?"framework-scaffolding":"structural-overlap";p==="structural-overlap"&&e.length>0&&l.push(`shared ${t} overlap has no recognized domain or scaffolding category`);let g=p==="domain-behavior"&&(e.length>=3||f)?"direct":"signal";return{evidenceClass:p,actionTier:g,evidenceClassReasons:l,recommendation:l$(p,g)}}function l$(e,t){return t==="direct"?"Shared domain behavior looks concrete; review for an extract/reuse opportunity.":e==="mixed"?"Shared evidence mixes domain behavior with scaffolding; review semantics before extracting anything.":e==="access-query-scaffolding"?"Shared evidence is mostly access/query scaffolding; compare product semantics before reusing code.":e==="structural-overlap"?"Shared structure has no domain or scaffolding classification; inspect names and behavior before reusing code.":"Shared evidence is mostly framework or generic scaffolding; treat as a contextual signal."}function Ed(e,t){return[...new Set(e.filter(n=>t.has(n)))]}function Dd(e){return e.replace(/([a-z0-9])([A-Z])/g,"$1 $2").toLowerCase().split(/[^a-z0-9]+/).filter(t=>t.length>1)}function RC(e,t){if(t==="source-tokens")return Dd(e);let n=T(e);return Dd(n.length>0?n:u$(e))}function u$(e){return e.replace(/[()`]/g," ").replace(/\.[a-z][a-z0-9]+(?=\s|$)/gi," ").split(/[:/\\\s]+/).map(r=>r.trim()).filter(r=>/[A-Za-z]/.test(r)).at(-1)?.replace(/\.$/,"")??e}function vC(e){return e.length>3&&!Pd.has(e)&&!FC.has(e)&&!_C.has(e)&&!LC.has(e)&&!d$.has(e)}var Pd=new Set(["archive","assign","book","cancel","create","delete","ensure","export","import","notify","persist","publish","restore","schedule","send","set","submit","sync","update","upload","validate","write"]),FC=new Set(["access","auth","authorize","cache","context","db","find","get","guard","list","permission","permissions","prisma","query","request","response","role","route","session","sql","where"]),_C=new Set(["bytes","computed","crypto","describe","effect","expect","fetch","filter","hex","hook","json","map","mounted","on","promise","random","react","reduce","ref","render","state","test","token","trim","uuid","vue","watch"]),LC=new Set(["bytes","crypto","data","false","get","hex","id","key","map","name","num","random","result","secret","set","string","to","token","true","type","value"]),d$=new Set(["best","backend","conflict","database","effect","effects","error","errors","frontend","found","helpers","javascript","module","modules","scip","shared","source","typescript","utils","with","workflow","workflows"]);function m$(e,t){let n=B(e,t);if(!n||!te(n.symbol))return null;let r=f$(e,n);return r?{symbol:n.symbol,file:n.relativePath,tokens:r}:null}function f$(e,t){let n=T(t.symbol),r=v$(e,t.relativePath,t.startLine,t.endLine,n),i=jC(r,n);return i.size>0?i:null}var p$=X("source-fingerprint-corpus",{clearGroups:["whole-project","definition-catalog"]}),g$=X("source-fingerprint-index",{clearGroups:["whole-project","definition-catalog"]});function NC(e){return`${e.scanLimit??""}`}function AC(e,t={}){let n=p$.get(e,()=>new Map),r=NC(t),i=n.get(r);return i||(i=R$(e,t),n.set(r,i)),i}function IC(e,t={}){let n=g$.get(e,()=>new Map),r=NC(t),i=n.get(r);return i||(i=h$(AC(e,t)),n.set(r,i)),i}function h$(e){let t=new Map;for(let i of e)for(let o of i.tokens)t.set(o,(t.get(o)??0)+1);let n=Math.max(8,Math.ceil(Math.sqrt(e.length))),r=new Map;for(let i of e)for(let o of i.tokens){if((t.get(o)??0)>n)continue;let s=r.get(o);s||(s=[],r.set(o,s)),s.push(i)}return{corpus:e,candidateByToken:r,docFreq:t,ubiquityThreshold:n}}function y$(e,t){let n=new Map;for(let r of e.tokens)for(let i of t.candidateByToken.get(r)??[])i.symbol!==e.symbol&&n.set(i.symbol,i);return n.size>0?[...n.values()]:t.corpus.filter(r=>r.symbol!==e.symbol)}function b$(e,t,n){let r=U(),i=new F(e),o=S$(t.tokens.size,n.minSimilarity),s=0,a=0,c=0,l=E("similar.source-shape.target-files",()=>{let p=[...t.tokens],g=[];for(let y of N(e,{includeIgnored:!1})){s+=1;let h=k(e,y);h&&(a+=1,C$(h,p,o)&&g.push(y))}return c=g.length,g},()=>({symbol:t.symbol,targetTokens:t.tokens.size,requiredSharedTokens:o,scannedFiles:s,readableFiles:a,candidateFiles:c})),u=0,d=E("similar.source-shape.target-definitions",()=>{let p=se(i.productionCallableDefinitions({files:l,sortByLocDesc:typeof n.scanLimit=="number"&&n.scanLimit>0}),n.scanLimit);return u=p.length,p},()=>({symbol:t.symbol,candidateFiles:c,scanLimit:n.scanLimit,definitionCount:u})),m=0;return E("similar.source-shape.target-fingerprints",()=>{let p=MC(e,d);return r&&(m=p.length),p},()=>({symbol:t.symbol,definitionCount:u,fingerprintCount:m})).filter(p=>p.symbol!==t.symbol)}function S$(e,t){return Math.max(2,Math.ceil(e*t))}function C$(e,t,n){if(t.length<n)return!1;let r=e.toLowerCase(),i=0;for(let o of t)if(x$(r,o)&&(i+=1,i>=n))return!0;return!1}function x$(e,t){return t==="num"?/\b\d+\b/.test(e):e.includes(t)}function R$(e,t={}){let n=new F(e),{scanLimit:r}=t,i=se(n.productionCallableDefinitions({sortByLocDesc:typeof r=="number"&&r>0}),r);return MC(e,i)}function MC(e,t){let n=new Map;for(let i of t){let o=n.get(i.relativePath)??[];o.push(i),n.set(i.relativePath,o)}let r=new Map;for(let[i,o]of n){let s=k(e,i);if(!s)continue;let a=ce(e,i,s),c=w$(e,i,a),l=!1,u=null;for(let d of o){let m=I$(d),f=c.get(m),p=f?new Set(f.tokens):null;p||(u??=Ce(e,i),p=jC(OC(u,d.startLine,d.endLine,d.leaf),d.leaf),c.set(m,{key:m,symbol:d.symbol,startLine:d.startLine,endLine:d.endLine,leaf:d.leaf,tokens:[...p].sort()}),l=!0),p.size>0&&r.set(d.symbol,{symbol:d.symbol,file:d.relativePath,tokens:p})}l&&P$(e,i,a,c)}return t.map(i=>r.get(i.symbol)).filter(i=>!!i)}function v$(e,t,n,r,i){let o=Ce(e,t);return o.length===0?"":OC(o,n,r,i)}function OC(e,t,n,r){if(n>=t&&n-t<=12)return e.slice(t,n+1).join(`
716
+ `);let i=[new RegExp(`\\bdef\\s+${$(r)}\\b`),new RegExp(`\\bfun\\s+${$(r)}\\b`),new RegExp(`\\bfn\\s+${$(r)}\\b`),new RegExp(`\\bfunction\\s+${$(r)}\\b`),new RegExp(`\\b${$(r)}\\s*\\(`)],o=e.findIndex(s=>i.some(a=>a.test(s)));if(o>=0){let s=o;for(let a=o+1;a<e.length&&a<=o+8;a++){let c=e[a]??"";if(a>o&&T$(c)||(s=a,c.trim()===""&&a>o+1))break}return e.slice(o,s+1).join(`
717
+ `)}return e.slice(t,Math.min(e.length,t+8)).join(`
718
+ `)}function I$(e){return`${e.symbol}\0${e.startLine}\0${e.endLine}\0${e.leaf}`}function w$(e,t,n){return DC.read(e,t,n)??new Map}function E$(e){try{let t=JSON.parse(e);if(!Array.isArray(t.entries))return null;let n=new Map;for(let r of t.entries){if(!r||typeof r.key!="string"||typeof r.symbol!="string"||typeof r.startLine!="number"||typeof r.endLine!="number"||typeof r.leaf!="string"||!Array.isArray(r.tokens)||!r.tokens.every(i=>typeof i=="string"))return null;n.set(r.key,r)}return n}catch{return null}}function D$(e){let t={entries:[...e.values()].sort((n,r)=>n.key.localeCompare(r.key))};return JSON.stringify(t)}function P$(e,t,n,r){DC.write(e,t,n,new Map(r))}function jC(e,t){if(!e)return new Set;let n=new Set(["public","private","protected","final","static","class","def","fun","fn","function","return","string","bool","boolean","void","unit","self","this","new","const","let","var","end","pub"]),r=k$(t),o=e.replace(/["'`]/g," ").replace(/\b\d+\b/g," NUM ").replace(/([a-z0-9])([A-Z])/g,"$1 $2").replace(/[^A-Za-z0-9_]+/g," ").replace(/_/g," ").toLowerCase().split(/\s+/).map(s=>s.trim()).filter(s=>s.length>1).filter(s=>!n.has(s)).filter(s=>!r.has(s));return new Set(o)}function k$(e){return new Set(e.replace(/([a-z0-9])([A-Z])/g,"$1 $2").split(/[^A-Za-z0-9_]+|_/).map(t=>t.toLowerCase()).filter(t=>t.length>1))}function T$(e){return/^\s*(?:def|fun|fn|function|class|trait|module|object|enum|interface|public|private|protected)\b/.test(e)}function At(e,t){let n=new Map;return e.forEach((r,i)=>{let o=new Set;for(let s of t(r)){if(o.has(s))continue;o.add(s);let a=n.get(s);a?a.push(i):n.set(s,[i])}}),{candidatesFor:(r,i)=>{let o=new Set;for(let s of t(r)){let a=n.get(s);if(a)for(let c of a)c!==i&&o.add(c)}return[...o].sort((s,a)=>s-a)}}}function Mt(e){let t=BC(e.profile?.name),n=()=>{let r=[];t=BC(e.profile?.name,e);let i=(s,a)=>{let c=e.profiles[s],l=e.profiles[a];t.candidatePairs+=1,t.comparedPairs+=1;let u=e.compare(c,l);u&&r.push(u)};if(e.filePattern){let s=e.profiles.findIndex(a=>a.file.includes(e.filePattern));if(s>=0){let a=e.profiles[s];for(let c of F$(e,s)){let l=e.profiles[c];e.focusFiles&&!e.focusFiles.has(a.file)&&!e.focusFiles.has(l.file)||i(s,c)}}}else if(e.focusFiles?.size!==0){let s=typeof e.overrunFactor=="number"&&Number.isFinite(e.limit)?e.limit*e.overrunFactor:Number.POSITIVE_INFINITY;for(let a=0;a<e.profiles.length;a+=1){let c=e.profiles[a],l=e.focusFiles?.has(c.file)??!1;for(let u of _$(e,a))e.focusFiles&&!l&&!e.focusFiles.has(e.profiles[u].file)||i(a,u);if(r.length>s){t.overrunApplied=!0;break}}}r.sort(e.sort??((s,a)=>a.similarity-s.similarity)),t.matchedResults=r.length;let o=r.slice(0,e.limit);return t.emittedResults=o.length,e.onProfile?.({...t}),o};return e.profile?E(`pairwise-profile:${e.profile.name}`,n,()=>({...L$(e.profile?.metadata),...t})):n()}function F$(e,t){if(e.candidateIndex)return $C(e,t,-1);let n=[];for(let r=0;r<e.profiles.length;r+=1)r!==t&&n.push(r);return n}function _$(e,t){if(e.candidateIndex)return $C(e,t,t);let n=[];for(let r=t+1;r<e.profiles.length;r+=1)n.push(r);return n}function $C(e,t,n){let r=e.profiles[t],i=new Set;for(let o of e.candidateIndex?.candidatesFor(r,t,e.profiles)??[])o<=n||o!==t&&(o<0||o>=e.profiles.length||i.add(o));return[...i].sort((o,s)=>o-s)}function BC(e,t){return{pipeline:e,profileCount:t?.profiles.length??0,focusedProfileCount:t?.focusFiles?t.profiles.filter(n=>t.focusFiles.has(n.file)).length:0,candidatePairs:0,comparedPairs:0,matchedResults:0,emittedResults:0,candidateIndexApplied:t?.candidateIndex!==void 0,focusApplied:t?.focusFiles!==void 0,filePatternApplied:t?.filePattern!==void 0,overrunApplied:!1}}function L$(e){return typeof e=="function"?e():e??{}}function N$(e,t={}){let{minSimilarity:n=.5,limit:r=20,scope:i,filePattern:o}=t,s=t.minDeps??(o?1:3),{profiles:a,distinctiveDeps:c}=A$(e,{scope:i,minDeps:s}),l=At(a,u=>u.deps);return Mt({profiles:a,limit:r,filePattern:o,overrunFactor:5,candidateIndex:l,profile:{name:"similar-files"},compare:(u,d)=>O$(u,d,n,c)})}function A$(e,t){let{scope:n,minDeps:r}=t,i=ie(e,n),{universalDeps:o,distinctiveDeps:s}=M$(i),a=[];for(let[c,l]of i)l.size>=r&&a.push({file:c,deps:new Set([...l].filter(u=>!o.has(u)))});return{profiles:a,distinctiveDeps:s}}function M$(e){let t=new Set,n=new Set,r=e.size;if(r===0)return{universalDeps:t,distinctiveDeps:n};let i=new Map;for(let s of e.values())for(let a of s)i.set(a,(i.get(a)??0)+1);let o=Math.max(3,Math.ceil(r*.03));for(let[s,a]of i)a>=5&&a/r>.3?t.add(s):a<=o&&n.add(s);return{universalDeps:t,distinctiveDeps:n}}function O$(e,t,n,r){let i=new Set;for(let l of e.deps)t.deps.has(l)&&i.add(l);if(i.size<3||e.deps.size<4||t.deps.size<4)return null;let o=0;for(let l of i)r.has(l)&&o++;if(o<2)return null;let s=Fn(e.deps,t.deps);if(s<n)return null;let a=[];for(let l of e.deps)t.deps.has(l)||a.push(l);let c=[];for(let l of t.deps)e.deps.has(l)||c.push(l);return{fileA:e.file,fileB:t.file,similarity:s,sharedDeps:[...i],uniqueToA:a,uniqueToB:c}}function _n(e){let t=[],n=[],r=[];for(let l of e.primitiveGroups)l.values.length!==0&&HC(l.bucket,n,r).push(`${l.reasonPrefix}: ${l.values.join(", ")}`);for(let l of e.nameGroups)j$(l.names,l.label,e.genericWords,e.stripPrefixes??[],t,HC(l.fallbackBucket,n,r));let i=t.length>0,o=n.length>0,s=r.length>0,a=i?o||s?"mixed":"domain-behavior":s?"shared-abstraction":"generic-workflow-scaffolding";return{actionTier:a==="domain-behavior"||a==="mixed"?"signal":"support",evidenceClass:a,reasons:[...t,...r,...n].slice(0,6),recommendation:e.recommendation(a)}}function Ba(e,t){if(e.size===0||t.size===0)return 0;let i=pt(e,t).size/Math.min(e.size,t.size)*Math.min(1,Math.min(e.size,t.size)/(.35*Math.max(e.size,t.size)));return Math.max(Fn(e,t),i)}function Ln(e,t){let n=Object.fromEntries(e.map(r=>[r.name,r.count]));for(let r of t)if(Object.entries(r.min).every(([o,s])=>(n[o]??0)>=s))return{pass:!0,reason:r.reason,counts:n};return{pass:!1,reason:"shared tokens did not meet calibrated overlap thresholds",counts:n}}function $a(e,t,n){let r=t.map(c=>{let l=c.value(e),u=c.weightedValue?c.weightedValue(e,l):l;return{axis:c,value:l,weighted:u,qualifies:c.qualifies?c.qualifies(e,l):l>0}}),i=r.filter(c=>c.qualifies&&c.axis.reason).map(c=>c.axis.reason(e,c.value)),o=r.filter(c=>c.qualifies&&c.axis.dominantEligible!==!1).sort((c,l)=>l.weighted-c.weighted)[0],s=o&&o.weighted>0?o.axis.axis:n,a=[...new Set(r.filter(c=>c.qualifies).map(c=>c.axis.axis).concat(i.length>0?[]:[s]))];return{dominantPressure:s,pressureKinds:a,reasons:i}}function q(e,t){return[...e].filter(n=>n.startsWith(t)).map(n=>n.slice(t.length)).sort()}function Le(e){return[...e].sort()}function j$(e,t,n,r,i,o){let s=[],a=[];for(let c of e)B$(c,r).filter(u=>!n.has(u)).length>0?s.push(c):a.push(c);s.length&&i.push(`${t} has domain term(s): ${s.slice(0,6).join(", ")}`),a.length&&o.push(`${t} is generic workflow: ${a.slice(0,6).join(", ")}`)}function B$(e,t){let n=e.replace(/([A-Z])([A-Z][a-z])/g,"$1 $2").replace(/([a-z0-9])([A-Z])/g,"$1 $2");for(let r of t)n=n.replace(r,"");return n.toLowerCase().split(/[^a-z0-9]+/).filter(Boolean)}function HC(e,t,n){return e==="generic"?t:n}function go(e,t={}){let{minSimilarity:n=.62,minTokens:r=8,limit:i=20,scope:o,scanLimit:s,filePattern:a,focusFiles:c}=t,l=ot(e).reactProfiles({scope:o,minJsxTokens:r,scanLimit:s}).filter(d=>d.kind==="component").map(d=>({file:d.file,component:d.name,tokens:d.jsxTokens,profile:d})),u=At(l,d=>d.tokens);return Mt({profiles:l,limit:i,filePattern:a,focusFiles:c,candidateIndex:u,profile:{name:"react-component-duplicates"},compare:(d,m)=>$$(d,m,n),sort:(d,m)=>m.similarity-d.similarity||d.fileA.localeCompare(m.fileA)||d.componentA.localeCompare(m.componentA)||d.fileB.localeCompare(m.fileB)||d.componentB.localeCompare(m.componentB)})}function $$(e,t,n){let r=pt(e.tokens,t.tokens);if(r.size<6||!H$(r))return null;let i=Fn(e.tokens,t.tokens);if(i<n)return null;let o=q(r,"component:"),s=q(r,"native:"),a=q(r,"prop:"),c=q(r,"event:"),l=q(r,"binding:"),u=U$({sharedComponents:o,sharedNativeTags:s,sharedProps:a,sharedEvents:c,sharedBindings:l});return{fileA:e.file,componentA:e.component,fileB:t.file,componentB:t.component,similarity:i,tokenCountA:e.tokens.size,tokenCountB:t.tokens.size,sharedTokens:Le(r),sharedComponents:o,sharedNativeTags:s,sharedProps:a,sharedEvents:c,sharedBindings:l,evidenceClass:u.evidenceClass,actionTier:u.actionTier,evidenceClassReasons:u.reasons,recommendation:u.recommendation,uniqueToA:Le(ke(e.tokens,t.tokens)).slice(0,25),uniqueToB:Le(ke(t.tokens,e.tokens)).slice(0,25),locA:e.profile.loc,locB:t.profile.loc}}function H$(e){let t=0,n=0;for(let r of e)r.startsWith("component:")&&(t+=1),(r.startsWith("prop:")||r.startsWith("event:")||r.startsWith("native:")||r.startsWith("jsx:"))&&(n+=1);return Ln([{name:"component",count:t},{name:"shape",count:n}],[{min:{component:1},reason:"shared custom component"},{min:{shape:4},reason:"shared JSX structure"}]).pass}function U$(e){return _n({genericWords:G$,primitiveGroups:[{values:e.sharedNativeTags,reasonPrefix:"shared native tags",bucket:"generic"},{values:e.sharedProps,reasonPrefix:"shared props",bucket:"generic"},{values:e.sharedEvents,reasonPrefix:"shared events",bucket:"generic"}],nameGroups:[{names:e.sharedComponents,label:"shared component",fallbackBucket:"generic"},{names:e.sharedBindings,label:"shared binding",fallbackBucket:"generic"}],recommendation:W$})}function W$(e){switch(e){case"domain-behavior":case"mixed":return"Review for a shared component or feature-specific UI primitive around the named domain structure.";case"shared-abstraction":return"Review the existing shared component usage first; extract only if duplicated structure remains outside it.";case"generic-workflow-scaffolding":return"Generic structural overlap \u2014 verify intent before consolidating."}}var G$=new Set(["actions","app","button","card","children","content","container","dialog","field","form","header","input","item","label","layout","list","modal","page","panel","row","section","shell","table","text","toolbar","ui","value","view","wrapper"]);function ho(e,t={}){let{minSimilarity:n=.45,minSharedBehaviors:r=6,limit:i=20,scope:o,scanLimit:s,filePattern:a,focusFiles:c}=t,l=ot(e).reactProfiles({scope:o,minBehaviorTokens:Math.max(3,r),scanLimit:s}).map(d=>({file:d.file,component:d.name,tokens:d.behaviorTokens,profile:d})),u=At(l,d=>d.tokens);return Mt({profiles:l,limit:i,filePattern:a,focusFiles:c,candidateIndex:u,profile:{name:"react-hook-candidates"},compare:(d,m)=>z$(d,m,n,r),sort:(d,m)=>m.similarity-d.similarity||d.fileA.localeCompare(m.fileA)||d.componentA.localeCompare(m.componentA)||d.fileB.localeCompare(m.fileB)||d.componentB.localeCompare(m.componentB)})}function z$(e,t,n,r){let i=pt(e.tokens,t.tokens);if(i.size<r||!K$(i))return null;let o=Ba(e.tokens,t.tokens);if(o<n)return null;let s=q(i,"hook:"),a=q(i,"react-hook:"),c=q(i,"effect:"),l=q(i,"state:"),u=q(i,"request:"),d=q(i,"handler:"),m=q(i,"handler-verb:"),f=V$({sharedHooks:s,sharedReactHooks:a,sharedEffects:c,sharedState:l,sharedRequests:u,sharedHandlers:d,sharedHandlerVerbs:m});return{fileA:e.file,componentA:e.component,fileB:t.file,componentB:t.component,similarity:o,tokenCountA:e.tokens.size,tokenCountB:t.tokens.size,sharedTokens:Le(i),sharedHooks:s,sharedReactHooks:a,sharedEffects:c,sharedState:l,sharedRequests:u,sharedHandlers:d,sharedHandlerVerbs:m,evidenceClass:f.evidenceClass,actionTier:f.actionTier,evidenceClassReasons:f.reasons,recommendation:f.recommendation,uniqueToA:Le(ke(e.tokens,t.tokens)).slice(0,25),uniqueToB:Le(ke(t.tokens,e.tokens)).slice(0,25),reason:J$({sharedHooks:s,sharedReactHooks:a,sharedEffects:c,sharedState:l,sharedRequests:u,sharedHandlers:d,sharedHandlerVerbs:m}),locA:e.profile.loc,locB:t.profile.loc}}function V$(e){return _n({genericWords:Y$,stripPrefixes:X$,primitiveGroups:[{values:e.sharedReactHooks,reasonPrefix:"shared React primitives",bucket:"generic"},{values:e.sharedEffects,reasonPrefix:"shared lifecycle primitive",bucket:"generic"}],nameGroups:[{names:e.sharedHooks,label:"shared hook",fallbackBucket:"shared-abstraction"},{names:e.sharedRequests,label:"shared request",fallbackBucket:"generic"},{names:e.sharedState,label:"shared state",fallbackBucket:"generic"},{names:e.sharedHandlers,label:"shared handler",fallbackBucket:"generic"},{names:e.sharedHandlerVerbs,label:"shared action verb",fallbackBucket:"generic"}],recommendation:q$})}function q$(e){switch(e){case"domain-behavior":return"Review for a shared hook, controller, or feature module around the named domain behavior.";case"mixed":return"Separate generic React mechanics from domain-specific behavior before extracting a shared hook.";case"shared-abstraction":return"Review the existing shared hook usage first; extract only if duplicated behavior remains outside it.";case"generic-workflow-scaffolding":return"Treat as support evidence for a repeated workflow shape, not direct hook-extraction evidence."}}function K$(e){let t=0,n=0,r=0,i=0,o=0,s=0,a=0;for(let u of e)u.startsWith("hook:")?t+=1:u.startsWith("react-hook:")?n+=1:u.startsWith("effect:")?r+=1:u.startsWith("request:")?i+=1:u.startsWith("handler:")||u.startsWith("handler-verb:")?o+=1:u.startsWith("state:")?s+=1:u.startsWith("state-hook:")&&(a+=1);let c=s+a,l=t+n+r+i+o+c;return Ln([{name:"requests",count:i},{name:"customHooks",count:t},{name:"namedStates",count:s},{name:"handlers",count:o},{name:"effects",count:r},{name:"reactHooks",count:n},{name:"namedBehavior",count:l}],[{min:{requests:1,namedBehavior:4},reason:"shared request workflow"},{min:{customHooks:1,requests:1,namedBehavior:5},reason:"shared custom hook and request workflow"},{min:{customHooks:1,namedStates:1,namedBehavior:5},reason:"shared custom hook and state"},{min:{customHooks:1,handlers:2,namedBehavior:5},reason:"shared custom hook and handlers"},{min:{namedStates:1,handlers:2,effects:1,namedBehavior:5},reason:"shared stateful effects"},{min:{namedStates:1,handlers:2,reactHooks:2,namedBehavior:5},reason:"shared stateful React primitives"}]).pass}function J$(e){let t=[];return e.sharedHooks.length&&t.push(`shared hooks: ${e.sharedHooks.join(", ")}`),e.sharedReactHooks.length&&t.push(`shared React hooks: ${e.sharedReactHooks.join(", ")}`),e.sharedEffects.length&&t.push(`shared effects: ${e.sharedEffects.join(", ")}`),e.sharedState.length&&t.push(`shared state: ${e.sharedState.join(", ")}`),e.sharedRequests.length&&t.push(`shared requests: ${e.sharedRequests.join(", ")}`),e.sharedHandlers.length&&t.push(`shared handlers: ${e.sharedHandlers.slice(0,6).join(", ")}`),e.sharedHandlerVerbs.length&&t.push(`shared action verbs: ${e.sharedHandlerVerbs.slice(0,6).join(", ")}`),t.join("; ")||"shared React behavior profile"}var Y$=new Set(["add","apply","async","callback","cancel","change","clear","close","create","data","delete","draft","edit","effect","error","fetch","filter","form","handle","has","is","item","items","load","loader","loading","memo","name","open","reducer","refresh","ref","remove","request","reset","resource","row","rows","save","saving","search","select","selected","state","store","submit","toggle","update","use","value"]),X$=[/^use(?=[A-Z])/,/^handle(?=[A-Z])/,/^is(?=[A-Z])/,/^has(?=[A-Z])/];function Fd(e,t={}){let{minComponentLines:n=300,minFileLines:r=800,minJsxTokens:i=80,minBehaviorTokens:o=40,limit:s=20,scope:a,scanLimit:c,filePattern:l}=t;return ot(e).reactProfiles({scope:a,scanLimit:c}).filter(d=>d.kind==="component").filter(d=>!l||d.file.includes(l)||d.name.includes(l)).map(d=>Q$(d,{minComponentLines:n,minFileLines:r,minJsxTokens:i,minBehaviorTokens:o})).filter(d=>d!==null).sort((d,m)=>m.componentLines-d.componentLines||m.fileLines-d.fileLines||d.file.localeCompare(m.file)).slice(0,s)}function Q$(e,t){let n=Math.max(80,Math.floor(t.minComponentLines/2)),r=$a(e,Z$({minComponentLines:t.minComponentLines,minFileLines:t.minFileLines,minJsxTokens:t.minJsxTokens,minBehaviorTokens:t.minBehaviorTokens,substantialComponentLines:n}),"component"),{reasons:i}=r;if(i.length===0)return null;let o=r.dominantPressure,s=r.pressureKinds,a=e1(e),c=t1(o,s,a);return{file:e.file,component:e.name,componentLines:e.loc,fileLines:e.fileLines,jsxTokens:e.jsxTokens.size,behaviorTokens:e.behaviorTokens.size,dominantPressure:o,pressureKinds:s,contextKind:a,recommendationKind:c,recommendation:n1(c,a),reasons:i,loc:e.loc}}function Z$(e){return[{axis:"component",value:t=>t.loc,qualifies:(t,n)=>n>=e.minComponentLines,reason:(t,n)=>`${n} component line(s)`},{axis:"file",value:t=>t.fileLines,qualifies:(t,n)=>n>=e.minFileLines&&t.loc>=e.substantialComponentLines,reason:(t,n)=>`${n} file line(s)`},{axis:"jsx-structure",value:t=>t.jsxTokens.size,weightedValue:(t,n)=>n*3,qualifies:(t,n)=>n>=e.minJsxTokens,reason:(t,n)=>`${n} JSX structure token(s)`},{axis:"hook-behavior",value:t=>t.behaviorTokens.size,weightedValue:(t,n)=>n*4,qualifies:(t,n)=>n>=e.minBehaviorTokens,reason:(t,n)=>`${n} behavior token(s)`}]}function e1(e){let t=e.file.split(/[\\/]+/).filter(Boolean),n=t.slice(0,-1).map(m=>m.toLowerCase()),r=(t.at(-1)??e.name).replace(/\.[^.]+$/,""),o=n.findIndex(m=>i1.has(m))>=0,s=n.some(m=>r1.has(m));if(UC(r)||UC(e.name))return"component";let c=o1.has(r.toLowerCase()),l=/(?:Page|Route|Screen)$/.test(e.name),u=o&&/View$/.test(e.name),d=!s&&r.replace(/[^A-Za-z0-9]+/g,"").toLowerCase()===e.name.replace(/[^A-Za-z0-9]+/g,"").toLowerCase()&&/(?:Page|Route|Screen|View)$/.test(r);return c||l||u||d?"route-page":"component"}function UC(e){let t=e.split(/[^A-Za-z0-9]+/).filter(Boolean).map(n=>n.toLowerCase());return t.at(-1)&&WC.has(t.at(-1))?!0:[...WC].some(n=>e.endsWith(s1(n)))}function t1(e,t,n){return e==="hook-behavior"?"behavior-extraction":n==="route-page"?"route-page-decomposition":t.includes("hook-behavior")?"behavior-extraction":t.includes("jsx-structure")?"jsx-decomposition":t.includes("file")?"file-decomposition":e==="jsx-structure"?"jsx-decomposition":e==="file"&&!t.includes("component")?"file-decomposition":"component-decomposition"}function n1(e,t){switch(e){case"behavior-extraction":return"Extract independent state, effects, requests, or handlers into hooks, controllers, or feature modules.";case"route-page-decomposition":return"Split route/page orchestration from reusable panels and feature controllers.";case"jsx-decomposition":return t==="route-page"?"Split page JSX into named layout sections before extracting behavior.":"Split repeated JSX sections into named presentational components.";case"file-decomposition":return"Review file-level decomposition; split colocated panels or helpers before changing behavior.";case"component-decomposition":return"Review component boundaries around props, state ownership, and independently changing UI sections."}}var r1=new Set(["component","components","panel","panels","partial","partials"]),WC=new Set(["banner","button","card","dialog","drawer","filter","form","grid","header","item","list","menu","modal","nav","panel","picker","rail","row","section","selector","shell","sidebar","table","toolbar"]),i1=new Set(["landing","page","pages","route","routes","screen","screens","view","views"]),o1=new Set(["page","route","screen"]);function s1(e){return e.charAt(0).toUpperCase()+e.slice(1)}function yo(e,t={}){let{minSimilarity:n=.62,minTokens:r=8,limit:i=20,scope:o,scanLimit:s,filePattern:a,focusFiles:c}=t,l=a1(e,{scope:o,minTokens:r,scanLimit:s}),u=At(l,d=>d.tokens);return Mt({profiles:l,limit:i,filePattern:a,focusFiles:c,candidateIndex:u,profile:{name:"vue-component-duplicates"},compare:(d,m)=>l1(d,m,n),sort:(d,m)=>m.similarity-d.similarity||d.fileA.localeCompare(m.fileA)||d.fileB.localeCompare(m.fileB)})}function a1(e,t){return ot(e).vueProfiles({scope:t.scope,minTemplateTokens:t.minTokens,scanLimit:t.scanLimit}).map(n=>({file:n.file,tokens:n.templateTokens,loc:c1(n)}))}function c1(e){return e.totalLines}function l1(e,t,n){let r=pt(e.tokens,t.tokens);if(r.size<6||!u1(r))return null;let i=Fn(e.tokens,t.tokens);if(i<n)return null;let o=q(r,"component:"),s=q(r,"prop:"),a=q(r,"event:"),c=q(r,"directive:"),l=q(r,"slot:"),u=q(r,"id:"),d=d1({sharedComponents:o,sharedProps:s,sharedEvents:a,sharedDirectives:c,sharedSlots:l,sharedIdentifiers:u});return{fileA:e.file,fileB:t.file,similarity:i,tokenCountA:e.tokens.size,tokenCountB:t.tokens.size,sharedTokens:Le(r),sharedComponents:o,sharedProps:s,sharedEvents:a,sharedDirectives:c,sharedSlots:l,sharedIdentifiers:u,evidenceClass:d.evidenceClass,actionTier:d.actionTier,evidenceClassReasons:d.reasons,recommendation:d.recommendation,uniqueToA:Le(ke(e.tokens,t.tokens)).slice(0,25),uniqueToB:Le(ke(t.tokens,e.tokens)).slice(0,25),locA:e.loc,locB:t.loc}}function u1(e){let t=0,n=0;for(let r of e)r.startsWith("component:")&&(t+=1),(r.startsWith("prop:")||r.startsWith("event:")||r.startsWith("directive:")||r.startsWith("slot:"))&&(n+=1);return Ln([{name:"component",count:t},{name:"behavior",count:n}],[{min:{component:1},reason:"shared custom component"},{min:{behavior:3},reason:"shared Vue template structure"}]).pass}function d1(e){return _n({genericWords:f1,primitiveGroups:[{values:e.sharedProps,reasonPrefix:"shared props",bucket:"generic"},{values:e.sharedEvents,reasonPrefix:"shared events",bucket:"generic"},{values:e.sharedDirectives,reasonPrefix:"shared directives",bucket:"generic"},{values:e.sharedSlots,reasonPrefix:"shared slots",bucket:"generic"}],nameGroups:[{names:e.sharedComponents,label:"shared component",fallbackBucket:"generic"},{names:e.sharedIdentifiers,label:"shared identifier",fallbackBucket:"generic"}],recommendation:m1})}function m1(e){switch(e){case"domain-behavior":case"mixed":return"Review for a shared component or feature-specific Vue primitive around the named domain structure.";case"shared-abstraction":return"Review the existing shared component usage first; extract only if duplicated structure remains outside it.";case"generic-workflow-scaffolding":return"Generic structural overlap \u2014 verify intent before consolidating."}}var f1=new Set(["actions","app","button","card","content","container","dialog","field","form","header","input","item","label","layout","list","modal","page","panel","row","section","shell","table","text","toolbar","ui","value","view","wrapper"]);function bo(e,t={}){let{minSimilarity:n=.45,minSharedBehaviors:r=6,limit:i=20,scope:o,scanLimit:s,filePattern:a,focusFiles:c}=t,l=ot(e).vueProfiles({scope:o,minBehaviorTokens:Math.max(3,r),scanLimit:s}).map(d=>({file:d.file,tokens:d.behaviorTokens,profile:d})),u=At(l,d=>d.tokens);return Mt({profiles:l,limit:i,filePattern:a,focusFiles:c,candidateIndex:u,profile:{name:"vue-composable-candidates"},compare:(d,m)=>p1(d,m,n,r),sort:(d,m)=>m.similarity-d.similarity||d.fileA.localeCompare(m.fileA)||d.fileB.localeCompare(m.fileB)})}function p1(e,t,n,r){let i=pt(e.tokens,t.tokens);if(i.size<r||!y1(i))return null;let o=Ba(e.tokens,t.tokens);if(o<n)return null;let s=q(i,"composable:"),a=q(i,"store:"),c=q(i,"reactivity:"),l=q(i,"lifecycle:"),u=q(i,"request:"),d=q(i,"function:"),m=q(i,"function-verb:"),f=q(i,"template-binding:"),p=q(i,"template-event:"),g=g1({sharedComposables:s,sharedStores:a,sharedReactivity:c,sharedLifecycle:l,sharedRequests:u,sharedFunctions:d,sharedFunctionVerbs:m,sharedBindings:f,sharedTemplateEvents:p});return{fileA:e.file,fileB:t.file,similarity:o,tokenCountA:e.tokens.size,tokenCountB:t.tokens.size,sharedTokens:Le(i),sharedComposables:s,sharedStores:a,sharedReactivity:c,sharedLifecycle:l,sharedRequests:u,sharedFunctions:d,sharedFunctionVerbs:m,sharedBindings:f,sharedTemplateEvents:p,evidenceClass:g.evidenceClass,actionTier:g.actionTier,evidenceClassReasons:g.reasons,recommendation:g.recommendation,uniqueToA:Le(ke(e.tokens,t.tokens)).slice(0,25),uniqueToB:Le(ke(t.tokens,e.tokens)).slice(0,25),reason:b1({sharedComposables:s,sharedStores:a,sharedRequests:u,sharedLifecycle:l,sharedFunctions:d,sharedFunctionVerbs:m,sharedBindings:f}),locA:e.profile.totalLines,locB:t.profile.totalLines}}function g1(e){return _n({genericWords:S1,primitiveGroups:[{values:e.sharedReactivity,reasonPrefix:"shared reactivity primitive",bucket:"generic"},{values:e.sharedLifecycle,reasonPrefix:"shared lifecycle primitive",bucket:"generic"}],nameGroups:[{names:e.sharedComposables,label:"shared composable",fallbackBucket:"shared-abstraction"},{names:e.sharedStores,label:"shared store",fallbackBucket:"shared-abstraction"},{names:e.sharedRequests,label:"shared request",fallbackBucket:"generic"},{names:e.sharedFunctions,label:"shared function",fallbackBucket:"generic"},{names:e.sharedFunctionVerbs,label:"shared action verb",fallbackBucket:"generic"},{names:e.sharedBindings,label:"shared binding",fallbackBucket:"generic"},{names:e.sharedTemplateEvents,label:"shared template event",fallbackBucket:"generic"}],recommendation:h1})}function h1(e){switch(e){case"domain-behavior":return"Review for a shared composable, store, or feature module around the named domain behavior.";case"mixed":return"Separate generic Vue mechanics from domain-specific behavior before extracting a composable.";case"shared-abstraction":return"Review the existing composable/store usage first; extract only if duplicated behavior remains outside it.";case"generic-workflow-scaffolding":return"Treat as support evidence for a repeated workflow shape, not direct composable-extraction evidence."}}function y1(e){let t=0,n=0,r=0,i=0,o=0,s=0,a=0;for(let u of e)u.startsWith("composable:")?t+=1:u.startsWith("store:")?n+=1:u.startsWith("request:")?r+=1:u.startsWith("lifecycle:")?i+=1:u.startsWith("function:")?o+=1:u.startsWith("reactivity:")?s+=1:(u.startsWith("function-verb:")||u.startsWith("template-binding:")||u.startsWith("template-event:"))&&(a+=1);let c=t+n,l=c+r+i+o+a;return Ln([{name:"requests",count:r},{name:"lifecycle",count:i},{name:"functions",count:o},{name:"reusableHooks",count:c},{name:"reactivity",count:s},{name:"namedBehavior",count:l}],[{min:{requests:1,namedBehavior:4},reason:"shared request workflow"},{min:{lifecycle:1,functions:2,namedBehavior:4},reason:"shared lifecycle workflow"},{min:{reusableHooks:2,requests:1,namedBehavior:5},reason:"shared reusable Vue hooks and requests"},{min:{reusableHooks:2,functions:2,namedBehavior:5},reason:"shared reusable Vue hooks and functions"},{min:{functions:2,reactivity:1,namedBehavior:4},reason:"shared reactive functions"}]).pass}function b1(e){let t=[];return e.sharedComposables.length&&t.push(`shared composables: ${e.sharedComposables.join(", ")}`),e.sharedStores.length&&t.push(`shared stores: ${e.sharedStores.join(", ")}`),e.sharedRequests.length&&t.push(`shared request helpers: ${e.sharedRequests.join(", ")}`),e.sharedLifecycle.length&&t.push(`shared lifecycle: ${e.sharedLifecycle.join(", ")}`),e.sharedFunctions.length&&t.push(`shared functions: ${e.sharedFunctions.slice(0,6).join(", ")}`),e.sharedFunctionVerbs.length&&t.push(`shared action verbs: ${e.sharedFunctionVerbs.slice(0,6).join(", ")}`),e.sharedBindings.length&&t.push(`shared template bindings: ${e.sharedBindings.slice(0,6).join(", ")}`),t.join("; ")||"shared Vue behavior profile"}var S1=new Set(["add","apply","cancel","change","clear","close","composable","create","data","delete","draft","edit","error","fetch","filter","form","item","items","load","loading","name","open","reactive","ref","refresh","remove","request","reset","resource","row","rows","save","saving","search","select","selected","store","submit","toggle","update","use","value","watch"]);function _d(e,t={}){let{minTotalLines:n=800,minTemplateLines:r=300,minScriptLines:i=300,minStyleLines:o=500,limit:s=20,scope:a,scanLimit:c,filePattern:l}=t;return ot(e).vueProfiles({scope:a,scanLimit:c}).filter(d=>!l||d.file.includes(l)).map(d=>C1(d,{minTotalLines:n,minTemplateLines:r,minScriptLines:i,minStyleLines:o})).filter(d=>d!==null).sort((d,m)=>m.totalLines-d.totalLines||d.file.localeCompare(m.file)).slice(0,s)}function C1(e,t){let n=$a(e,x1(t),"total"),{reasons:r}=n;if(r.length===0)return null;let i=n.dominantPressure,o=n.pressureKinds.includes("total")?[...new Set([...n.pressureKinds,i])]:n.pressureKinds,s=R1(e.file),a=v1(i,s),c=e.totalLines+e.delegatedComposableLines;return{file:e.file,totalLines:c,sfcLines:e.sfcLines,templateLines:e.templateLines,scriptLines:e.scriptLines,styleLines:e.styleLines,externalScriptLines:e.externalScriptLines,externalScriptPaths:e.externalScriptPaths,customBlockLines:e.customBlockLines,delegatedComposableLines:e.delegatedComposableLines,delegatedComposablePaths:e.delegatedComposablePaths,dominantPressure:i,pressureKinds:o,contextKind:s,recommendationKind:a,recommendation:I1(a,s),reasons:r,loc:c}}function x1(e){return[{axis:"total",value:t=>t.totalLines+t.delegatedComposableLines,qualifies:(t,n)=>n>=e.minTotalLines,reason:(t,n)=>t.delegatedComposableLines>0?`${n} total line(s) (${t.totalLines} component + ${t.delegatedComposableLines} delegated composable line(s) across ${t.delegatedComposablePaths.length} file(s))`:`${n} total component line(s)`,dominantEligible:!1},{axis:"template",value:t=>t.templateLines,qualifies:(t,n)=>n>=e.minTemplateLines,reason:(t,n)=>`${n} template line(s)`},{axis:"script",value:t=>t.scriptLines-t.externalScriptLines,qualifies:t=>t.scriptLines>=e.minScriptLines,reason:t=>`${t.scriptLines} script line(s)`},{axis:"style",value:t=>t.styleLines,qualifies:(t,n)=>n>=e.minStyleLines,reason:(t,n)=>`${n} style line(s)`},{axis:"external-script",value:t=>t.externalScriptLines,qualifies:(t,n)=>n>=e.minScriptLines},{axis:"custom-block",value:t=>t.customBlockLines,qualifies:()=>!1}]}function R1(e){return e.toLowerCase().split(/[^a-z0-9]+/).filter(Boolean).some(r=>w1.has(r))||/(?:view|page|route)\.vue$/i.test(e)||/(?:^|\/)(views|pages|routes)\//i.test(e)?"route-page":"component"}function v1(e,t){return e==="style"?"style-decomposition":e==="template"?"template-decomposition":e==="external-script"?"external-script-boundary":e==="custom-block"?"custom-block-review":t==="route-page"?"route-page-decomposition":e==="script"?"script-behavior-extraction":"total-size-review"}function I1(e,t){switch(e){case"template-decomposition":return t==="route-page"?"Split route template sections into named panels before extracting script behavior.":"Split repeated template sections into named presentational components.";case"script-behavior-extraction":return"Extract independent script behavior into composables, controllers, or feature modules.";case"style-decomposition":return"Review UI/style decomposition; move repeated styling to component or style primitives, not composables.";case"external-script-boundary":return"Review the external script boundary and split controller/composable modules by workflow.";case"custom-block-review":return"Review custom block ownership before splitting template or script code.";case"route-page-decomposition":return"Split route/page orchestration from reusable panels and feature controllers.";case"total-size-review":return"Review the largest block first, then split by the dominant reason to change."}}var w1=new Set(["landing","page","pages","route","routes","view","views"]);function E1(e,t={}){let{minSimilarity:n=.5,limit:r=15,scope:i,minChainLength:o=3,maxChainLength:s=8}=t,a=ie(e,i),c=N1(a,o,s);if(c.length===0)return[];let l=D1(c);return l.length<2?[]:L1(T1(l,n,r),r)}function D1(e){let t=P1(e),n=[];for(let r of e){let i=r.filter(o=>!t.has(o));i.length>=2&&n.push({original:r,filtered:i})}return n}function P1(e){let{nodeFreq:t,tailFreq:n}=k1(e),r=e.length*.9,i=e.length*.8,o=new Set;for(let[a,c]of t)c>r&&o.add(a);for(let[a,c]of n)c>i&&o.add(a);let s=["index.ts","index.js","cli.ts","main.ts","health.ts","health.js"];for(let a of t.keys()){let c=a.split("/").pop()??"";s.includes(c)&&o.add(a)}return o}function k1(e){let t=new Map,n=new Map;for(let r of e){let i=new Set;for(let o of r)i.has(o)||(t.set(o,(t.get(o)??0)+1),i.add(o));for(let o=Math.max(0,r.length-2);o<r.length;o++)n.set(r[o],(n.get(r[o])??0)+1)}return{nodeFreq:t,tailFreq:n}}function T1(e,t,n){let r=[];for(let i=0;i<e.length;i++){for(let o=i+1;o<e.length;o++){let s=F1(e[i],e[o],t);s&&r.push(s)}if(r.length>n*10)break}return r.sort((i,o)=>Math.abs(o.similarity-i.similarity)>.01?o.similarity-i.similarity:i.divergencePoints.length-o.divergencePoints.length),r}function F1(e,t,n){if(!_1(e.filtered,t.filtered))return null;let{distance:r,ops:i}=A1(e.filtered,t.filtered),o=Math.max(e.filtered.length,t.filtered.length);if(o===0)return null;let s=1-r/o;if(s<n||r===0)return null;let a=i.filter(l=>l.type==="substitute").map(l=>({index:l.indexA,nodeA:e.filtered[l.indexA],nodeB:t.filtered[l.indexB]}));return a.length===0||i.filter(l=>l.type==="match").length<2?null:{chainA:e.original,chainB:t.original,similarity:s,editDistance:r,divergencePoints:a,commonPrefix:M1(e.original,t.original),commonSuffix:O1(e.original,t.original)}}function _1(e,t){let n=new Set(e);return t.some(r=>n.has(r))}function L1(e,t){let n=[];for(let r of e)if(n.some(o=>GC(r.chainA,o.chainA)&&GC(r.chainB,o.chainB))||n.push(r),n.length>=t)break;return n}function N1(e,t,n){let r=[];for(let o of e.keys()){if(r.length>=500)break;zC(e,o,[o],new Set([o]),t,n,r,500)}return r}function zC(e,t,n,r,i,o,s,a){if(s.length>=a)return;if(n.length>=o){n.length>=i&&s.push([...n]);return}let c=e.get(t);if(!c||c.size===0){n.length>=i&&s.push([...n]);return}let l=!1;for(let u of c)if(!r.has(u)&&(r.add(u),n.push(u),zC(e,u,n,r,i,o,s,a),n.pop(),r.delete(u),l=!0,s.length>=a))return;!l&&n.length>=i&&s.push([...n])}function A1(e,t){let n=e.length,r=t.length,i=Array.from({length:n+1},()=>Array(r+1).fill(0));for(let c=0;c<=n;c++)i[c][0]=c;for(let c=0;c<=r;c++)i[0][c]=c;for(let c=1;c<=n;c++)for(let l=1;l<=r;l++)e[c-1]===t[l-1]?i[c][l]=i[c-1][l-1]:i[c][l]=1+Math.min(i[c-1][l],i[c][l-1],i[c-1][l-1]);let o=[],s=n,a=r;for(;s>0||a>0;)s>0&&a>0&&e[s-1]===t[a-1]?(o.unshift({type:"match",indexA:s-1,indexB:a-1}),s--,a--):s>0&&a>0&&i[s][a]===i[s-1][a-1]+1?(o.unshift({type:"substitute",indexA:s-1,indexB:a-1}),s--,a--):a>0&&i[s][a]===i[s][a-1]+1?(o.unshift({type:"insert",indexA:s,indexB:a-1}),a--):(o.unshift({type:"delete",indexA:s-1,indexB:a}),s--);return{distance:i[n][r],ops:o}}function M1(e,t){let n=[];for(let r=0;r<Math.min(e.length,t.length)&&e[r]===t[r];r++)n.push(e[r]);return n}function O1(e,t){let n=[],r=e.length-1,i=t.length-1;for(;r>=0&&i>=0&&e[r]===t[i];)n.unshift(e[r]),r--,i--;return n}function GC(e,t){if(e.length>t.length)return!1;let n=t.join("\u2192"),r=e.join("\u2192");return n.includes(r)}function gt(e){let t=j1(e.profile?.name),n=()=>{let r=e.candidates(),i=e.filterCandidate?r.filter(e.filterCandidate):r,o=e.orderCandidates?[...i].sort(e.orderCandidates):i,s=se(o,e.scanLimit);t={pipeline:e.profile?.name,loadedCandidates:r.length,filteredCandidates:i.length,scannedCandidates:s.length,evaluatedCandidates:0,matchedResults:0,emittedResults:0,scanLimitApplied:s.length<i.length,resultLimitApplied:!1};let a=e.prepare?.(s)??void 0,c=[];for(let u of s){t.evaluatedCandidates+=1;let d=e.evaluate(u,a);d&&c.push(d)}t.matchedResults=c.length,e.orderResults&&c.sort(e.orderResults);let l=typeof e.limit=="number"?c.slice(0,e.limit):c;return t.emittedResults=l.length,t.resultLimitApplied=l.length<c.length,e.onProfile?.({...t}),l};return e.profile?E(`candidate-pipeline:${e.profile.name}`,n,()=>({...B1(e.profile?.metadata),...t})):n()}function j1(e){return{pipeline:e,loadedCandidates:0,filteredCandidates:0,scannedCandidates:0,evaluatedCandidates:0,matchedResults:0,emittedResults:0,scanLimitApplied:!1,resultLimitApplied:!1}}function B1(e){return typeof e=="function"?e():e??{}}function So(e,t={}){let{scope:n,minLoc:r=10,minCallees:i=6,limit:o=20,scanLimit:s}=t,a=new F(e);return gt({candidates:()=>a.productionCallableDefinitions({scope:n,minLoc:r,excludeTypesFiles:!0,requireFunctionLikeSymbol:!0,sortByLocDesc:!0}),scanLimit:s,profile:{name:"extract-candidates"},prepare:c=>a.calleeMap(c,{semantic:t.semantic!==!1}),evaluate:(c,l)=>$1(c,l.get(c.symbolId)??[],i),orderResults:(c,l)=>l.clusters.length-c.clusters.length||l.loc-c.loc,limit:o})}function $1(e,t,n){let r=new Set(t.map(l=>l.symbol));if(r.size<n)return null;let i=z1(r,t),o=V1(r,i);if(o.length<2)return null;let s=q1(o,i);if(s.length===0)return null;let a=I(e.symbol),c=H1(a,r.size,o.length,s);return{symbol:e.symbol,shortName:a,relativePath:e.relativePath,startLine:e.startLine,endLine:e.endLine,loc:O(e),totalCallees:r.size,extractionKind:c.extractionKind,actionTier:"signal",evidenceReasons:c.evidenceReasons,recommendation:c.recommendation,clusters:s}}function H1(e,t,n,r){let i=Math.max(...r.map(c=>c.callees.length)),o=Math.max(...r.map(c=>c.isolation)),s=[`${t} distinct callees across ${n} co-occurrence cluster(s)`,`${r.length} extractable cluster(s) passed size and isolation thresholds`,`largest extractable cluster has ${i} callees at ${Math.round(o*100)}% isolation`],a=U1(e,t,n);return a!==null?{extractionKind:"workflow-orchestration",evidenceReasons:[...s,a],recommendation:"Review the isolated helper group as a possible private or feature-local helper, but keep the orchestration sequence together when it preserves the workflow."}:i>=6?{extractionKind:"broad-helper-cluster",evidenceReasons:[...s,"one isolated helper group is broad enough to deserve a named review"],recommendation:"Review whether the broad helper cluster has a stable concept name before extracting it; avoid creating a bag-of-helpers abstraction."}:{extractionKind:"cohesive-helper-cluster",evidenceReasons:s,recommendation:"Review the isolated callee group as a possible same-file or feature-local helper; extract only if the new name preserves the current behavior."}}function U1(e,t,n){if(t>=10)return`callee breadth suggests orchestration: ${t} callees`;if(n>=4)return`multiple disconnected callee groups suggest orchestration: ${n} groups`;let r=W1(e);return G1.has(r)?`caller verb suggests orchestration: ${r}`:null}function W1(e){return e.split(":").pop()?.replace(/\(\)$/,"").replace(/[^A-Za-z0-9_]/g,"").replace(/([a-z0-9])([A-Z])/g,"$1 $2").split(/[_\s-]+/).filter(Boolean)[0]?.toLowerCase()??""}var G1=new Set(["apply","build","check","collect","create","diff","execute","find","handle","load","prepare","process","render","resolve","run","select","sync","update","validate","verify","write"]);function z1(e,t){let n=new Map;for(let i of e)n.set(i,new Set);let r=new Map;for(let i of t){let o=r.get(i.chunkId);o||(o=new Set,r.set(i.chunkId,o)),o.add(i.symbol)}for(let i of r.values()){let o=[...i];for(let s=0;s<o.length;s++)for(let a=s+1;a<o.length;a++)n.get(o[s]).add(o[a]),n.get(o[a]).add(o[s])}return n}function V1(e,t){let n=new Set,r=[];for(let i of e){if(n.has(i))continue;let o=new Set,s=[i];for(;s.length>0;){let a=s.pop();if(!n.has(a)){n.add(a),o.add(a);for(let c of t.get(a)??[])n.has(c)||s.push(c)}}r.push(o)}return r}function q1(e,t){return e.filter(n=>n.size>=3).map(n=>K1(n,e,t)).filter(n=>n.isolation>.5).sort((n,r)=>r.isolation-n.isolation)}function K1(e,t,n){let r=new Set;for(let a of t)if(a!==e)for(let c of a)r.add(c);let i=0;for(let a of e)for(let c of n.get(a)??[])r.has(c)&&i++;let o=e.size*r.size,s=o>0?1-i/o:1;return{callees:[...e].map(I),isolation:s}}import{posix as Qr}from"path";import{spawnSync as J1}from"child_process";import{createHash as Y1}from"crypto";import{existsSync as X1}from"fs";import{dirname as VC,join as Q1}from"path";import{fileURLToPath as Z1}from"url";var JC=j("definition-consumer-file-usage",{clearGroups:["whole-project","source-file"]}),qC=oe({kind:"consumer-file-usage",invalidation:J("consumer-file-usage"),serialize:lH,deserialize:uH});function sn(e,t){return{forDefinitions(n,r){return eH(e,t,n,r)}}}function an(e){let t=new Map;for(let[n,r]of e)t.set(n,new Set(r.files.map(i=>i.file)));return t}function Ua(e,t,n){return XC(e,t,n).partition}function eH(e,t,n,r){let i=YC(n.length),o=U()?Te(e):null,s=o?tH(n,r,o):void 0,a=s?{workIdentity:s,workOutcome:"computed"}:{};return E("consumer-evidence.product",()=>{let c=E("consumer-evidence.provenance",()=>nH(e,t,n,r),()=>({...a,definitions:n.length,semantic:r.semantic,sourceFallback:r.sourceFallback!==!1})),l=new Map;i={...i,...c.counters};let u=rH(n,c.sources);return E("consumer-evidence.classify",()=>{let d=iH(e,n,c.sources,u);for(let m of n){let f=d.get(m.symbolId)??sH();i.realFiles+=f.partition.realConsumers.length,i.reexportOnlyFiles+=f.partition.barrelConsumers,i.importOnlyFiles+=f.partition.importOnlyConsumers,l.set(m.symbolId,{definition:m,files:f.files,...f.partition})}},()=>({...a,...u,realFiles:i.realFiles,reexportOnlyFiles:i.reexportOnlyFiles,importOnlyFiles:i.importOnlyFiles})),l},()=>({...a,...i}))}function tH(e,t,n){let r=Y1("sha256").update("consumer-evidence-v1\0").update(n).update("\0").update(t.semantic?"semantic\0":"indexed\0").update(t.sourceFallback===!1?"no-source-fallback":"source-fallback");for(let i of e.map(o=>o.symbol).sort())r.update("\0").update(i);return r.digest("hex").slice(0,24)}function YC(e){return{definitions:e,indexedFiles:0,semanticFiles:0,fallbackFiles:0,totalFiles:0,realFiles:0,reexportOnlyFiles:0,importOnlyFiles:0}}function nH(e,t,n,r){let i=YC(n.length),o=new Map;return Ld(o,i,"indexed",t.crossFileCallerMap(n,{semantic:!1})),r.semantic&&Ld(o,i,"semantic",En(e,n)),r.sourceFallback!==!1&&Ld(o,i,"source-fallback",t.sourceFallbackCallerFiles(n)),i.totalFiles=[...o.values()].reduce((s,a)=>s+a.size,0),{sources:o,counters:i}}function rH(e,t){return{definitions:e.length,consumerFiles:[...t.values()].reduce((n,r)=>n+r.size,0),nativeAttempted:!1,nativeUsed:!1,nativeReason:"not-attempted"}}function Ld(e,t,n,r){let i=0;for(let[o,s]of r){let a=e.get(o);a||(a=new Map,e.set(o,a));for(let c of s){i++;let l=a.get(c)??new Set;l.add(n),a.set(c,l)}}n==="indexed"?t.indexedFiles+=i:n==="semantic"?t.semanticFiles+=i:t.fallbackFiles+=i}function iH(e,t,n,r){let i=yH(e,t,n,r);return i||oH(e,t,n)}function oH(e,t,n){let r=new Map;for(let i of t){let o=n.get(i.symbolId)??new Map;r.set(i.symbolId,XC(e,i,[...o.keys()],o))}return r}function XC(e,t,n,r=new Map){let i=[],o=0,s=0,a=T(t.symbol),c=[];for(let l of n){let u;dH(e,l,t.relativePath,a)?(o++,u="reexport-only"):Nd(e,l,a)?(s++,u="import-only"):(i.push(l),u="real"),c.push({file:l,sources:[...r.get(l)??[]],classification:u})}return{partition:{realConsumers:i,barrelConsumers:o,importOnlyConsumers:s},files:c}}function sH(){return{partition:{realConsumers:[],barrelConsumers:0,importOnlyConsumers:0},files:[]}}function Nd(e,t,n){if(!n)return!1;let r=M(t);if(!r)return!1;let i=JC.get(e,t,()=>QC(e,t,r));return i.importedLeaves.has(n)&&!i.usedLeaves.has(n)}function QC(e,t,n){let r=ut(e).forFile(t,{text:!0,ast:!0}),i=r.text;if(!i)return cH();let o=ce(e,t,i),s=qC.read(e,t,o);if(s)return s;let a=aH(r.ast,n);return qC.write(e,t,o,a),a}function aH(e,t){let n=new Set,r=new Set;if(!e)return{importedLeaves:n,usedLeaves:r};let i=t==="rust"?new Set(["use_declaration"]):t==="python"?new Set(["import_statement","import_from_statement"]):new Set(["import_statement"]),o=(s,a)=>{let c=a||i.has(s.type);(s.type==="identifier"||s.type==="type_identifier"||s.type==="property_identifier"||s.type==="field_identifier")&&(c?n.add(s.text):r.add(s.text));for(let l of s.children)o(l,c)};return o(e.rootNode,!1),{importedLeaves:n,usedLeaves:r}}function cH(){return{importedLeaves:new Set,usedLeaves:new Set}}function lH(e){return JSON.stringify({importedLeaves:[...e.importedLeaves],usedLeaves:[...e.usedLeaves]})}function uH(e){try{let t=JSON.parse(e);return!Array.isArray(t.importedLeaves)||!Array.isArray(t.usedLeaves)?null:{importedLeaves:new Set(t.importedLeaves.filter(n=>typeof n=="string")),usedLeaves:new Set(t.usedLeaves.filter(n=>typeof n=="string"))}}catch{return null}}function dH(e,t,n,r){if(!r)return!1;let i=ut(e).forFile(t,{lines:!0,reexports:!0}),o=i.lines??[];if(o.length===0)return!1;let s=i.reexports??[];return ZC(o,s,r)}function ZC(e,t,n){if(e.length===0||t.length===0)return!1;let r=n.replace(/[.*+?^${}()|[\]\\]/g,"\\$&"),i=new RegExp(`\\b${r}\\b`),o=0;for(let s=0;s<e.length;s++){if(!i.test(e[s]??""))continue;if(o++,!t.find(c=>c.startLine<=s&&s<=c.endLine))return!1}return o>0}var mH="SCIP_QUERY_NATIVE_CONSUMER_CLASSIFY",fH="SCIP_QUERY_NATIVE_KERNELS_BIN",pH="SCIP_QUERY_NATIVE_CONSUMER_CLASSIFY_MIN_FILES",KC=1e3,gH=5e3,hH=64*1024*1024,Ha;function yH(e,t,n,r){let i=process.env[mH]?.toLowerCase();if(i!=="1"&&i!=="true")return r.nativeReason=i==="0"||i==="false"?"disabled":"opt-in-required",null;if(r.consumerFiles<IH())return r.nativeReason="below-threshold",null;let o=wH();if(!o)return r.nativeReason="binary-missing",null;r.nativeAttempted=!0;let s=bH(e,t,n),a=J1(o,["consumer-classify"],{input:JSON.stringify(s),encoding:"utf8",timeout:gH,maxBuffer:hH});if(a.status!==0||a.error)return r.nativeReason=a.error?`spawn-error:${a.error.message}`:`exit-${a.status??"null"}`,null;try{let c=JSON.parse(a.stdout),l=CH(c,t);return l?(r.nativeUsed=!0,r.nativeReason="used",l):(r.nativeReason="invalid-response",null)}catch{return r.nativeReason="invalid-json",null}}function bH(e,t,n){let r=new Map,i=[];for(let a of t){let c=T(a.symbol),u=[...(n.get(a.symbolId)??new Map).entries()].map(([d,m])=>{let f=r.get(d)??new Set;return c&&f.add(c),r.set(d,f),{file:d,sources:[...m]}});i.push({symbol_id:a.symbolId,leaf:c,consumer_files:u})}let o={},s={};for(let[a,c]of r){let l=M(a);if(l){let d=JC.get(e,a,()=>QC(e,a,l));o[a]={imported_leaves:[...d.importedLeaves],used_leaves:[...d.usedLeaves]}}let u=SH(e,a,c);u.length>0&&(s[a]=u)}return{definitions:i,file_usages:o,reexport_only_leaves:s}}function SH(e,t,n){if(n.size===0)return[];let r=ut(e).forFile(t,{lines:!0,reexports:!0}),i=r.lines??[],o=r.reexports??[];return i.length===0||o.length===0?[]:[...n].filter(s=>ZC(i,o,s))}function CH(e,t){if(!Array.isArray(e.entries)||e.entries.length!==t.length)return null;let n=new Set(t.map(i=>i.symbolId)),r=new Map;for(let i of e.entries){let o=xH(i);if(!o||!n.has(o.symbol_id))return null;r.set(o.symbol_id,{partition:{realConsumers:o.real_consumers,barrelConsumers:o.barrel_consumers,importOnlyConsumers:o.import_only_consumers},files:o.files})}for(let i of n)if(!r.has(i))return null;return r}function xH(e){if(!e||typeof e!="object")return null;let t=e;if(typeof t.symbol_id!="number"||!Array.isArray(t.real_consumers)||typeof t.barrel_consumers!="number"||typeof t.import_only_consumers!="number"||!Array.isArray(t.files)||!t.real_consumers.every(r=>typeof r=="string"))return null;let n=[];for(let r of t.files){if(!r||typeof r!="object")return null;let i=r;if(typeof i.file!="string"||!Array.isArray(i.sources)||!i.sources.every(RH)||!vH(i.classification))return null;n.push({file:i.file,sources:i.sources,classification:i.classification})}return{symbol_id:t.symbol_id,real_consumers:t.real_consumers,barrel_consumers:t.barrel_consumers,import_only_consumers:t.import_only_consumers,files:n}}function RH(e){return e==="indexed"||e==="semantic"||e==="source-fallback"}function vH(e){return e==="real"||e==="reexport-only"||e==="import-only"}function IH(){let e=process.env[pH];if(!e)return KC;let t=Number(e);return Number.isFinite(t)&&t>=0?t:KC}function wH(){if(Ha!==void 0)return Ha;let e=process.env[fH],t=process.platform==="win32"?"scip-query-kernels.exe":"scip-query-kernels";return Ha=[...e?[e]:[],...EH().map(r=>Q1(r,"target","release",t))].find(r=>X1(r))??null,Ha}function EH(){let e=new Set,t=VC(Z1(import.meta.url));for(let n=0;n<5;n++)e.add(t),t=VC(t);return[...e]}var DH=20,PH=1,kH=new Map([["app","app"],["apps","app"],["component","component"],["components","component"],["composable","composable"],["composables","composable"],["contract","contract"],["contracts","contract"],["domain","domain"],["domains","domain"],["feature","feature"],["features","feature"],["hook","hook"],["hooks","hook"],["lib","library"],["module","module"],["modules","module"],["package","package"],["packages","package"],["page","page"],["pages","page"],["route","route"],["routes","route"],["screen","screen"],["screens","screen"],["service","service"],["services","service"],["shared","shared"],["src","source-root"],["store","state"],["stores","state"],["test","test"],["tests","test"],["util","utility"],["utils","utility"],["view","view"],["views","view"]]),TH=new Set(["components","contracts","hooks","lib","services","shared","stores","utils"]),FH=new Set(["access","api","auth","config","db","effect","errors","hooks","lib","middleware","permissions","routes","schemas","servicetasks","services","startup","store","stores","test-utils","repository","repositories","tests","types","ui","utils","workflow","workflows"]);function _H(e,t={}){let n=Od(t.limit,DH),r=Od(t.minConsumers,PH),i=new F(e),o=i.fileDependencyGraph(t.scope),s=QH(N(e,{includeIgnored:!1})),a=tU(e.config.locality?.architecturalBoundarySegments,t.architecturalBoundarySegments);return(t.target?LH(e,i,t.target):NH(e,t.scope,t.scanLimit)).map(u=>AH(e,i,o,u,t,s,a)).filter(u=>u.consumerFiles.length>=r||t.target).sort(XH).slice(0,n)}function LH(e,t,n){let r=jH(e,n);if(r)return[ix(r)];let i=B(e,n);if(!i)return[];let o=t.definitionsForFile(i.relativePath).find(s=>s.symbolId===i.symbolId);return o?[BH(o)]:[{unit:{kind:"symbol",file:i.relativePath,shortName:I(i.symbol),symbol:i.symbol,startLine:i.startLine,endLine:i.endLine}}]}function NH(e,t,n){let r=N(e,{scope:t,includeIgnored:!1}),i=Od(n,r.length);return r.slice(0,i).map(o=>ix(o))}function AH(e,t,n,r,i,o,s){let a=r.definition?MH(e,t,r.definition,i.semantic):OH(n,r.unit.file),c=r.definition?a.length>0?"exact":"none":a.length>0?"file-level":"none",l=r.unit.file,u=vt(Qr.dirname(l)),d=HH(a),m=$H(u),f=Bd([...ex(u),...d?ex(d):[]]),p=UH(r.unit,u,d,a),g=WH(p,r.unit,u,d,a,o,s),y=KH(r.unit,c,d,a,u,g.whyNoSuggestedHome),h=JH(r.unit,u,d,a,g.suggestedHome,g.whyNoSuggestedHome);return{actionTier:"signal",sourceUnit:r.unit,candidatePath:l,currentDirectory:u,directoryAncestry:m,consumerFiles:a,consumerCoverage:c,nearestCommonOwner:d,boundaryMarkers:f,recommendedTier:p,suggestedHome:g.suggestedHome,destinationConfidence:g.confidence,whyNoSuggestedHome:g.whyNoSuggestedHome,counterevidence:y,reasons:h,recommendation:YH(p,g.suggestedHome,c)}}function MH(e,t,n,r){let i=an(sn(e,t).forDefinitions([n],{semantic:r!==!1,sourceFallback:!0}));return lx(i.get(n.symbolId)??[])}function OH(e,t){let n=[];for(let[r,i]of e.entries())r!==t&&i.has(t)&&n.push(r);return lx(n)}function jH(e,t){let n=yn(t),r=N(e,{includeIgnored:!1}),i=r.find(s=>s===n);if(i)return i;let o=r.find(s=>s.endsWith(`/${n}`));return o||(r.find(s=>s.includes(n))??null)}function BH(e){return{definition:e,unit:{kind:"symbol",file:e.relativePath,shortName:I(e.symbol),symbol:e.symbol,startLine:e.startLine,endLine:e.endLine}}}function ix(e){return{unit:{kind:"file",file:e,shortName:Qr.basename(e)}}}function $H(e){if(e===".")return[{path:".",depth:0,markers:[]}];let t=[],n=e.split("/").filter(Boolean);for(let r=0;r<n.length;r+=1){let i=n.slice(0,r+1).join("/");t.push({path:i,depth:r,markers:jd(i)})}return t}function ex(e){return e==="."?[]:ox(e).map(({marker:t,prefix:n})=>`${t}: ${n}`)}function jd(e){return Bd(ox(e).map(({marker:t})=>t))}function ox(e){let t=e.split("/").filter(Boolean),n=[];for(let r=0;r<t.length;r+=1){let i=kH.get(t[r]);i&&n.push({marker:i,prefix:t.slice(0,r+1).join("/")})}return n}function HH(e){if(e.length===0)return null;let t=e.map(r=>vt(Qr.dirname(r))),n=t[0].split("/").filter(Boolean);for(let r of t.slice(1)){let i=r.split("/").filter(Boolean),o=[],s=Math.min(n.length,i.length);for(let a=0;a<s&&n[a]===i[a];a+=1)o.push(n[a]);n=o}return n.length===0?".":n.join("/")}function UH(e,t,n,r){return n?e.kind==="symbol"&&r.length===1?r[0]===e.file?"same-file":"sibling-folder":n==="."||n==="src"?"repository-level-review":nx(n,"package")?"package-level-shared":nx(n,"app")?"app-level-shared":rx(n,["feature","domain","module"])||rx(t,["feature","domain","module"])?"feature-local-shared":"sibling-folder":"no-exact-consumers"}function WH(e,t,n,r,i,o,s){let a=GH(e,r);if(a)return Nn(a);let c=ZH(t.file),l=zH(e,n,c,i,s);if(l)return l;let u=r;if(vt(n)===vt(u))return Nn(`${n} is already the nearest common owner for its consumers.`);let d=VH(u,n,c,s);return d||qH(u,n,c,o,s)}function GH(e,t){return t?e==="no-exact-consumers"||e==="repository-level-review"?"The inferred owner is too broad or unsupported for an exact destination.":null:"No consumer owner could be inferred from the current index."}function zH(e,t,n,r,i){if(e==="same-file"){let o=r[0]??null;return o?Ad(o):Nn("No same-file consumer path was available.")}if(e==="sibling-folder"&&r.length===1){let o=vt(Qr.dirname(r[0])),s=cx(t,n,o,i);return s?Nn(s):Ad(o)}return null}function VH(e,t,n,r){return rU(e)?sx(e,t,n,r,`Nearest shared owner ${e} is outside source root ${n}.`):null}function qH(e,t,n,r,i){if(e===".")return Nn("The nearest common owner is the repository root.");let o=`${e}/shared`,s=sx(o,t,n,i,`Proposed home ${o} is outside source root ${n}.`);return s.confidence==="withheld"||r.has(o)?s:Nn(`${o} does not exist in the indexed project.`)}function sx(e,t,n,r,i){if(!ax(e,n))return Nn(i);let o=cx(t,n,e,r);return o?Nn(o):Ad(e)}function Ad(e){return{suggestedHome:e,confidence:"exact",whyNoSuggestedHome:null}}function Nn(e){return{suggestedHome:null,confidence:"withheld",whyNoSuggestedHome:e}}function KH(e,t,n,r,i,o){let s=["Report-only signal; review ownership before moving files."];return t==="none"&&s.push("No consumers were found in the current index."),t==="file-level"&&s.push("File-level import evidence can hide which exported unit is actually used."),(n==="."||n==="src")&&s.push("Nearest common owner is broad, so this is not enough evidence for automatic placement."),r.length===1&&s.push("Only one consumer was found; inlining or same-folder placement may be better than shared extraction."),e.kind==="file"&&s.push("File targets describe module locality, not symbol-level usage."),n&&i.startsWith(`${n}/`)&&s.push("Candidate already lives under the nearest common owner."),o&&s.push(`No exact suggested home: ${o}`),s}function JH(e,t,n,r,i,o){let s=[];return s.push(`${e.shortName} currently lives in ${t}.`),n?s.push(`${r.length} consumer file(s) share ${n} as their nearest common owner.`):s.push("No consumer owner could be inferred from the current index."),i?s.push(`Suggested home is ${i}.`):o&&s.push(`No exact suggested home: ${o}`),s}function YH(e,t,n){return e==="no-exact-consumers"?"Review references before moving; no consumers were found.":e==="repository-level-review"?"Keep this as a broad locality signal; the inferred owner is too general for automatic relocation.":t?`Review whether ${n==="exact"?"symbol usage":"module import"} supports moving or extracting toward ${t}.`:"Review ownership manually before changing structure."}function XH(e,t){return tx(t)-tx(e)||e.candidatePath.localeCompare(t.candidatePath)}function tx(e){let t=e.consumerFiles.length*10;return e.consumerCoverage==="exact"&&(t+=5),e.suggestedHome&&(t+=3),e.recommendedTier==="repository-level-review"&&(t*=.1),e.recommendedTier==="no-exact-consumers"&&(t*=.05),t}function QH(e){let t=new Set(["."]);for(let n of e){let r=vt(Qr.dirname(n));for(;!t.has(r)&&(t.add(r),r!==".");)r=vt(Qr.dirname(r))}return t}function ZH(e){let t=Md(e),n=t.indexOf("src");return n>=0?t.slice(0,n+1).join("/"):t.length<=1?".":t[0]}function ax(e,t){let n=vt(e),r=vt(t);return r==="."||n===r||n.startsWith(`${r}/`)}function eU(e,t,n){let r=Md(e),i=Md(t);return(ax(e,t)?r.slice(i.length):r).some(s=>n.has(s.toLowerCase()))}function cx(e,t,n,r){return vt(e)===vt(n)||!eU(e,t,r)?null:`${e} is a named architectural boundary; an exact move to ${n} needs human design.`}function tU(...e){let t=new Set(FH);for(let n of e)for(let r of n??[]){let i=nU(r);i&&t.add(i)}return t}function nU(e){let t=e.trim().toLowerCase();return t===""?null:t}function nx(e,t){return jd(e).includes(t)}function rx(e,t){let n=jd(e);return t.some(r=>n.includes(r))}function rU(e){let t=e.split("/").filter(Boolean),n=t[t.length-1];return n?TH.has(n):!1}function vt(e){let t=yn(e);return t===""?".":t}function Md(e){let t=yn(e);return t==="."?[]:t.split("/").filter(Boolean)}function Od(e,t){return!Number.isFinite(e)||e===void 0||e<1?t:Math.floor(e)}function lx(e){return Bd([...e]).sort((t,n)=>t.localeCompare(n))}function Bd(e){return[...new Set(e)]}function $d(e,t,n={}){let{maxDepth:r=5,scope:i}=n,o=B(e,t);if(!o)return[];let s=[],a=new Set([o.symbolId]),c=new Set,l=[o];for(let u=1;u<=r&&l.length!==0;u++){let d=[],m=dd(e,l,{limit:500,semanticEvidence:H});for(let f of l)for(let p of iU(e,f,i,m.get(f.symbolId)??[])){let g=`${p.file}|${p.shortName}`;if(p.symbolId!==null){if(a.has(p.symbolId))continue;a.add(p.symbolId)}else if(c.has(g))continue;c.add(g),s.push({symbol:p.symbol,shortName:p.shortName,file:p.file,depth:u}),p.symbolId!==null&&p.symbolMatch&&d.push(p.symbolMatch)}l=d}return s.sort((u,d)=>u.depth-d.depth||u.file.localeCompare(d.file)),s}function iU(e,t,n,r){let i=r.filter(u=>!e.isIgnored(u.file)).filter(u=>!n||u.file.includes(n)),o=new Set(i.map(u=>u.file)),s=[];for(let u of oU(e,t,n)){if(o.has(u))continue;let d=Y(e,u),m=d.length>0?Dt(d,d[0].startLine):null;s.push({symbol:m?.symbol??u,file:u})}let a=[...i,...s],c=[],l=new Set;for(let u of a){let d=Ei(e,u.symbol);if(!d){let f=`${u.file}|${u.symbol}`;if(l.has(f))continue;l.add(f),c.push({symbolId:null,symbol:u.symbol,shortName:I(u.symbol),file:u.file,symbolMatch:null});continue}if(d.symbolId===t.symbolId||e.isIgnored(d.relativePath)||!sU(d))continue;let m=`${d.symbolId}|${d.relativePath}`;l.has(m)||(l.add(m),c.push({symbolId:d.symbolId,symbol:d.symbol,shortName:I(d.symbol),file:d.relativePath,symbolMatch:d}))}return c}function oU(e,t,n){let r=n?"AND consumer_d.relative_path LIKE ?":"",i=[t.symbolId,t.documentId];return n&&i.push(`%${n}%`),new Set(e.all(`SELECT DISTINCT consumer_d.relative_path
719
+ FROM mentions m
720
+ JOIN chunks c ON m.chunk_id = c.id
721
+ JOIN documents consumer_d ON consumer_d.id = c.document_id
722
+ WHERE m.symbol_id = ?
723
+ AND m.role != 1
724
+ AND c.document_id != ?
725
+ ${e.pathExclusionsFor("consumer_d")}
726
+ ${r}`,...i).map(o=>o.relative_path).filter(o=>!e.isIgnored(o)))}function sU(e){if(e.symbol.startsWith("scip-clojure ")||M(e.relativePath)==="clojure")return!0;let t=ue(e.symbol);return t==="method"||t==="type"||e.symbol.endsWith("().")}function Hd(e,t,n={}){let r=Oe(e,t);if(!r)return null;let i=aU(e,r);if(!i||e.isIgnored(i.relative_path))return null;let o=[],s=0,a=cU(e,i.relative_path),c=n.semantic===!1?new Map:En(e,a);for(let l of a){let u=lU(e,i,l,c.get(l.symbolId)??new Set);s+=u,o.push({symbol:l.symbol,shortName:I(l.symbol),startLine:l.startLine,endLine:l.endLine,externalConsumers:u,riskLevel:uU(u)})}return{file:i.relative_path,symbols:o,totalExternalConsumers:s}}function aU(e,t){return e.get(`SELECT id, relative_path FROM documents
727
+ WHERE relative_path = ?
728
+ ${e.pathExclusionsFor("documents")}
729
+ LIMIT 1`,t)??null}function cU(e,t){return new F(e).definitionsForFile(t).sort((n,r)=>n.startLine-r.startLine||n.endLine-r.endLine)}function lU(e,t,n,r){let i=e.all(`SELECT DISTINCT consumer_d.relative_path
730
+ FROM mentions m
731
+ JOIN chunks c ON m.chunk_id = c.id
732
+ JOIN documents consumer_d ON consumer_d.id = c.document_id
733
+ WHERE m.symbol_id = ?
734
+ AND m.role != 1
735
+ AND c.document_id != ?`,n.symbolId,t.id);return new Set([...i.map(o=>o.relative_path),...[...r].filter(o=>o!==t.relative_path)]).size}function uU(e){return e>10?"high":e>0?"medium":"low"}function dU(e,t={}){let{scope:n,minLoc:r=1,maxDepth:i=5,scanLimit:o}=t,s=new F(e),a=mU(e,n,r,o),c=new Ud;for(let g of a)c.add(g);let l=[],u=[];a.length>0&&l.push(ux(e,0,a,c));let d=a.map(g=>g.definition).filter(g=>g!==null),m=new Set(a.map(g=>g.symbol));for(let g=1;g<=i&&d.length>0;g++){let y=s.calleeMap(d,{semantic:!1}),h=new Set;for(let b of d)for(let C of y.get(b.symbolId)??[])m.has(C.symbol)||h.add(C.symbol);let x=[];for(let b of h){m.add(b);let C=dx(e,b);if(!C||e.isIgnored(C.relativePath)||De(e,C.relativePath)||de(e,C.symbol,C.relativePath)||s.fileKind(C.relativePath)==="test"||s.hasSuppressionComment(C))continue;let S=pU(e,C,c);S.removable?x.push(fU(C,"cascade")):S.blockingFiles.length>0&&u.push({shortName:I(C.symbol),file:C.relativePath,blockingFiles:S.blockingFiles.slice(0,3)})}if(x.length===0)break;for(let b of x)c.add(b);l.push(ux(e,g,x,c)),d=x.map(b=>b.definition).filter(b=>b!==null)}let f=l.reduce((g,y)=>g+y.loc,0),p=l.reduce((g,y)=>g+y.entries.length,0);return{batches:l,totalSymbols:p,totalLoc:f,blocked:u}}function mU(e,t,n,r){let i=lr(e,{scope:t,minLoc:n,skipBarrels:!0,deadCodeOnly:!0,scanLimit:r,semantic:!1}),o=[];for(let s of i.symbols)s.kind==="dead-code"&&(De(e,s.relativePath)||de(e,s.symbol,s.relativePath)||o.push({symbol:s.symbol,shortName:s.shortName,file:s.relativePath,startLine:s.startLine,endLine:s.endLine,loc:s.loc,evidence:"graph-fact",definition:dx(e,s.symbol)}));return o}function fU(e,t){return{symbol:e.symbol,shortName:I(e.symbol),file:e.relativePath,startLine:e.startLine,endLine:e.endLine,loc:e.endLine-e.startLine+1,evidence:t,definition:e}}function dx(e,t){let n=e.get(`SELECT d.relative_path
736
+ FROM global_symbols gs
737
+ JOIN defn_enclosing_ranges der ON der.symbol_id = gs.id
738
+ JOIN documents d ON d.id = der.document_id
739
+ WHERE gs.symbol = ?
740
+ LIMIT 1`,t);return n?Y(e,n.relative_path).find(r=>r.symbol===t)??null:null}function pU(e,t,n){let r=ki(e,t);if(r.length===0)return{removable:!1,blockingFiles:[]};let i=new Set;for(let o of r)o.file===t.relativePath&&o.line>=t.startLine&&o.line<=t.endLine||n.contains(o.file,o.line)||i.add(o.file);return{removable:i.size===0,blockingFiles:[...i]}}function ux(e,t,n,r){let i=[...n].sort((a,c)=>a.file.localeCompare(c.file)||a.startLine-c.startLine),o=new Set(i.map(a=>a.file)),s=[];for(let a of o){let c=Y(e,a);c.length>0&&c.every(l=>r.contains(a,l.startLine))&&s.push(a)}return{depth:t,entries:i.map(({definition:a,...c})=>c),loc:i.reduce((a,c)=>a+c.loc,0),filesEmptied:s.sort()}}var Ud=class{ranges=new Map;add(t){let n=this.ranges.get(t.file)??[];n.push({start:t.startLine,end:t.endLine}),this.ranges.set(t.file,n)}contains(t,n){let r=this.ranges.get(t);return r?r.some(i=>n>=i.start&&n<=i.end):!1}};import{createHash as JV}from"crypto";import{existsSync as ac}from"fs";import{execFileSync as gU}from"child_process";var hx=2e3,Wa=50,hU=64,yU=8,bU=3,SU=2160*60*60,CU=/\b(?:fix(?:es|ed)?|bug|regression|hotfix)\b/i,xU=3,RU=/#\d+|\b[A-Z][A-Z0-9]+-\d+\b/g,vU=/^([a-z][a-z0-9-]+)(?:\([^)]+\))?!?:/i;function IU(e){let t=X(e,{clearGroups:["whole-project"]});return(n,r,i)=>{let o=i??Wd(n.config.projectRoot);if(!o)return null;let s=t.has(n)?t.get(n,()=>({head:"",value:null})):null;return s&&s.head===o?s.value:(t.invalidate(n),t.get(n,()=>({head:o,value:r(n.config.projectRoot,o)})).value)}}function Ga(e){let t=X(e,{clearGroups:["whole-project"]});return(n,r,i,o)=>{let s=o??Wd(n.config.projectRoot);if(!s)return null;let a=t.has(n)?t.get(n,()=>({head:"",values:new Map})):null;(!a||a.head!==s)&&t.invalidate(n);let c=t.get(n,()=>({head:s,values:new Map}));if(c.values.has(r))return c.values.get(r)??null;let l=i(n.config.projectRoot,s);return c.values.set(r,l),l}}var wU=Ga("git-commit-history");function ze(e,t={}){let n=t.historyMode??"bounded",r=t.head;return{capability:i=>EU(e,i,r),commitHistory:()=>Co(e,n,r),fileChurn:()=>kU(e,n,r),changeAmplification:()=>TU(e,n,r),trackedFiles:()=>_U(e,r),fileAddRecords:()=>NU(e,n,r),coChangePairs:(i={})=>HU(e,i,n,r),coChangePairsForFiles:(i,o={})=>bx(e,i,o,n,r),directionalCoChangePairsForFiles:(i,o={})=>UU(e,i,o,n,r)}}function Co(e,t="bounded",n){return wU(e,Zr(t),(r,i)=>DU(r,i,t),n)}function EU(e,t,n){let r=n??Wd(e.config.projectRoot);return r?{slot:t,available:!0,head:r}:{slot:t,available:!1,head:null,reason:"git history is unavailable for this project"}}function Wd(e){try{return Ot(e,["rev-parse","HEAD"]).trim()||null}catch{return null}}function Ot(e,t){return gU("git",["-C",e,...t],{encoding:"utf-8",maxBuffer:64*1024*1024,stdio:["ignore","pipe","ignore"]})}function DU(e,t,n){let r;try{r=Ot(e,["log","--no-merges","--name-only",...za(n),"--pretty=format:%x01%H%x00%ct%x00%s"])}catch{return null}return{head:t,...qd(r,Wa)}}function PU(e){return CU.test(e.subject)}function kU(e,t,n){let r=Co(e,t,n);if(!r)return null;let i=new Map;for(let o of r.commits){let s=PU(o);for(let a of o.files){let c=i.get(a)??{changes:0,fixChanges:0,lastChangedAt:0};c.changes+=1,s&&(c.fixChanges+=1),o.timestamp>c.lastChangedAt&&(c.lastChangedAt=o.timestamp),i.set(a,c)}}return i}function TU(e,t,n){let r=Co(e,t,n);if(!r||r.commits.length===0)return null;let i=r.commits.map(o=>o.files.length).filter(o=>o>0).sort((o,s)=>o-s);return i.length===0?null:{medianFilesPerCommit:mx(i,.5),p90FilesPerCommit:mx(i,.9),commitsAnalyzed:i.length}}function mx(e,t){let n=Math.min(e.length-1,Math.floor(e.length*t));return e[n]}var FU=IU("git-tracked-files");function _U(e,t){return FU(e,n=>{try{let r=Ot(n,["ls-files"]);return new Set(r.split(`
741
+ `).map(i=>i.trim()).filter(i=>i!==""))}catch{return null}},t)}var LU=Ga("git-file-adds"),fx="__git__/file-adds",px=oe({kind:"git-file-adds",invalidation:J("git-file-adds"),serialize:MU,deserialize:OU});function Gd(e){return ze(e).fileAddRecords()}function NU(e,t,n){let r=Zr(t);return LU(e,r,(i,o)=>AU(e,i,o,t),n)}function AU(e,t,n,r){let i=px.read(e,gx(r),n);if(i)return i;let o=jU(t,r);return o&&px.write(e,gx(r),n,o),o}function MU(e){return JSON.stringify([...e.entries()])}function OU(e){if(!e)return null;try{let t=JSON.parse(e);if(!Array.isArray(t))return null;let n=new Map;for(let r of t){if(!Array.isArray(r)||r.length!==2||typeof r[0]!="string")return null;let i=r[1];if(!i||typeof i.commitsAgo!="number"||!Number.isFinite(i.commitsAgo)||typeof i.addedAt!="number"||!Number.isFinite(i.addedAt))return null;n.set(r[0],{commitsAgo:i.commitsAgo,addedAt:i.addedAt})}return n}catch{return null}}function jU(e,t){let n;try{n=Ot(e,["log","--no-merges","--find-renames","--name-status",...za(t),"--pretty=format:%x01%H%x00%ct%x00%s"])}catch{return null}let r=new Map,i=new Map,o=-1;for(let s of n.split("")){if(s.trim()==="")continue;o+=1;let a=s.indexOf(`
742
+ `),c=a>=0?s.slice(0,a):s,[,l]=c.split("\0"),u=Number(l)||0;if(!(a<0))for(let d of s.slice(a+1).split(`
743
+ `)){let m=BU(d);if(!m)continue;if(m.status==="R"&&m.from&&m.to){let p=i.get(m.to)??new Set([m.to]);i.set(m.from,p);continue}if(m.status!=="A"||!m.to)continue;let f={commitsAgo:o,addedAt:u};r.set(m.to,f);for(let p of i.get(m.to)??[])r.set(p,f)}}return r}function BU(e){let t=e.trim().split(" "),n=t[0]??"";if(!n)return null;let r=n[0]??"";if(r==="R"){let o=t[1],s=t[2];return o&&s?{status:r,from:o,to:s}:null}let i=t[1];return i?{status:r,to:i}:null}var yx=Ga("git-co-change-pairs"),$U=Ga("git-directional-co-change-pairs");function HU(e,t,n,r){let i=`all\0${Zr(n)}\0${zd(t)}`,o=yx(e,i,()=>{let s=Co(e,n,r);return s?Vd(s,t):null},r);return o&&[...o]}function bx(e,t,n,r,i){if(t.size===0)return[];let o=`files\0${Zr(r)}\0${Sx(t)}\0${zd(n)}`,s=yx(e,o,()=>{let a=Co(e,r,i);return a?Vd(a,n,t):null},i);return s&&[...s]}function UU(e,t,n,r,i){if(t.size===0)return[];let o=n.maxFilesPerCommit??Wa;if(t.size>hU)return bx(e,t,n,r,i);let s=`directional\0${Zr(r)}\0${Sx(t)}\0${zd({...n,maxFilesPerCommit:o})}`,a=$U(e,s,(c,l)=>{let u=WU(c,l,t,o,r);return u?Vd(u,n,t):null},i);return a&&[...a]}function zd(e){let t=e.minTogether??4,n=e.minConfidence??.6,r=e.maxFilesPerCommit??Wa;return`${t}\0${n}\0${r}`}function Sx(e){return[...e].sort().join("\0")}function Vd(e,t,n){let{minTogether:r=4,minConfidence:i=.6,maxFilesPerCommit:o=Wa}=t,s=new Map,a=new Map,c=e.newestAnalyzedAt??0;for(let d of e.commits){let m=[...new Set(d.files)].sort();if(m.length>o)continue;e.newestAnalyzedAt===void 0&&d.timestamp>c&&(c=d.timestamp);let f=VU(m),p=n===void 0||m.some(g=>n.has(g));for(let g of m)s.set(g,(s.get(g)??0)+1);if(p)for(let g=0;g<m.length;g++)for(let y=g+1;y<m.length;y++){if(n&&!n.has(m[g])&&!n.has(m[y]))continue;let h=`${m[g]}\0${m[y]}`,x=a.get(h)??{together:0,focusedTogether:0,broadTogether:0,lastTogetherAt:0,timestamps:[],subjects:[]};x.together+=1,f?x.broadTogether+=1:x.focusedTogether+=1,d.timestamp>x.lastTogetherAt&&(x.lastTogetherAt=d.timestamp),x.timestamps.push(d.timestamp),x.subjects.push(d.subject),a.set(h,x)}}let l=[],u=c-SU;for(let[d,m]of a){let f=m.together;if(f<r)continue;let[p,g]=d.split("\0"),y=s.get(p)??f,h=s.get(g)??f,x=Math.max(f/y,f/h);if(x<i)continue;let b=m.broadTogether/f,C=m.timestamps.filter(S=>S>=u).length;l.push({fileA:p,fileB:g,together:f,confidence:x,changesA:y,changesB:h,focusedTogether:m.focusedTogether,broadTogether:m.broadTogether,broadCommitRatio:b,lastTogetherAt:m.lastTogetherAt,recentTogether:C,commitScope:KU(m.broadTogether,f),recency:C>0?"recent":"stale",subjectContext:JU(m.subjects)})}return l.sort((d,m)=>m.together-d.together||m.confidence-d.confidence||d.fileA.localeCompare(m.fileA)),l}function WU(e,t,n,r,i){let o;try{o=GU(e,i)}catch{return null}if(o.length===0)return{head:t,commits:[],skippedBulkCommits:0,newestAnalyzedAt:0};let s;try{s=Ot(e,["log","--no-merges","--format=%H",...za(i),"--",...[...n].sort()])}catch{return null}let a=new Set(o.map(m=>m.hash)),c=s.split(`
744
+ `).map(m=>m.trim()).filter(m=>m!==""&&a.has(m)),l=zU(e,o,r);if(c.length===0)return{head:t,commits:[],skippedBulkCommits:0,newestAnalyzedAt:l};let u;try{u=Ot(e,["show","--no-walk=unsorted","--name-only","--pretty=format:%x01%H%x00%ct%x00%s",...c])}catch{return null}let d=qd(u,r);return{head:t,...d,newestAnalyzedAt:l}}function GU(e,t){return Ot(e,["log","--no-merges","--format=%H%x00%ct",...za(t)]).split(`
745
+ `).map(r=>r.trim()).filter(r=>r!=="").map(r=>{let[i,o]=r.split("\0");return{hash:i??"",timestamp:Number(o)||0}}).filter(r=>r.hash!=="")}function za(e){return e==="full"?[]:["-n",String(Cx())]}function Cx(){return vn(process.env.SCIP_QUERY_GIT_HISTORY_MAX_COMMITS)??hx}function Zr(e){return e==="full"?"full":`bounded:${Cx()}`}function gx(e){let t=Zr(e);return t===`bounded:${hx}`?fx:`${fx}:${t}`}function zU(e,t,n){for(let i=0;i<t.length;i+=20){let o=t.slice(i,i+20),s;try{s=Ot(e,["show","--no-walk=unsorted","--name-only","--pretty=format:%x01%H%x00%ct%x00%s",...o.map(c=>c.hash)])}catch{return t[0]?.timestamp??0}let a=qd(s,n);if(a.commits.length>0)return a.commits[0].timestamp}return 0}function qd(e,t){let n=[],r=0;for(let i of e.split("")){if(i.trim()==="")continue;let o=i.indexOf(`
746
+ `),s=o>=0?i.slice(0,o):i,[a,c,l]=s.split("\0");if(!a||!c)continue;let u=o>=0?i.slice(o+1).split(`
747
+ `).map(d=>d.trim()).filter(d=>d!==""):[];if(u.length>t){r+=1;continue}n.push({hash:a,timestamp:Number(c)||0,subject:l??"",files:u})}return{commits:n,skippedBulkCommits:r}}function VU(e){return e.length>=yU?!0:qU(e).size>=bU}function qU(e){let t=new Set;for(let n of e){let r=n.indexOf("/");t.add(r>=0?n.slice(0,r):".")}return t}function KU(e,t){return e===0?"focused":e/t>=.5?"broad-sweep":"mixed"}function JU(e){let t=new Set,n=[],r=[];for(let i of e){!r.includes(i)&&r.length<xU&&r.push(i);for(let o of YU(i))t.add(o);for(let o of i.match(RU)??[])n.includes(o)||n.push(o)}return{subjectLabels:[...t].sort(),issueRefs:n,sampleSubjects:r,externalIssueLabelStatus:"unavailable"}}function YU(e){let t=new Set,n=vU.exec(e)?.[1]?.toLowerCase();return n&&t.add(XU(n)),/\b(?:feat|feature)\b/i.test(e)&&t.add("feature"),/\b(?:fix(?:es|ed)?|bug|regression|hotfix)\b/i.test(e)&&t.add("fix"),/\b(?:docs?|documentation|guide|readme)\b/i.test(e)&&t.add("docs"),/\brefactor(?:ing|ed)?\b/i.test(e)&&t.add("refactor"),/\btests?\b/i.test(e)&&t.add("test"),/\b(?:release|version|v\d+\.\d+)\b/i.test(e)&&t.add("release"),/\bchore\b/i.test(e)&&t.add("chore"),/\bbuild\b/i.test(e)&&t.add("build"),/\bci\b/i.test(e)&&t.add("ci"),/\bperf(?:ormance)?\b/i.test(e)&&t.add("perf"),[...t]}function XU(e){return e==="feat"?"feature":e}import{existsSync as QU}from"fs";import{join as ZU}from"path";function Jd(e){return Kd.test(e)}var Kd=/(?:^|\/)(?:package-lock\.json|pnpm-lock\.yaml|yarn\.lock|Cargo\.lock|uv\.lock|poetry\.lock|Pipfile\.lock|bun\.lockb?|\.SRCINFO|CHANGELOG(?:\.[a-z]+)?|.*\.(?:map|tsbuildinfo))$|(?:^|\/)(?:dist|build|out|node_modules|docs\/plans)\//i;function xo(e,t,n={}){let{minTogether:r=4,minConfidence:i=.6,limit:o=30,maxFilesPerCommit:s=20}=n,a=ze(e,{historyMode:n.historyMode,...n.head?{head:n.head}:{}}),c=a.commitHistory(),l=t!==void 0,u=a.coChangePairs({minTogether:l?Math.min(r,2):r,minConfidence:l?0:i,maxFilesPerCommit:s});if(!c||!u)return{available:!1,commitsAnalyzed:0,findings:[]};let d=typeof n.scanLimit=="number"?u.slice(0,n.scanLimit):u,m=ie(e),f=wx(e),p=Qd(e,m,f),g=n.includeLinked===!0||l,y=[];for(let h of d){if(Kd.test(h.fileA)||Kd.test(h.fileB)||!xx(e,h.fileA)||!xx(e,h.fileB)||l&&!h.fileA.includes(t)&&!h.fileB.includes(t)||!l&&(G(h.fileA)==="test"||G(h.fileB)==="test"||rW(h.fileA,h.fileB)||tW(h.fileA,h.fileB)))continue;let x=p(h.fileA,h.fileB);if(!g&&x)continue;let b=Yd(h.fileA,h.fileB),C=Xd(h,b,x);if(y.push({...h,structurallyLinked:x,partnerClass:b.partnerClass,partnerClassReasons:b.reasons,...C?{declaredCouplingSuggestion:C}:{}}),y.length>=o)break}return{available:!0,commitsAnalyzed:c.commits.length,findings:y}}function xx(e,t){return QU(ZU(e.config.projectRoot,t))}function Yd(e,t){let n=vx(e),r=vx(t),i=[],o=c=>{i.includes(c)||i.push(c)},s=(c,l)=>n.tags.has(c)&&r.tags.has(l)||n.tags.has(l)&&r.tags.has(c);if(s("doc","code"))return o("one side is documentation and the other is executable source"),{partnerClass:"doc-code",reasons:i};if(n.tags.has("test")||r.tags.has("test"))return o("one side is classified as a test file"),{partnerClass:"test-code",reasons:i};if(s("schema","script"))return o("schema or contract file changes with a script or generated-code path"),{partnerClass:"schema-script",reasons:i};if(s("model","view"))return o("model or state path changes with a view or component path"),{partnerClass:"model-view",reasons:i};if(s("config","code"))return o("configuration file changes with executable source"),{partnerClass:"config-code",reasons:i};let a=pW(n.tokens,r.tokens).filter(c=>!mW.has(c));return Ix(e,t)||a.length>=2?(o(Ix(e,t)?"both files live in the same directory":`files share feature tokens: ${a.slice(0,4).join(", ")}`),{partnerClass:"same-feature",reasons:i}):(o("no specific relationship pattern matched"),{partnerClass:"unknown",reasons:i})}function Xd(e,t,n){if(n||e.together<4||e.confidence<.75||e.commitScope==="broad-sweep"||e.recency==="stale"||!dW.has(t.partnerClass))return;let r=[e.fileA,e.fileB].sort();return{name:`co-change ${t.partnerClass}: ${gW(r)}`,files:r,reason:`${t.partnerClass} pair changed together ${e.together}x with ${Math.round(e.confidence*100)}% confidence; declare it if future edits should require both sides.`}}function Qd(e,t=ie(e),n=wx(e)){return(r,i)=>iW(t,n,r,i)}var eW=/(?:^|\/)(?:locales|i18n)\//i;function Rx(e){return eW.test(e)}function tW(e,t){return Rx(e)&&Rx(t)?!0:nW(e,t)}function nW(e,t){if(!e.endsWith(".json")||!t.endsWith(".json"))return!1;let n=e.lastIndexOf("/"),r=t.lastIndexOf("/");if(n<0||r<0)return!1;let i=e.slice(0,n),o=t.slice(0,r);if(i===o)return!1;let s=e.slice(n+1),a=t.slice(r+1);if(s!==a)return!1;let c=i.lastIndexOf("/"),l=o.lastIndexOf("/"),u=c>=0?i.slice(0,c):"",d=l>=0?o.slice(0,l):"";return u===d}function rW(e,t){let n=e.lastIndexOf("/"),r=t.lastIndexOf("/");if(e.slice(0,n)!==t.slice(0,r))return!1;let i=e.slice(n+1).split(".")[0],o=t.slice(r+1).split(".")[0];return i!==""&&i===o}function wx(e){return(e.config.declaredCouplings??[]).filter(t=>Array.isArray(t.files)&&t.files.length>=2).map(t=>new Set(t.files))}function iW(e,t,n,r){return e.get(n)?.has(r)===!0||e.get(r)?.has(n)===!0?!0:t.some(i=>i.has(n)&&i.has(r))}var oW=/(?:^|\/)(?:readme|docs?|guides?|adr|architecture|design)(?:\/|$)|\.(?:md|mdx|rst|adoc|txt)$/i,sW=/(?:^|\/)(?:\.[a-z0-9-]+rc|config|configs|settings|\.github)(?:\/|$)|(?:^|\/)(?:package\.json|tsconfig(?:\.[^.]+)?\.json|vite\.config\.[cm]?[jt]s|rollup\.config\.[cm]?[jt]s|eslint\.config\.[cm]?[jt]s)$|\.(?:json|ya?ml|toml|ini|env)$/i,aW=/(?:^|\/)(?:schemas?|contracts?|migrations?|models?|types?)(?:\/|$)|(?:^|\/)[^/]*(?:schema|contract|migration|model|types?)[^/]*|(?:\.schema)?\.(?:graphql|gql|proto|prisma)$/i,cW=/(?:^|\/)(?:scripts?|bin|tools?|tasks?|generators?|codegen|migrations?|seeds?)(?:\/|$)|(?:^|\/)[^/]*(?:generate|codegen|migrate|seed|script)[^/]*\.[cm]?[jt]s$/i,lW=/(?:^|\/)(?:models?|entities|domain|state|stores?|reducers?)(?:\/|$)|(?:^|\/)[^/]*(?:model|entity|state|store|reducer|viewmodel)[^/]*\.[^.]+$/i,uW=/(?:^|\/)(?:views?|pages?|components?|screens?|routes?|templates?)(?:\/|$)|(?:^|\/)[^/]*(?:view|page|component|screen|template)[^/]*\.[^.]+$|\.(?:vue|svelte|tsx|jsx)$/i,dW=new Set(["doc-code","config-code","schema-script","model-view","test-code"]),mW=new Set(["src","lib","app","apps","packages","frontend","backend","examples","python","typescript","javascript","test","tests","spec","index","main","utils","util","types","type","config","docs","doc","package","requirements","ts","tsx","js","jsx","mjs","cjs","vue","py","md","mdx","json","yaml","yml","toml","txt"]);function vx(e){let t=e.replace(/\\/g,"/"),n=new Set;return oW.test(t)&&n.add("doc"),sW.test(t)&&n.add("config"),aW.test(t)&&n.add("schema"),cW.test(t)&&n.add("script"),lW.test(t)&&n.add("model"),uW.test(t)&&n.add("view"),G(t)==="test"&&n.add("test"),!n.has("doc")&&!n.has("config")&&n.add("code"),{tags:n,tokens:fW(t)}}function Ix(e,t){let n=e.lastIndexOf("/"),r=t.lastIndexOf("/"),i=n>=0?e.slice(0,n):"",o=r>=0?t.slice(0,r):"";return i!==""&&i===o}function fW(e){return e.replace(/([a-z0-9])([A-Z])/g,"$1 $2").split(/[^A-Za-z0-9]+/).map(t=>t.toLowerCase()).filter(t=>t.length>=2)}function pW(e,t){let n=new Set(t);return[...new Set(e.filter(r=>n.has(r)))].sort()}function gW(e){return e.map(t=>t.split("/").pop()?.replace(/\.[^.]+$/,"")||t).join(" + ")}import{execFileSync as dr}from"child_process";import{existsSync as hW,readFileSync as yW}from"fs";import{basename as Ex}from"path";function Va(e){let t=new Map;for(let n of e){let r=t.get(n.file);r||(r=[],t.set(n.file,r)),r.push(n)}return t}var Ro="Unable to compute git diff.";function ei(e,t={}){let n=t.plan??An(e,t);return n.note?bW(n.note,n.changedFileLines):n.changedFiles.length===0?SW(n.changedFileLines):qa(n.changedFiles,[Tx(e,n.changedFiles,n.changedFiles,n.changedRanges)])}function An(e,t={}){let{base:n="HEAD"}=t;try{let r=CW(e.config.projectRoot,n),i=r.changedFileLines,o=EW(e,i),s=DW(e,r.changedRanges);return{changedFileLines:i,changedFiles:o,changedRanges:s,renamedFiles:vW(e.config.projectRoot,n,o,r),note:i.length===0?"No changed files found.":void 0}}catch{return{changedFileLines:[],changedFiles:[],changedRanges:[],renamedFiles:[],note:Ro}}}function Tx(e,t,n,r=[]){let i=new F(e),o=new Set(n),s=Va(r),a=[],c=new Map,l=t.flatMap(C=>i.definitionsForFile(C)).filter(HW),u=l.filter(C=>kW(C,s)),d=FW(e,l,u,s),m=NW([...u,...d.definitions]).sort((C,S)=>C.relativePath.localeCompare(S.relativePath)||C.startLine-S.startLine),f=m.map(C=>C.symbolId),p=jW(e,f),g=BW(e,f,n),y=m.filter(C=>(p.get(C.symbolId)??0)===0),h=kx(()=>En(e,y)),x=y.filter(C=>(h.get(C.symbolId)?.size??0)===0),b=kx(()=>co(e,x));for(let C of m)OW(e,C,o,a,c,h.get(C.symbolId)??new Set,b.get(C.symbolId)??new Set,p.get(C.symbolId)??0,g.get(C.symbolId)??new Set);return{changedSymbols:a,consumerEntries:[...c.entries()].map(([C,S])=>({file:C,symbols:[...S].sort()})),attributionNotes:d.notes}}function qa(e,t){let n=new Map,r=t.flatMap(s=>s.changedSymbols),i=t.flatMap(s=>s.attributionNotes??[]);for(let s of t)for(let a of s.consumerEntries){let c=n.get(a.file);c||(c=new Set,n.set(a.file,c));for(let l of a.symbols)c.add(l)}let o=$W(n);return{changedFiles:[...e],changedSymbols:r,affectedConsumers:o,attributionNotes:i,summary:{totalChangedFiles:e.length,totalChangedSymbols:r.length,totalAffectedFiles:o.length}}}function bW(e,t=[]){return{changedFiles:t,changedSymbols:[],affectedConsumers:[],attributionNotes:[],summary:{totalChangedFiles:t.length,totalChangedSymbols:0,totalAffectedFiles:0,note:e}}}function SW(e){return{changedFiles:e,changedSymbols:[],affectedConsumers:[],attributionNotes:[],summary:{totalChangedFiles:e.length,totalChangedSymbols:0,totalAffectedFiles:0,note:"Changed files are not present in the current SCIP index."}}}function CW(e,t){let n=dr("git",["diff","--name-status","--find-renames",t],{encoding:"utf-8",cwd:e,timeout:3e4,maxBuffer:67108864}),r=dr("git",["diff","--name-status","--find-renames","--cached",t],{encoding:"utf-8",cwd:e,timeout:3e4,maxBuffer:64*1024*1024}),i=dr("git",["ls-files","--others","--exclude-standard"],{encoding:"utf-8",cwd:e,timeout:3e4,maxBuffer:64*1024*1024}),o=dr("git",["diff","--unified=0",t],{encoding:"utf-8",cwd:e,timeout:3e4,maxBuffer:64*1024*1024}),s=dr("git",["diff","--unified=0","--cached",t],{encoding:"utf-8",cwd:e,timeout:3e4,maxBuffer:64*1024*1024}),a=IW([n,r]);return{changedFileLines:[...new Set([...a.changedFiles,...Fx(i)])],changedRanges:Lx([...Px(o),...Px(s)]),renamedFiles:a.renamedFiles,deletedFiles:a.deletedFiles}}function tm(e,t,n){try{return dr("git",["show",`${t}:./${n}`],{encoding:"utf-8",cwd:e,timeout:1e4,stdio:["ignore","pipe","ignore"]})}catch{return null}}function vo(e,t,n=[]){let r=xW(e,t,n);return i=>(r.has(i)||r.set(i,tm(e,t,i)),r.get(i)??null)}function Io(e,t=e.changedFiles){let n=new Map(e.renamedFiles.map(r=>[r.to,r.from]));return[...new Set(t.map(r=>n.get(r)??r))]}function xW(e,t,n){let r=[...new Set(n)],i=new Map;if(r.length===0)return i;try{let o=r.map(a=>`${t}:./${a}
748
+ `).join(""),s=dr("git",["cat-file","--batch"],{cwd:e,input:o,maxBuffer:256*1024*1024,timeout:1e4,stdio:["pipe","pipe","ignore"]});return RW(s,r)}catch{for(let o of r)i.set(o,tm(e,t,o));return i}}function RW(e,t){let n=new Map,r=0;for(let i of t){let o=e.indexOf(10,r);if(o<0)throw new Error("git cat-file batch output ended before object header");let s=e.subarray(r,o).toString("utf-8");if(r=o+1,s.endsWith(" missing")){n.set(i,null);continue}let a=/^[0-9a-f]+ ([^ ]+) (\d+)$/.exec(s);if(!a)throw new Error(`unexpected git cat-file batch header: ${s}`);let[,c,l]=a,u=Number(l);if(!Number.isFinite(u)||u<0)throw new Error(`unexpected git cat-file batch size: ${s}`);if(r+u>e.length)throw new Error("git cat-file batch output ended before blob payload");let d=e.subarray(r,r+u);n.set(i,c==="blob"?d.toString("utf-8"):null),r+=u,e[r]===10&&(r+=1)}return n}function vW(e,t,n,r){if(n.length===0)return[];let i=new Map,o=new Set;for(let a of r.renamedFiles)n.includes(a.to)&&(i.set(a.to,a),o.add(a.from));let s=r.deletedFiles;if(s.length===0)return[...i.values()].sort((a,c)=>a.to.localeCompare(c.to));for(let a of n){if(i.has(a)||!hW(`${e}/${a}`))continue;let c=s.filter(d=>!o.has(d)).filter(d=>Ex(d)===Ex(a));if(c.length===0)continue;let l=yW(`${e}/${a}`,"utf-8"),u=c.map(d=>({from:d,to:a,similarity:wW(tm(e,t,d)??"",l)})).sort((d,m)=>m.similarity-d.similarity)[0];u&&u.similarity>=.45&&(i.set(a,u),o.add(u.from))}return[...i.values()].sort((a,c)=>a.to.localeCompare(c.to))}function IW(e){let t=new Set,n=new Map,r=new Set;for(let i of e.flatMap(o=>Fx(o))){let[o,s,a]=i.split(" ");if(!(!o||!s)){if(o.startsWith("R")&&a){t.add(a),n.set(a,{from:s,to:a,similarity:Number(o.slice(1))/100});continue}t.add(s),o.startsWith("D")&&r.add(s)}}return{changedFiles:[...t],renamedFiles:[...n.values()],deletedFiles:[...r]}}function wW(e,t){let n=new Set(Dx(e)),r=new Set(Dx(t));if(n.size===0&&r.size===0)return 1;if(n.size===0||r.size===0)return 0;let i=0;for(let o of n)r.has(o)&&(i+=1);return 2*i/(n.size+r.size)}function Dx(e){return e.match(/[A-Za-z_$][\w$]*|[{}()[\].,]/g)??[]}function Fx(e){return e.split(`
749
+ `).map(t=>t.trim()).filter(t=>t.length>0)}function EW(e,t){let n=_x(e),r=[];for(let i of t){let o=n(i);o&&!e.isIgnored(o)&&r.push(o)}return r}function DW(e,t){let n=_x(e),r=[];for(let i of t){let o=n(i.file);o&&!e.isIgnored(o)&&r.push({...i,file:o})}return Lx(r)}function _x(e){let t=e.all(`SELECT relative_path FROM documents
750
+ ORDER BY id`).map(r=>r.relative_path),n=new Map(t.map(r=>[r,r]));return r=>{let i=r.replace(/\\/g,"/"),o=n.get(i);return o||(t.find(s=>s.endsWith(i))??null)}}function Px(e){let t=[],n=null;for(let r of e.split(`
751
+ `)){if(r.startsWith("+++ ")){n=PW(r.slice(4).trim());continue}if(!n||!r.startsWith("@@ "))continue;let i=/@@ -\d+(?:,\d+)? \+(\d+)(?:,(\d+))? @@/.exec(r);if(!i)continue;let o=Math.max(0,Number(i[1])-1),s=i[2]===void 0?1:Number(i[2]);t.push({file:n,startLine:o,endLine:Math.max(o,o+Math.max(s,1)-1)})}return t}function PW(e){return e==="/dev/null"?null:e.startsWith("a/")||e.startsWith("b/")?e.slice(2):e}function Lx(e){let t=new Set,n=[];for(let r of e){let i=`${r.file}:${r.startLine}:${r.endLine}`;t.has(i)||(t.add(i),n.push(r))}return n}function kW(e,t){let n=t.get(e.relativePath);return!n||n.length===0?!0:n.some(r=>nm(e.startLine,e.endLine,r.startLine,r.endLine))}function TW(e,t,n){let r=new Map,i=[],o=Nx(e),s=AW(n);for(let a of t){let c=o.get(a.file)??[];if(c.some(d=>nm(d.startLine,d.endLine,a.startLine,a.endLine)))continue;let l=s.get(a.file)??[],u=MW(l,a);if(u){let d=c.find(m=>m.startLine>=u.startLine&&m.startLine<=u.endLine);if(d){r.set(d.symbolId,d),i.push(Zd(a,"ast-widened"));continue}}if(l.length===0){let d=[...c].filter(m=>m.startLine<=a.startLine).sort((m,f)=>f.startLine-m.startLine||m.endLine-f.endLine)[0];if(d){r.set(d.symbolId,d),i.push(Zd(a,"nearest-preceding"));continue}}i.push(Zd(a,"unattributed"))}return{definitions:[...r.values()],notes:i}}function FW(e,t,n,r){let i=Nx(n),o=[],s=[],a=[...new Set(t.map(c=>c.relativePath))];for(let c of a){let l=r.get(c)??[];if(l.length===0)continue;let u=i.get(c)??[];for(let d of l)u.some(m=>nm(m.startLine,m.endLine,d.startLine,d.endLine))||o.push(d);o.some(d=>d.file===c)&&s.push(..._W(e,c))}return TW(t,o,s)}function _W(e,t){let n=K(e,t);return n?n.rootNode.namedChildren.filter(LW).map(r=>({file:t,startLine:r.startPosition.row,endLine:r.endPosition.row})).filter(r=>r.endLine>=r.startLine):[]}function LW(e){return e.endPosition.row<e.startPosition.row?!1:!new Set(["import_statement","comment"]).has(e.type)}function NW(e){let t=new Map;for(let n of e)t.set(n.symbolId,n);return[...t.values()]}function Nx(e){let t=new Map;for(let n of e){let r=t.get(n.relativePath)??[];r.push(n),t.set(n.relativePath,r)}return t}function AW(e){let t=new Map;for(let n of e){let r=t.get(n.file)??[];r.push(n),t.set(n.file,r)}return t}function MW(e,t){return e.filter(n=>n.startLine<=t.startLine&&n.endLine>=t.endLine).sort((n,r)=>n.endLine-n.startLine-(r.endLine-r.startLine))[0]}function Zd(e,t){return{file:e.file,startLine:e.startLine,endLine:e.endLine,method:t}}function nm(e,t,n,r){return e<=r&&n<=t}function OW(e,t,n,r,i,o,s,a,c){let l=Math.max(a,o.size,s.size);if(!UW(t,l))return;let u=I(t.symbol);r.push({symbol:t.symbol,shortName:u,file:t.relativePath,startLine:t.startLine,endLine:t.endLine,fanIn:l});for(let d of c)em(e,n,i,d,u);for(let d of o)em(e,n,i,d,u);for(let d of s)em(e,n,i,d,u)}function kx(e){try{return e()}catch(t){return console.error(`warning: diff-impact enrichment scan failed, continuing without it: ${t instanceof Error?t.message:t}`),new Map}}function jW(e,t){if(t.length===0)return new Map;let n=e.all(`SELECT m.symbol_id, COUNT(DISTINCT c.document_id) AS fan_in
752
+ FROM mentions m
753
+ JOIN chunks c ON m.chunk_id = c.id
754
+ WHERE m.symbol_id IN (${t.map(()=>"?").join(",")})
755
+ AND m.role != 1
756
+ GROUP BY m.symbol_id`,...t);return new Map(n.map(r=>[r.symbol_id,r.fan_in]))}function BW(e,t,n){if(t.length===0||n.length===0)return new Map;let r=e.all(`SELECT DISTINCT m.symbol_id, ref_d.relative_path
757
+ FROM mentions m
758
+ JOIN chunks c ON m.chunk_id = c.id
759
+ JOIN documents ref_d ON c.document_id = ref_d.id
760
+ WHERE m.symbol_id IN (${t.map(()=>"?").join(",")})
761
+ AND m.role != 1
762
+ AND ref_d.relative_path NOT IN (${n.map(()=>"?").join(",")})
763
+ ${e.pathExclusionsFor("ref_d")}`,...t,...n),i=new Map;for(let o of r){let s=i.get(o.symbol_id);s||(s=new Set,i.set(o.symbol_id,s)),s.add(o.relative_path)}return i}function em(e,t,n,r,i){if(e.isIgnored(r)||t.has(r))return;let o=n.get(r);o||(o=new Set,n.set(r,o)),o.add(i)}function $W(e){return[...e.entries()].map(([t,n])=>({file:t,consumedSymbols:n.size})).sort((t,n)=>n.consumedSymbols-t.consumedSymbols)}function HW(e){return!(gn(e.symbol)||e.parentTypeName!==null&&!le(e.symbol))}function UW(e,t){return le(e.symbol)||e.isTypeLike?!0:e.parentTypeName===null&&t>0}function rm(e){let[t,n]=ti(e,":"),r=t||"unknown",i=(o={})=>{let s=o.actionTier??WW(r);return{sourceAnalyzer:r,actionTier:s,rootCauseKey:o.rootCauseKey??(n||e),label:o.label??`${r} finding`,relatedFiles:o.relatedFiles??[],why:o.why??[],remediation:o.remediation??GW(s,r),file:o.file}};if(!n)return i({rootCauseKey:e,why:["Baseline identity did not include analyzer payload."]});if(["dead","isolated","extract","wrapper","passthrough","stale"].includes(r)){let[o,s]=ti(n,":");return i({file:o,relatedFiles:o?[o]:[],rootCauseKey:s?`${o}:${s}`:n,label:`${r} finding`,why:s?[`Baseline subject: ${s}.`]:[]})}if(r==="cycle"){let o=n.split(">").filter(Boolean);return i({relatedFiles:o,rootCauseKey:n,label:"cycle finding",why:o.length>0?[`Cycle path: ${o.join(" > ")}.`]:[]})}if(r==="similar"){let o=n.split("|").filter(Boolean);return i({relatedFiles:[],rootCauseKey:n,label:"similarity finding",why:o.length>0?[`Similar symbols: ${o.join(" | ")}.`]:[]})}if(r==="architecture"){let[o,s]=ti(n,":");if(o==="forbidden-edge"){let[a,c]=ti(s,":"),l=Ka(a),u=Ka(c);return i({actionTier:"direct",rootCauseKey:n,label:"architecture boundary violation",why:[`Declared boundary rule rejects ${l} -> ${u}.`],remediation:`Move the dependency behind an allowed boundary, or deliberately update the ${l} dependency rule and baseline.`})}if(o==="cycle"){let a=s.split("|").filter(Boolean).map(Ka);return i({actionTier:"direct",rootCauseKey:n,label:"forbidden architecture cycle",why:[`requireAcyclic rejects the connected boundary group: ${a.join(", ")}.`],remediation:"Break the boundary cycle, or deliberately revise the acyclicity rule and baseline."})}if(o==="missing-policy-row"){let a=Ka(s);return i({actionTier:"direct",rootCauseKey:n,label:"incomplete architecture policy",why:[`requireCompletePolicy rejects the missing outgoing dependency row for ${a}.`],remediation:`Declare the allowed outgoing dependencies for ${a}, including an empty row when it must depend on nothing.`})}}if(r==="drift"){let[o,s]=ti(n,":"),[a,c]=ti(s,":");return i({actionTier:o==="unused-import"?"direct":"signal",file:a,relatedFiles:[...new Set([a,c].filter(Boolean))],rootCauseKey:n,label:`${o||"drift"} finding`,why:[...o?[`Drift kind: ${o}.`]:[],...c?[`Related dependency: ${c}.`]:[]]})}return i({why:["Baseline analyzer prefix is not recognized by this diff-gate version."]})}function WW(e){switch(e){case"dead":case"isolated":case"cycle":case"passthrough":case"architecture":return"direct";case"similar":case"extract":case"wrapper":case"stale":return"signal";default:return"signal"}}function GW(e,t){return e==="direct"?`Fix the new ${t} baseline finding, or knowingly accept it via health --write-baseline.`:`Review the new ${t} baseline signal; fix it if it reflects real debt, or knowingly accept it via health --write-baseline.`}function ti(e,t){let n=e.indexOf(t);return n<0?[e,""]:[e.slice(0,n),e.slice(n+t.length)]}function Ka(e){try{return decodeURIComponent(e)}catch{return e}}import{existsSync as YW,readFileSync as Ox}from"fs";function Xa(e,t){let n=zW(e,t)??VW(e,t)??qW(e,t)??KW(e,t);return JW(e,n,t)}function zW(e,t){let n=-1,r=null;for(let i=0;i<=t;i+=1){let o=im(e[i]??"");o&&(r===null?(r=o,n=i):o===r&&(r=null,n=-1))}if(r===null||n<0)return null;for(let i=t+1;i<e.length;i+=1)if(im(e[i]??"")===r)return{start:n,end:i+1};return{start:n,end:e.length}}function im(e){let t=e.match(/^\s*(```+|~~~+)/);return t?t[1].startsWith("`")?"`":"~":null}function VW(e,t){if(!Ja(e[t]??""))return null;let n=t;for(;n>0&&Ja(e[n-1]??"");)n-=1;let r=t+1;for(;r<e.length&&Ja(e[r]??"");)r+=1;return{start:n,end:r}}function Ja(e){let t=e.trim();return t.startsWith("|")&&t.endsWith("|")&&t.includes("|")}function qW(e,t){let n=t;for(;n>=0;){let o=e[n]??"";if(Ya(o)!==null)break;if(om(o)!==null)return null;n-=1}if(n<0)return null;let r=Ya(e[n]??"");if(r===null)return null;let i=n+1;for(;i<e.length;){let o=e[i]??"",s=Ya(o);if(s!==null){if(s<=r)break;i+=1;continue}if(om(o)!==null)break;i+=1}return{start:n,end:i}}function Ya(e){let t=e.match(/^(\s*)(?:[-*+]\s+|\d+[.)]\s+)/);return t?t[1].length:null}function KW(e,t){let n=e[t]??"";if(Mx(n)||n.trim().length===0)return{start:t,end:t+1};let r=t;for(;r>0&&Ax(e[r-1]??"");)r-=1;let i=t+1;for(;i<e.length&&Ax(e[i]??"");)i+=1;return{start:r,end:i}}function Ax(e){return om(e)===null}function om(e){return e.trim().length===0?"blank":Mx(e)?"heading":im(e)?"fence":Ja(e)?"table":Ya(e)!==null?"list":null}function Mx(e){return/^#{1,6}\s+/.test(e.trim())}function JW(e,t,n){let{start:r,end:i}=t;if(i-r>40){let s=Math.floor(20);r=Math.max(r,n-s),i=Math.min(i,r+40),r=Math.max(t.start,i-40)}let o=e.slice(r,i).join(`
764
+ `).trim();return o.length<=2e3?o:`${o.slice(0,2e3).trimEnd()}...`}function mr(e,t){return t.filter(n=>e.includes(n))}var XW=/<!--\s*scip-query:\s*snapshot\s*-->/i;function Qa(e,t){if((e.config.docs?.snapshotPaths??[]).some(i=>Tn(i,t)))return!0;let r=k(e,t);return r.length>0&&XW.test(r)}var cn={classifyCitation:ZW,citationContexts:eG,citationKindLabel:nG,citationRemediation:rG,referenceTargets:iG,hasLineAnchoredCitation:QW};function QW(e){return e.some(t=>(t.lineReferences?.length??0)>0)}function ZW(e){let t=e.join(`
765
+ `).toLowerCase(),n=[],r=mr(t,[".scipquery","declaredcouplings","suppression","suppressions","config","configuration","json"]);if(r.length>0)return n.push(`configuration/example terms near citation: ${r.join(", ")}`),{citationKind:"configuration-example",actionTier:"support",reasons:n};let i=mr(t,["accepted","intentional","intentionally","retained","historical"]);if(i.length>0)return n.push(`intentional-record terms near citation: ${i.join(", ")}`),{citationKind:"intentional-record",actionTier:"support",reasons:n};let o=mr(t,["command","cli","usage","example","run","workflow"]);return o.length>0?(n.push(`guide/reference terms near citation: ${o.join(", ")}`),{citationKind:"guide-reference",actionTier:"signal",reasons:n}):(n.push(e.length>0?"citation appears in prose without config or guide markers":"citation context unavailable"),{citationKind:"behavioral-claim",actionTier:"direct",reasons:n})}function eG(e,t,n){let r;try{r=Ox(`${e.config.projectRoot}/${t}`,"utf-8").split(/\r?\n/)}catch{return[]}let i=n.flatMap(tG),o=[];for(let s=0;s<r.length;s+=1){let a=r[s]??"";i.some(c=>a.includes(c))&&o.push(Xa(r,s))}return o}function tG(e){let t=e.split("/");return[e,`./${e}`,t.slice(-3).join("/"),t.slice(-2).join("/")].filter((n,r,i)=>n.length>0&&i.indexOf(n)===r)}function nG(e){switch(e){case"behavioral-claim":return"a behavioral doc claim";case"configuration-example":return"a configuration example";case"guide-reference":return"a guide reference";case"intentional-record":return"an intentional record"}}function rG(e,t){switch(e){case"behavioral-claim":return`Re-read ${t} and update the behavioral claim or citation.`;case"configuration-example":return`Verify the configuration example in ${t} still points at the intended file; update only if the example target changed.`;case"guide-reference":return`Verify the guide reference in ${t} still sends readers to the right implementation or command surface.`;case"intentional-record":return`Verify the intentional citation in ${t} is still meant to name this file.`}}function iG(e,t,n){let r=Va(n),i=new Set;for(let o of t)oG(e,o,r.get(o)??[])&&i.add(o);return i}function oG(e,t,n){if(!sG.test(t))return!0;let r=`${e.config.projectRoot}/${t}`;if(!YW(r))return!0;if(n.length===0)return!1;let i=Ox(r,"utf-8").split(/\r?\n/),o=aG(i);for(let s of n)for(let a=s.startLine;a<=s.endLine;a+=1)if((i[a]??"").trim()!==""&&!o.has(a))return!0;return!1}var sG=/\.(?:[cm]?[jt]sx?)$/i;function aG(e){let t=new Set,n=!1;for(let r=0;r<e.length;r+=1){let i=e[r].trim();!n&&cG(i)&&(n=!0),n&&(t.add(r),i.endsWith(";")&&(n=!1))}return t}function cG(e){return/^import(?:\s|$)/.test(e)||/^export(?:\s+type)?\s+(?:\*|\{)/.test(e)}import{existsSync as Bx,readFileSync as am,statSync as lG}from"fs";import{join as ni}from"path";var jx=oe({kind:"doc-path-evidence",invalidation:J("doc-path-evidence"),serialize:IG,deserialize:wG}),wo=/\.(?:md|mdx|rst|txt)$/i;function uG(e){return/(?:^|\/)(?:docs\/plans|plans|adrs?|rfcs?|decisions|changelogs?|archive|reports?)\//i.test(e)||/(?:^|\/)CHANGELOG\.(?:md|mdx|rst|txt)$/i.test(e)}var dG=3,mG=/([A-Za-z0-9_@-]+(?:\/[A-Za-z0-9_.@-]+)+\.[A-Za-z0-9]{1,6})(?::([1-9][0-9]*))?\b/g;function fG(e,t={}){let{doc:n,limit:r=20,minCoupling:i=dG,includeSnapshotExcluded:o=!1}=t,s=yG(e,t.historyMode??"bounded");if(!s)return{available:!1,commitsAnalyzed:0,docsScanned:0,findings:[]};let a=[];for(let c of s.docFiles){if(n!==void 0&&!c.includes(n)||n===void 0&&!Hx(e,c)||n!==void 0&&!Bx(ni(e.config.projectRoot,c)))continue;let l=Qa(e,c);if(l&&!o)continue;let{value:u,estimated:d}=pG(e,c,s.changeTimes.get(c)),m=gG(e,c),f=new Map,{resolved:p,broken:g,citations:y}=CG(e,c,s.tracked,s.trackedBySuffix,s.everSeenInHistory),h=new Map(y.map(b=>[b.file,b]));for(let b of p){if(b===c||wo.test(b))continue;let C=(s.changeTimes.get(b)??[]).filter(v=>v>u).length;if(C===0)continue;let S=h.get(b);f.set(b,{file:b,evidence:"reference",coChanges:0,changesSinceDocUpdate:C,...sm("reference",m,S?.contexts),citationContexts:S?.contexts,citedLines:S?.lineReferences})}for(let[b,C]of s.coupling.get(c)??[]){if(C<i||!s.tracked.has(b))continue;let S=(s.changeTimes.get(b)??[]).filter(R=>R>u).length;if(S===0)continue;let v=f.get(b);v?(v.evidence="both",v.coChanges=C,Object.assign(v,sm("both",m,v.citationContexts))):f.set(b,{file:b,evidence:"co-change",coChanges:C,changesSinceDocUpdate:S,...sm("co-change",m)})}if(f.size===0&&g.length===0)continue;let x=[...f.values()].sort((b,C)=>C.changesSinceDocUpdate-b.changesSinceDocUpdate);a.push({doc:c,docLastChangedAt:u,staleness:x.reduce((b,C)=>b+C.changesSinceDocUpdate,0)+g.length*10,subjects:x.slice(0,8),brokenReferences:g,...l?{snapshotExcluded:!0}:{},...d?{docLastChangedAtEstimated:!0}:{}})}return a.sort((c,l)=>l.staleness-c.staleness),{available:!0,commitsAnalyzed:s.historyCommitCount,docsScanned:s.docFiles.length,findings:a.slice(0,r)}}function pG(e,t,n){if(n&&n.length>0)return{value:Math.max(...n),estimated:!1};try{return{value:Math.floor(lG(ni(e.config.projectRoot,t)).mtimeMs/1e3),estimated:!0}}catch{return{value:0,estimated:!1}}}function gG(e,t){let n;try{n=am(ni(e.config.projectRoot,t),"utf8").slice(0,6e3)}catch{return{docIntent:"unknown",reasons:["doc text unavailable"]}}let r=`${t}
766
+ ${n}`.toLowerCase(),i=mr(r,["historical note","historical record","history note","retrospective","postmortem","post-mortem","archived","archive","previously","legacy","recorded","record of","snapshot","as of","migration note","decision record"]);if(i.length>0)return{docIntent:"historical-note",reasons:[`historical-note terms: ${i.join(", ")}`]};let o=mr(r,["current","standard","standards","must","should","policy","guide","guidance","workflow","contract","invariant","source of truth"]);return o.length>0?{docIntent:"current-guidance",reasons:[`current-guidance terms: ${o.join(", ")}`]}:{docIntent:"unknown",reasons:["no current-guidance or historical-note markers found"]}}function sm(e,t,n=[]){let r=e==="co-change"||n.length===0?null:cn.classifyCitation(n);return{actionTier:hG(e,t.docIntent,r?.actionTier),docIntent:t.docIntent,docIntentReasons:t.reasons,...r?{citationKind:r.citationKind,citationKindReasons:r.reasons}:{}}}function hG(e,t,n){return t==="historical-note"?"support":n||(e==="co-change"?"signal":"direct")}function yG(e,t){let n=ze(e,{historyMode:t}),r=n.commitHistory();if(!r)return null;let i=n.trackedFiles()??new Set,o=new Map,s=new Map,a=new Set;for(let c of r.commits){let l=[...new Set(c.files)],u=l.filter(m=>wo.test(m)),d=l.filter(m=>!wo.test(m));for(let m of l){a.add(m);let f=o.get(m)??[];f.push(c.timestamp),o.set(m,f)}for(let m of u){let f=s.get(m);f||(f=new Map,s.set(m,f));for(let p of d)f.set(p,(f.get(p)??0)+1)}}return{changeTimes:o,coupling:s,docFiles:[...i].filter(c=>wo.test(c)),everSeenInHistory:a,historyCommitCount:r.commits.length,tracked:i,trackedBySuffix:Ux(i)}}function $x(e,t){if(t.size===0)return[];let n=U(),r=0,i=0,o=0,s=0,a=0,c=0;return E("doc-reference.docs-citing-files",()=>{let l=ze(e).trackedFiles()??new Set;r=l.size;let u=Ux(l),d=bG(t,u),m=[];for(let f of l){if(!Hx(e,f))continue;n&&(i+=1);let p;try{p=am(ni(e.config.projectRoot,f),"utf-8")}catch{n&&(o+=1);continue}if(!RG(p,d)){n&&(s+=1);continue}let g=Wx(e,f,p);if(!g)continue;n&&(a+=1);let y=SG(g.candidates,t,d,l,u);if(y.size===0)continue;let h=[...new Set([...y.values()].flatMap(S=>[...S]))],x=xG(g.contextsByCandidate,h),b=[...y].map(([S,v])=>({file:S,contexts:Za([...v].flatMap(R=>x.get(R)??[])).slice(0,3),lineReferences:ec([...v].flatMap(R=>g.lineReferencesByCandidate.get(R)??[]))})).filter(S=>S.contexts.length>0),C=[...y.keys()];if(C.length>0){n&&(c+=1);let S=C.sort();m.push({doc:f,cited:S,citations:b,citedClaims:Za(b.flatMap(v=>v.contexts)).slice(0,3)})}}return m},()=>({targets:t.size,trackedFiles:r,livingDocs:i,unreadableDocs:o,candidateMisses:s,evidenceDocs:a,citedDocs:c}))}function Hx(e,t){return wo.test(t)&&!uG(t)&&Bx(ni(e.config.projectRoot,t))}function Ux(e){let t=new Map;for(let n of e){let r=n.split("/");for(let i of[2,3]){if(r.length<i)continue;let o=r.slice(-i).join("/"),s=t.get(o)??[];s.push(n),t.set(o,s)}}return t}function bG(e,t){let n=new Set(e);for(let r of e){let i=r.split("/");for(let o of[2,3]){if(i.length<o)continue;let s=i.slice(-o).join("/"),a=t.get(s);a?.length===1&&a[0]===r&&n.add(s)}}return n}function SG(e,t,n,r,i){let o=new Map;for(let s of e){if(!n.has(s))continue;let a;if(t.has(s))a=s;else if(r.has(s))a=s;else{let l=i.get(s);l?.length===1&&(a=l[0])}if(!a||!t.has(a))continue;let c=o.get(a)??new Set;c.add(s),o.set(a,c)}return o}function CG(e,t,n,r,i){let o=new Set,s=new Set,a=Wx(e,t);if(!a)return{resolved:o,broken:[],citations:[]};let c=a.candidates,l=a.contextsByCandidate,u=a.lineReferencesByCandidate,d=new Map,m=new Map,f=(p,g)=>{let y=l.get(g);if(y&&y.length>0){let x=d.get(p)??[];x.push(...y),d.set(p,Za(x).slice(0,3))}let h=u.get(g);h&&h.length>0&&m.set(p,ec([...m.get(p)??[],...h]))};for(let p of c){if(n.has(p)){o.add(p),f(p,p);continue}let g=r.get(p);if(g&&g.length===1){o.add(g[0]),f(g[0],p);continue}g&&g.length>1||i.has(p)&&s.add(p)}return{resolved:o,broken:[...s],citations:[...d].map(([p,g])=>({file:p,contexts:g,lineReferences:m.get(p)}))}}function xG(e,t){let n=new Map;for(let r of t){let i=e.get(r);i&&i.length>0&&n.set(r,[...i])}return n}function Wx(e,t,n){let r=n;if(r===void 0)try{r=am(ni(e.config.projectRoot,t),"utf-8")}catch{return null}let i=ce(e,t,r),o=jx.read(e,t,i);if(o)return o;let s=vG(r);return jx.write(e,t,i,s),s}function RG(e,t){for(let n of t)if(e.includes(n))return!0;return!1}function vG(e){let t=e.split(/\r?\n/),n=new Set,r=new Map,i=new Map;for(let o=0;o<t.length;o+=1){let s=t[o]??"";for(let a of s.matchAll(mG)){let c=(a[1]??"").replace(/^\.?\//,"");if(c.length===0)continue;n.add(c);let l=a[2]?Number(a[2]):null;l!==null&&Number.isSafeInteger(l)&&i.set(c,ec([...i.get(c)??[],l]));let u=Xa(t,o);if(u.length===0)continue;let d=r.get(c)??[];d.push(u),r.set(c,Za(d).slice(0,3))}}return{candidates:[...n],contextsByCandidate:r,lineReferencesByCandidate:i}}function IG(e){let t={candidates:e.candidates,contextsByCandidate:[...e.contextsByCandidate.entries()],lineReferencesByCandidate:[...e.lineReferencesByCandidate.entries()]};return JSON.stringify(t)}function wG(e){try{let t=JSON.parse(e);if(!Et(t))return null;let n=Me(t.candidates),r=DG(t.contextsByCandidate),i=EG(t.lineReferencesByCandidate);return!n||!r?null:{candidates:n,contextsByCandidate:new Map(r),lineReferencesByCandidate:new Map(i??[])}}catch{return null}}function EG(e){if(e===void 0)return[];if(!Array.isArray(e))return null;let t=[];for(let n of e){if(!Array.isArray(n)||n.length!==2||typeof n[0]!="string"||!Array.isArray(n[1]))return null;let r=[];for(let i of n[1]){if(typeof i!="number"||!Number.isSafeInteger(i))return null;r.push(i)}t.push([n[0],ec(r)])}return t}function DG(e){if(!Array.isArray(e))return null;let t=[];for(let n of e){if(!Array.isArray(n)||n.length!==2||typeof n[0]!="string")return null;let r=Me(n[1]);if(!r)return null;t.push([n[0],r])}return t}function Za(e){let t=[];for(let n of new Set(e))t.some(r=>PG(r,n))||t.push(n);return t}function ec(e){return[...new Set(e)].sort((t,n)=>t-n)}function PG(e,t){if(e===t)return!0;let n=e.split(/\r?\n/).map(a=>a.trim()).filter(a=>a.length>0),r=t.split(/\r?\n/).map(a=>a.trim()).filter(a=>a.length>0),i=Math.min(n.length,r.length);if(i===0)return!1;if(i<3)return e.includes(t)||t.includes(e);let o=new Set(r),s=n.filter(a=>o.has(a)).length;return s>=3&&s/i>=.6}import{createHash as kG}from"crypto";var zx=3;function Eo(e,t={}){let{scope:n,maxLoc:r=15,minLoc:i=zx,limit:o,scanLimit:s}=t,a=Gd(e),c=Kx(e,{scope:n,maxLoc:r,scanLimit:s}).map(u=>Jx(e,u,a,i)).filter(u=>u!==null),l=qx(c);return o?l.slice(0,o):l}function cm(e,t,n={}){let{scope:r,maxLoc:i=15,minLoc:o=zx,scanLimit:s}=n,a=Gd(e),c=Kx(e,{scope:r,maxLoc:i,scanLimit:s}).map(u=>Jx(e,u,a,o)).filter(u=>u!==null),l=c.find(u=>u.symbol===t);return l?c.filter(u=>u.symbol!==l.symbol&&u.normalizedBody===l.normalizedBody&&u.file!==l.file).sort(Yx).map(({normalizedBody:u,...d})=>d):[]}function Vx(e){let t=jt(e);return st(t).replace(/\s+/g,"")}function qx(e){let t=new Map;for(let r of e){if(r.normalizedBody.length<8)continue;let i=FG(r.normalizedBody),o=t.get(i)??[];o.push(r),t.set(i,o)}let n=[];for(let[r,i]of t){let o=new Set(i.map(a=>a.file));if(i.length<2||o.size<2)continue;let s=[...i].sort(Yx).map(({normalizedBody:a,...c})=>c);n.push({hash:r,canonical:s[0],functions:s})}return n.sort((r,i)=>{let o=i.functions.length-r.functions.length;if(o!==0)return o;let s=Gx(i)-Gx(r);return s!==0?s:r.canonical.file.localeCompare(i.canonical.file)}),n}function Kx(e,t){let n=xe(e,{scope:t.scope}).filter(r=>r.isFunctionLike&&!e.isIgnored(r.relativePath)).filter(r=>!Go(e,r.relativePath,r.startLine,"similar")).filter(r=>O(r)<=t.maxLoc);return n.sort((r,i)=>O(i)-O(r)||r.relativePath.localeCompare(i.relativePath)),se(n,t.scanLimit)}function Jx(e,t,n,r){let i=ln(e,t);if(!i||TG(i)<r)return null;let o=lm(e,t);return o?{symbol:t.symbol,shortName:I(t.symbol),file:t.relativePath,startLine:t.startLine,endLine:t.endLine,loc:O(t),ageCommits:n?.get(t.relativePath)?.commitsAgo??null,normalizedBody:o}:null}function lm(e,t){let n=ln(e,t);return n&&Vx(n)||null}function ln(e,t){let n=Ce(e,t.relativePath);return n.length===0?null:n.slice(t.startLine,t.endLine+1).join(`
767
+ `)}function jt(e){let t=e.indexOf("{"),n=e.lastIndexOf("}");if(t>=0&&n>t)return e.slice(t+1,n);let r=e.indexOf("=>");return r>=0?e.slice(r+2).replace(/;+\s*$/,""):e}function TG(e){return jt(e).split(/\r?\n/).map(n=>n.trim()).filter(n=>n.length>0).length}function FG(e){return kG("sha256").update(e).digest("hex").slice(0,16)}function Yx(e,t){let n=e.ageCommits??-1;return(t.ageCommits??-1)-n||e.file.localeCompare(t.file)||e.startLine-t.startLine}function Gx(e){return e.functions.reduce((t,n)=>t+n.loc,0)}var _G=new Set(Nt());function LG(e,t={}){let{includeHomonyms:n=!1,limit:r}=t,i=ri(e,t).filter(o=>o.relationship==="divergent"||n&&o.relationship==="homonym");return r?i.slice(0,r):i}function ri(e,t={}){let{scope:n,minSimilarity:r=.3,scanLimit:i}=t,o=MG(e,{scope:n,scanLimit:i});return Zx(o,{minSimilarity:r,isDelegatePair:iz(e)}).filter(s=>!s.members.some(a=>Go(e,a.file,a.startLine,"twin")))}function Zx(e,t={}){let n=t.minSimilarity??.3,r=t.isDelegatePair,i=e.filter(l=>!sR(l.leaf)&&!qG(l.leaf)&&G(l.file)!=="test"&&!Ie(l.symbol)&&!tR(l.symbol)&&!nR(l.symbol,l.leaf)),{recordsByLeaf:o,recordOrder:s}=E("twin-drift.group-by-leaf",()=>NG(i),()=>({records:i.length})),a=E("twin-drift.cluster-leaf-names",()=>eR([...o.keys()]),()=>({leaves:o.size}));return E("twin-drift.compare-clusters",()=>{let l=[];for(let u of a){let d=AG(u,o,s);if(d.length<2||new Set(d.map(x=>x.file)).size<2)continue;let m=null,f=!1,p=!1,g=new Set;for(let x=0;x<d.length;x+=1)for(let b=x+1;b<d.length;b+=1){let C=d[x],S=d[b];if(C.file===S.file||!XG(C,S)||r?.(C,S,d)||r?.(S,C,d))continue;if(f=!0,g.add(C.symbol),g.add(S.symbol),C.normalizedBody===S.normalizedBody){p=!0;continue}let v=WG(C.tokens,S.tokens);(!m||v>m.similarity)&&(m={a:C,b:S,similarity:v})}if(!f)continue;let y=d.filter(x=>g.has(x.symbol)).sort((x,b)=>x.file.localeCompare(b.file)||x.startLine-b.startLine).map(UG);if(!m){l.push({leaf:Qx(u),relationship:p?"identical":"homonym",maxDivergence:0,members:y});continue}let h=m.similarity>=n?"divergent":"homonym";l.push({leaf:Qx(u),relationship:h,maxDivergence:Math.round((1-m.similarity)*1e3)/1e3,members:y,...h==="divergent"?{firstDivergentTokens:GG(m.a.tokens,m.b.tokens)}:{}})}return l},()=>({clusters:a.length,records:i.length})).sort((l,u)=>u.members.length-l.members.length||u.maxDivergence-l.maxDivergence||l.leaf.localeCompare(u.leaf))}function NG(e){let t=new Map,n=new Map;for(let[r,i]of e.entries()){let o=t.get(i.leaf)??[];o.push(i),t.set(i.leaf,o),n.set(i,r)}return{recordsByLeaf:t,recordOrder:n}}function AG(e,t,n){let r=[...e].flatMap(i=>t.get(i)??[]);return e.size>1&&r.sort((i,o)=>(n.get(i)??0)-(n.get(o)??0)),r}function MG(e,t){let n=E("twin-drift.load-definitions",()=>xe(e,{scope:t.scope}).filter(o=>OG(o)&&!e.isIgnored(o.relativePath)).filter(o=>!zr(o.relativePath)));E("twin-drift.sort-definitions",()=>n.sort((o,s)=>o.relativePath.localeCompare(s.relativePath)||o.startLine-s.startLine),()=>({definitions:n.length}));let r=se(n,t.scanLimit),i=E("twin-drift.select-candidates",()=>jG(r),()=>({scanned:r.length}));return E("twin-drift.build-records",()=>{let o=[];for(let s of i){let a=BG(e,s);a&&o.push(a)}return o},()=>({candidates:i.length,scanned:r.length}))}function OG(e){return e.isFunctionLike?e.symbol.startsWith("rust-analyzer ")?typeof e.kind=="number"&&_G.has(e.kind):!0:!1}function jG(e){let t=e.filter(o=>o.leaf&&!sR(o.leaf)&&!Ie(o.symbol)&&!tR(o.symbol)&&!nR(o.symbol,o.leaf)),n=new Map;for(let o of t){let s=n.get(o.leaf)??[];s.push(o),n.set(o.leaf,s)}let r=eR([...n.keys()]),i=new Set;for(let o of r){let s=[...o].flatMap(a=>n.get(a)??[]);if(!(s.length<2)&&!(new Set(s.map(a=>a.relativePath)).size<2)&&!s.every(a=>G(a.relativePath)==="test"))for(let a of s)i.add(a)}return e.filter(o=>i.has(o))}function BG(e,t){if(!t.leaf)return null;let n=ln(e,t);if(!n||!le(t.symbol)&&!$G(n,t.leaf))return null;let r=st(jt(n)),i=r.replace(/\s+/g,"");if(!i||i.length<8)return null;let o=r.match(HG)??[];return o.length===0?null:{leaf:t.leaf,symbol:t.symbol,shortName:I(t.symbol),file:t.relativePath,startLine:t.startLine,endLine:t.endLine,loc:O(t),normalizedBody:i,tokens:o,isThinForwarder:iR(r)}}function $G(e,t){let n=t.replace(/[.*+?^${}()|[\]\\]/g,"\\$&");return new RegExp(`\\b(?:const|let|var)\\s+${n}(?:\\s*:[^=]+)?\\s*=\\s*(?:async\\s*)?(?:\\([^)]*\\)|[A-Za-z_$][\\w$]*)\\s*=>`,"s").test(e)}var HG=/[A-Za-z_$][A-Za-z0-9_$]*|\d+(?:\.\d+)?|[^\sA-Za-z0-9_$]/g;function UG(e){return{symbol:e.symbol,shortName:e.shortName,file:e.file,startLine:e.startLine,endLine:e.endLine,loc:e.loc}}function WG(e,t){let n=new Set(e),r=new Set(t);if(n.size===0&&r.size===0)return 1;if(n.size===0||r.size===0)return 0;let i=0;for(let s of n)r.has(s)&&(i+=1);let o=n.size+r.size-i;return o===0?0:i/o}function GG(e,t){let n=Math.min(e.length,t.length),r=0;for(;r<n&&e[r]===t[r];)r+=1;let i=e.slice(r,r+6).join(" "),o=t.slice(r,r+6).join(" ");return!i&&!o?"(bodies differ only in trailing length)":`A: ${i||"(end)"} | B: ${o||"(end)"}`}function eR(e){let t=new Map;for(let s of e)t.set(s,s);let n=s=>{let a=s;for(;t.get(a)!==a;)a=t.get(a);let c=s;for(;t.get(c)!==a;){let l=t.get(c);t.set(c,a),c=l}return a},r=(s,a)=>{let c=n(s),l=n(a);c!==l&&t.set(c,l)},i=new Map;for(let s of e){let a=s.slice(0,2).toLowerCase(),c=i.get(a)??[];c.push(s),i.set(a,c)}for(let s of i.values())for(let a=0;a<s.length;a+=1)for(let c=a+1;c<s.length;c+=1)zG(s[a],s[c])&&r(s[a],s[c]);let o=new Map;for(let s of e){let a=n(s),c=o.get(a)??new Set;c.add(s),o.set(a,c)}return[...o.values()]}function zG(e,t){return e===t||e.toLowerCase()===t.toLowerCase()?!0:e.length<8||t.length<8||Math.abs(e.length-t.length)>2||VG(e.toLowerCase(),t.toLowerCase())/Math.max(e.length,t.length)<.8?!1:QG(e.toLowerCase(),t.toLowerCase(),2)}function VG(e,t){let n=Math.min(e.length,t.length),r=0;for(;r<n&&e[r]===t[r];)r+=1;return r}function qG(e){return/^[A-Z][A-Z0-9_]*$/.test(e)||/^__[^_].*__$/.test(e)||KG.has(e.toLowerCase())}var KG=new Set(["main","row"]),JG=new Set(["app","component","components","feature","features","impl","index","lib","route","routes","shared","src","tsx","typescript","ui"]);function tR(e){return e.startsWith("rust-analyzer ")&&/\/(?:tests?|benches?)\//.test(e)}var YG=new Set(["default","new","reset"]);function nR(e,t){return e.startsWith("rust-analyzer ")&&YG.has(t.toLowerCase())}function XG(e,t){if(e.leaf.toLowerCase()!==t.leaf.toLowerCase()||e.leaf.length>4)return!0;let n=Xx(e);return[...Xx(t)].some(r=>n.has(r))}function Xx(e){let t=e.leaf.toLowerCase();return new Set(`${e.file}/${e.shortName}`.replace(/([a-z0-9])([A-Z])/g,"$1 $2").toLowerCase().split(/[^a-z0-9]+/).filter(n=>n.length>2&&n!==t&&!JG.has(n)))}function QG(e,t,n){if(Math.abs(e.length-t.length)>n)return!1;let r=Array.from({length:t.length+1},(i,o)=>o);for(let i=1;i<=e.length;i+=1){let o=[i],s=o[0];for(let a=1;a<=t.length;a+=1){let c=e[i-1]===t[a-1]?0:1,l=Math.min(r[a]+1,o[a-1]+1,r[a-1]+c);o.push(l),s=Math.min(s,l)}if(s>n)return!1;r=o}return r[t.length]<=n}function rR(e){return iR(st(jt(e)))}function iR(e){let t=e.trim();if(!t||ZG.test(t))return!1;let n=nz(t);return n.length===0||n.length>2?!1:tz(n[n.length-1])}var ZG=/\b(?:if|else|for|while|switch|try|catch|do)\b/,ez=/^[A-Za-z_$][\w$]*(?:\.[A-Za-z_$][\w$]*|\[[^[\]]*\])*\((?:[^()]|\([^()]*\))*\)$/;function tz(e){let t=e.trim().replace(/^return\s+/,"").replace(/^await\s+/,"").replace(/;\s*$/,"").trim();return ez.test(t)}function nz(e){let t=[],n=0,r="";for(let i of e){if(i==="("||i==="["||i==="{"?n+=1:(i===")"||i==="]"||i==="}")&&(n=Math.max(0,n-1)),i===";"&&n===0){t.push(r),r="";continue}r+=i}return r.trim()&&t.push(r),t.map(i=>i.trim()).filter(i=>i.length>0)}var rz=3;function iz(e){let t=new Map;return(n,r,i)=>{if(!n.isThinForwarder)return!1;let o=`${n.symbol}\0${r.symbol}`,s=t.get(o);if(s!==void 0)return s;let a=oR(e,n,r,i,rz,new Set);return t.set(o,a),a}}function oR(e,t,n,r,i,o){if(i<=0||o.has(t.symbol)||(o.add(t.symbol),(hn(e,t.file)??[]).filter(c=>c.line>=t.startLine&&c.line<=t.endLine&&c.calleeLeaf===n.leaf).length===0))return!1;let a=new Set(Z(e,t.file).filter(c=>c.sourcePath&&(c.kind!=="namespace"||c.usedMembers.includes(n.leaf))).map(c=>c.sourcePath));if([...a].some(c=>Ve(c,n.file)))return!0;for(let c of r)if(!(c.symbol===t.symbol||c.symbol===n.symbol||!c.isThinForwarder)&&[...a].some(l=>Ve(l,c.file))&&oR(e,c,n,r,i-1,o))return!0;return!1}function sR(e){return e.startsWith("<")&&e.endsWith(">")}function Qx(e){return[...e].sort()[0]}import{readFileSync as oz,readdirSync as sz}from"fs";import{basename as az,join as um}from"path";function cz(e,t,n={}){let r=new Set(e),i=new Set(t),o=[...i].filter(a=>!r.has(a)).sort(),s=n.allowExtra?[]:[...r].filter(a=>!i.has(a)).sort();return{missing:o,extra:s}}function dm(e,t){let n=lz(e,t.file,t.keys);if(!n.ok)return{name:t.name,file:t.file,status:"unavailable",missing:[],extra:[],unavailableReason:n.reason};let r=gz(e.config.projectRoot,t.mustEqual),i=cz(n.keys,r,{allowExtra:t.allowExtra??!1}),o=i.missing.length>0||i.extra.length>0?"violated":"ok";return{name:t.name,file:t.file,status:o,missing:i.missing,extra:i.extra}}function cR(e,t){return t.map(n=>dm(e,n))}function lR(e,t){if(t.has(e.file))return!0;let n=e.mustEqual;switch(n.type){case"top-level-dirs":return[...t].some(r=>r===n.path||r.startsWith(`${n.path}/`));case"file-glob":return[...t].some(r=>Tn(n.pattern,r));case"registered-commands":return t.has("docs/COMMAND_REFERENCE.md");case"builtin-skills":return[...t].some(r=>r.startsWith("skills/"))}}function uR(e){if(e.status==="unavailable")return`[coverage-contract] ${e.name}: DISCLOSED \u2014 could not evaluate (${e.unavailableReason})`;let t=[];return e.missing.length>0&&t.push(`missing ${e.missing.join(", ")}`),e.extra.length>0&&t.push(`extra ${e.extra.join(", ")}`),`[coverage-contract] ${e.name}: ${t.join("; ")}`}function lz(e,t,n){return n.type==="markdown-list"?pz(e,t,n.marker):uz(e,t,n)}function uz(e,t,n){if(!k(e,t))return{ok:!1,reason:`file not found: ${t}`};let i=M(t);if(!i)return{ok:!1,reason:`unsupported file type for ${n.type} extraction: ${t}`};let o=K(e,t);if(!o)return{ok:!1,reason:`tree-sitter parser unavailable for ${i} (${t}) \u2014 contract skipped, not silently passed`,disclosedUnavailable:{language:i,reason:"parser-unavailable"}};let s=n.type==="object-literal-keys"?dz(o,n.identifier):fz(o,n.identifier);return s===null?{ok:!1,reason:`no ${n.type==="object-literal-keys"?"object literal":"string array"} named "${n.identifier}" found in ${t}`}:{ok:!0,keys:s}}function dR(e){let t=e.childForFieldName("value");return t?t.type==="as_expression"||t.type==="satisfies_expression"?t.namedChild(0):t:null}function dz(e,t){for(let n of e.rootNode.descendantsOfType("variable_declarator")){if(n.childForFieldName("name")?.text!==t)continue;let i=dR(n);if(i?.type==="object")return mz(i)}return null}function mz(e){let t=new Set;for(let n of e.namedChildren)if(n.type==="pair"){let r=n.childForFieldName("key");r&&t.add(mR(r.text))}else n.type==="shorthand_property_identifier"&&t.add(n.text);return[...t].sort()}function fz(e,t){for(let n of e.rootNode.descendantsOfType("variable_declarator")){if(n.childForFieldName("name")?.text!==t)continue;let i=dR(n);if(i?.type!=="array")continue;let o=new Set;for(let s of i.namedChildren)s.type==="string"&&o.add(mR(s.text));return[...o].sort()}return null}function mR(e){return e.length>=2&&(e[0]==="'"&&e.endsWith("'")||e[0]==='"'&&e.endsWith('"'))?e.slice(1,-1):e}function pz(e,t,n){let r=k(e,t);if(!r)return{ok:!1,reason:`file not found: ${t}`};let i=fR(r,n);return i===null?{ok:!1,reason:`no <!-- BEGIN GENERATED ${n} --> ... <!-- END GENERATED ${n} --> block in ${t}`}:{ok:!0,keys:pR(i)}}function fR(e,t){let n=$(t),i=new RegExp(`<!--\\s*BEGIN GENERATED ${n}\\s*-->([\\s\\S]*?)<!--\\s*END GENERATED ${n}\\s*-->`).exec(e);return i?i[1]:null}function pR(e){let t=new Set;for(let n of e.matchAll(/`([a-z][a-z0-9-]*)`/g))t.add(n[1]);for(let n of e.matchAll(/\[([a-z][a-z0-9-]*)\]\([^)]*\)/g))t.add(n[1]);return[...t].sort()}function gz(e,t){switch(t.type){case"top-level-dirs":return aR(um(e,t.path));case"file-glob":return[...new Set(Aa(e,t.pattern).map(n=>az(n)))].sort();case"registered-commands":return hz(e);case"builtin-skills":return aR(um(e,"skills"))}}function aR(e){let t;try{t=sz(e,{withFileTypes:!0})}catch{return[]}return t.filter(n=>n.isDirectory()&&!n.name.startsWith(".")).map(n=>n.name).sort()}function hz(e){let t;try{t=oz(um(e,"docs/COMMAND_REFERENCE.md"),"utf-8")}catch{return[]}let n=fR(t,"COMMAND REFERENCE");return n?pR(n):[]}import{writeFileSync as wV}from"fs";var me={dead:{minLoc:3,skipBarrels:!0,deadCodeOnly:!0},isolated:{minLoc:3},similar:{minSimilarity:.6,limit:50,minCallees:4},duplicateBodies:{maxLoc:15,limit:50},extract:{minLoc:15,minCallees:5,limit:50},wrappers:{maxLoc:15,limit:50},passthroughs:{maxLoc:15,limit:50},stale:{minLoc:3,limit:50},drift:{},twinDrift:{minSimilarity:.3}};import{existsSync as yz,readFileSync as bz}from"fs";import{isAbsolute as Sz,join as Cz}from"path";var xz=".scipquery-baseline.json";function mm(e){if(e.startsWith("similar:")){let t=e.slice(8).split("|");return t.length!==2?e:`similar:${t.map(I).sort().join("|")}`}if(e.startsWith("duplicate-bodies:")){let t=e.slice(17),n=t.indexOf(":");if(n<0)return e;let r=t.slice(0,n),i=t.slice(n+1).split("|");return i.length<2?e:`duplicate-bodies:${r}:${i.map(I).sort().join("|")}`}return e}function ii(e,t){return t&&Sz(t)?t:Cz(e.config.projectRoot,t??xz)}function tc(e,t,n={}){let r=ii(e,n.path);if(!yz(r))throw new Error(`No baseline found at ${r}. Create one with: scip-query health --write-baseline`);let o=(JSON.parse(bz(r,"utf-8")).findings??[]).map(mm),s=new Set(n.accept?o.filter(n.accept):o),a=new Set(t);return{baselinePath:r,baselineCount:s.size,current:[...t],newFindings:t.filter(c=>!s.has(c)),fixedFindings:[...s].filter(c=>!a.has(c))}}import Do from"path";function ko(e,t){let{scope:n,minDeviation:r=5,limit:i=50}=t??{},o=t?.semantic!==!1,s=t?.includePatternDeviations===!0,c=new F(e).fileDependencyGraph(n),l=ur(e,{scope:n}),u=Ez([...Rz(e,c,{scope:n,semantic:o}),...Iz(l.forbiddenEdges),...s?wz(c,r):[]]);return t?.includeArchitecture===!0&&(u.architecture=l),i<=0||u.results.length<=i?u:{...u,results:u.results.slice(0,i),totalResults:u.results.length}}function Rz(e,t,n){let r=kz(e,n.scope),i=[],o=new Set;for(let[a,c]of t){if(Po(a))continue;let l=r.get(a)??new Set;for(let u of c)Po(u)||l.has(u)||vz(e,a,u,n)||(i.push({file:a,dep:u}),o.add(a))}o.size>0&&_z(e,r,{paths:[...o]});let s=[];for(let{file:a,dep:c}of i)(r.get(a)??new Set).has(c)||s.push({file:a,kind:"unused-import",description:`Depends on ${c} but references none of its symbols`,dep:c,actionTier:"direct",evidenceReasons:[`dependency edge exists from ${a} to ${c}`,"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 s}function vz(e,t,n,r){return Az(e,t,n)||Mz(e,t,n)||Lz(n)||jz(e,t,n)||Oz(n)?!0:r.semantic&&Nz(e,t,n)}function Iz(e){return e.flatMap(t=>{let n=t.examples[0];return n?[{file:n.fromFile,kind:"architecture-violation",description:`${t.from} depends on forbidden boundary ${t.to} through ${t.fileEdgeCount} file edge(s)`,dep:n.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 wz(e,t){let n=[];for(let[r,i]of Dz(e)){let o=i.filter(a=>!Po(a));if(o.length<t)continue;let s=Pz(e,o);for(let a of o)for(let c of e.get(a)??[])Po(c)||(s.get(c)??0)===1&&Do.dirname(c)!==r&&Do.dirname(c)!==Do.dirname(r)&&n.push({file:a,kind:"pattern-deviation",description:`Only file in ${r}/ that depends on ${c}`,dep:c,actionTier:"signal",evidenceReasons:[`${o.length} sibling file(s) in ${r}/ were compared`,`${a} is the only non-skipped sibling depending on ${c}`],recommendation:"Review sibling ownership before changing this import; unique dependency shape can be intentional specialization."})}return n}function Ez(e){let t=e.filter(n=>n.kind==="architecture-violation").length;return{results:e,unusedImports:e.filter(n=>n.kind==="unused-import").length,architectureViolations:t,layerViolations:t,patternDeviations:e.filter(n=>n.kind==="pattern-deviation").length}}function Dz(e){let t=new Map;for(let n of e.keys()){let r=Do.dirname(n),i=t.get(r);i||(i=[],t.set(r,i)),i.push(n)}return t}function Pz(e,t){let n=new Map;for(let r of t)for(let i of e.get(r)??[])Po(i)||n.set(i,(n.get(i)??0)+1);return n}function kz(e,t){let n=new Map;return Tz(e,n,t),n}function Tz(e,t,n){for(let r of Fz(e,n))gR(e,t,r.from_file,r.to_file)}function Fz(e,t){let n=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
768
+ FROM mentions m
769
+ JOIN chunks c ON m.chunk_id = c.id
770
+ JOIN documents d1 ON c.document_id = d1.id
771
+ JOIN global_symbols gs ON m.symbol_id = gs.id
772
+ JOIN (
773
+ SELECT m2.symbol_id, c2.document_id
774
+ FROM mentions m2
775
+ JOIN chunks c2 ON m2.chunk_id = c2.id
776
+ WHERE m2.role = 1
777
+ GROUP BY m2.symbol_id
778
+ ) sym_def ON sym_def.symbol_id = gs.id
779
+ JOIN documents d2 ON sym_def.document_id = d2.id
780
+ WHERE d1.id != d2.id
781
+ AND m.role != 1
782
+ ${e.pathExclusionsFor("d1","d2")}
783
+ ${n}`,...r)}function _z(e,t,n={}){new F(e).scanSourceReferences({paths:n.paths??N(e,{includeIgnored:!1}),includeRustAttributeNames:!0,identifierResolution:"permissive"},i=>{i.target.relativePath!==i.sourceFile&&(e.isIgnored(i.target.relativePath)||gR(e,t,i.sourceFile,i.target.relativePath))})}function gR(e,t,n,r){if(e.isIgnored(n)||e.isIgnored(r))return;let i=t.get(n);i||(i=new Set,t.set(n,i)),i.add(r)}function Lz(e){return e.includes("types")||e.endsWith(".d.ts")}function Nz(e,t,n){let r=Gi(e,t).filter(i=>i.sourcePath===n);return r.length>0&&r.some(i=>i.isUsed)}function Az(e,t,n){let r=Z(e,t).filter(i=>i.sourcePath===n);return r.length>0&&r.some(i=>i.used)}function Mz(e,t,n){let r=Z(e,t).filter(i=>i.sourcePath===n);return r.length>0&&r.every(i=>i.isTypeOnly===!0)}function Oz(e){return e.endsWith(".vue")}function jz(e,t,n){let r=Z(e,t).filter(i=>i.sourcePath===n);return r.length===0?!1:r.every(i=>i.kind==="side-effect"||i.kind==="namespace"&&i.usedMembers.length===0&&!i.used)}function Po(e){let t=G(e);return!!(t==="entry"||t==="barrel"||t==="test"||t==="worker"||Bz(Do.basename(e)))}function Bz(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")}import{basename as hR,extname as yR}from"path";function nc(e,t,n,r,i,o){let s=new Set;Hz(e,t,n,r)&&s.add(i);for(let a of o)a.value&&$z(s,a.label,a.value);return[...s].slice(0,6)}function $z(e,t,n){let r=Uz(n);t.endsWith("name")&&Wz(r)&&e.add(`${t} has type-guard boundary shape`);for(let i of r){let o=Gz.get(i);o&&e.add(`${t} has ${o} term: ${i}`)}}function Hz(e,t,n,r){if(n<=0)return!1;let i=Ce(e,t);if(i.length===0)return!1;for(let o=n-1;o>=0&&o>=n-5;o-=1){let s=(i[o]??"").trim();if(s!==""){if(mi(s)===r)return!0;if(!s.startsWith("//")&&!s.startsWith("*")&&!s.startsWith("/*")&&!s.startsWith("@")&&!s.startsWith("#"))return!1}}return!1}function Uz(e){return e.replace(/([A-Z])([A-Z][a-z])/g,"$1 $2").replace(/([a-z0-9])([A-Z])/g,"$1 $2").toLowerCase().split(/[^a-z0-9]+/).filter(Boolean)}function Wz(e){return e.some(t=>zz.has(t))&&e.some(t=>Vz.has(t))}var Gz=new Map([["access","access policy"],["accessible","access policy"],["adapter","adapter"],["adapters","adapter"],["allow","access policy"],["allowed","access policy"],["animation","animation calculation"],["api","api surface"],["apply","settings/application"],["audit","side-effect boundary"],["auth","authorization"],["authorize","authorization"],["audio","audio side-effect"],["can","access policy"],["capabilities","capability boundary"],["capability","capability boundary"],["boundary","boundary"],["begin","lifecycle"],["bridge","bridge"],["bridges","bridge"],["cache","state cache"],["chase","gameplay action"],["command","command boundary"],["context","context policy"],["cooldown","temporal state"],["cooldowns","temporal state"],["controller","controller"],["controllers","controller"],["diagnostic","diagnostics"],["diagnostics","diagnostics"],["effect","side-effect boundary"],["effects","side-effect boundary"],["energy","gameplay calculation"],["expired","temporal state"],["facade","facade"],["facades","facade"],["fire","gameplay action"],["gateway","gateway"],["gateways","gateway"],["guard","guard"],["guards","guard"],["haptic","haptic side-effect"],["haptics","haptic side-effect"],["head","sequence boundary"],["history","state history"],["input","input boundary"],["jump","gameplay action"],["keyboard","input boundary"],["log","side-effect boundary"],["logger","side-effect boundary"],["lock","coordination boundary"],["middleware","middleware"],["multiplier","gameplay calculation"],["mute","audio side-effect"],["normalize","normalization"],["normalise","normalization"],["normalizer","normalization"],["oscillate","animation calculation"],["oscillation","animation calculation"],["overlap","collision predicate"],["performance","diagnostics"],["permission","access policy"],["permissions","access policy"],["policy","policy"],["pool","state pool"],["pooled","state pool"],["pools","state pool"],["predict","prediction"],["presenter","presenter"],["presenters","presenter"],["projectile","gameplay entity"],["provider","provider boundary"],["providers","provider boundary"],["public","public surface"],["quality","settings/application"],["rate","calculation"],["register","registry"],["registry","registry"],["relay","relay"],["relays","relay"],["reseed","state lifecycle"],["reset","state lifecycle"],["respond","response boundary"],["response","response boundary"],["resolve","resolution"],["resolver","resolution"],["route","route boundary"],["routes","route boundary"],["run","lifecycle"],["sample","diagnostics"],["score","gameplay calculation"],["scope","scope policy"],["scroll","position state"],["scrolled","position state"],["seed","state lifecycle"],["seeded","state lifecycle"],["segment","segment boundary"],["segments","segment boundary"],["setting","settings/application"],["settings","settings/application"],["spawn","gameplay lifecycle"],["spawning","gameplay lifecycle"],["speed","gameplay calculation"],["surface","public surface"],["tail","sequence boundary"],["tick","temporal state"],["transaction","transaction"],["transactional","transaction"],["transform","transformation"],["transformer","transformation"],["translate","translation"],["translator","translation"],["try","fallible action"],["validate","validation"],["validation","validation"],["validator","validation"],["visual","diagnostics"],["window","settings/application"],["socket","transport boundary"],["websocket","transport boundary"]]),zz=new Set(["can","has","is","should"]),Vz=new Set(["access","api","auth","collision","expired","input","keyboard","overlap","permission","permissions","policy","projectile","response","route","routes","scope"]);function To(e,t){let{scope:n,maxLoc:r=15,limit:i=30,scanLimit:o}=t??{},s=new F(e);return gt({candidates:()=>eV(e,s,n,r),orderCandidates:Fa,scanLimit:o,profile:{name:"passthrough-candidates"},prepare:a=>s.calleeMap(a,{semantic:t?.semantic!==!1}),evaluate:(a,c)=>qz(e,a,c.get(a.symbolId)??[]),orderResults:(a,c)=>a.loc-c.loc||a.file.localeCompare(c.file),limit:i})}function qz(e,t,n){let r=Zz(n);if(r.size!==1||!qc(e,t.relativePath,t.startLine,t.endLine))return null;let[,i]=[...r.entries()][0],o=Kz(e,t,i),s=Yz(e,t),a=o.length>0||s.length>0?"signal":"direct";return{symbol:t.symbol,shortName:I(t.symbol),file:t.relativePath,startLine:t.startLine,endLine:t.endLine,loc:O(t),forwardsTo:i.symbol,forwardsToShort:I(i.symbol),forwardsToFile:i.file,actionTier:a,boundaryEvidence:o,publicFacadeEvidence:s,recommendation:Jz(a,o,s)}}function Kz(e,t,n){return nc(e,t.relativePath,t.startLine,"passthrough","explicit ignore-passthrough comment",[{label:"passthrough name",value:I(t.symbol)},{label:"callee name",value:I(n.symbol)},{label:"passthrough module",value:hR(t.relativePath,yR(t.relativePath))},{label:"callee module",value:hR(n.file,yR(n.file))}])}function Jz(e,t,n){if(e==="signal"){if(n.length>0)return`Review the public API before inlining; public-facade evidence: ${n.slice(0,2).join("; ")}.`;let r=t.filter(Qz);return r.length>0?`Review the public API before inlining; public-surface evidence: ${r.slice(0,2).join("; ")}.`:`Review the boundary before inlining; boundary evidence: ${t.slice(0,2).join("; ")}.`}return"Inline or remove this passthrough unless an external API or runtime registration depends on the forwarding name."}function Yz(e,t){return Fo(e,t)?ar(e,t.relativePath)?["exported passthrough is declared on the package public surface"]:de(e,t.symbol,t.relativePath)?["exported passthrough matches configured or framework public entry surface"]:[]:[]}function Fo(e,t){let n=Ce(e,t.relativePath);if(n.length===0)return!1;let r=T(t.symbol);if(!r)return!1;let i=n.slice(Math.max(0,t.startLine-2),t.startLine+1).join(`
784
+ `),o=$(r);return new RegExp(`^\\s*export\\s+(?:default\\s+)?(?:(?:async\\s+)?function\\s+${o}\\b|(?:const|let|var)\\s+${o}\\b)`,"m").test(i)?!0:Xz(n,r)}function Xz(e,t){if(!t)return!1;let n=new RegExp(`^\\s*export\\s*\\{[^}\\n]*\\b${$(t)}\\b`);return e.some(r=>n.test(r))}function Qz(e){return e.includes("public surface")}function Zz(e){let t=e.some(r=>te(r.symbol))?e.filter(r=>te(r.symbol)):e,n=new Map;for(let r of t)n.has(r.symbol)||n.set(r.symbol,r);return n}function eV(e,t,n,r){return t.productionCallableDefinitions({scope:n,minLoc:3,maxLoc:r,requireFunctionLikeSymbol:!0,excludeRustTraitImplMembers:!0}).filter(i=>!hi(e,i))}function _o(e,t){let{scope:n,minLoc:r=3,maxLoc:i=80,limit:o=30,includeLowConfidence:s=!1,scanLimit:a}=t??{},c=t?.semantic!==!1,l=new F(e),u=l.scopedDefinitions(n),d=mV(l,n),m={high:0,medium:1,low:2};return gt({candidates:()=>tV(e,l,u,{minLoc:r,maxLoc:i}),orderCandidates:(f,p)=>O(p)-O(f)||f.relativePath.localeCompare(p.relativePath),scanLimit:a,profile:{name:"stale-abstractions"},prepare:f=>{let p=rV(f),g=nV(e,l,f,p,{semantic:c}),y=f.filter(h=>{let x=rc(e,h,g,p);return x.realConsumers.length<=1&&!x.transitivelyReachable&&bR(h,x.realConsumers.length,d)});return{consumerFileMap:g,singletonBackedClassIds:sV(e,l,u,y,{semantic:c}),candidateIndex:p}},evaluate:(f,p)=>{if(p.singletonBackedClassIds.has(f.symbolId))return null;let g=rc(e,f,p.consumerFileMap,p.candidateIndex);if(g.transitivelyReachable||g.realConsumers.length>1||g.realConsumers.length===0&&g.barrelConsumers>0||!bR(g.definition,g.realConsumers.length,d))return null;let y=iV(e,g);return!s&&y.confidence==="low"?null:y},orderResults:(f,p)=>m[f.confidence]-m[p.confidence]||p.loc-f.loc||f.file.localeCompare(p.file)||f.startLine-p.startLine,limit:o})}function tV(e,t,n,r){return n.filter(i=>i.isTypeLike&&O(i)>=r.minLoc).filter(i=>O(i)<=r.maxLoc).filter(i=>!e.isIgnored(i.relativePath)).filter(i=>!i.relativePath.endsWith(".d.ts")).filter(i=>G(i.relativePath)!=="test").filter(i=>!de(e,i.symbol,i.relativePath)).filter(i=>!fV(i.symbol)).filter(i=>!t.hasSuppressionComment(i))}function fm(e,t,n,r){return an(sn(e,t).forDefinitions(n,{semantic:r.semantic,sourceFallback:r.sourceFallback}))}function nV(e,t,n,r,i){let o=fm(e,t,n,{semantic:!1,sourceFallback:!1}),s=n.filter(l=>{let u=rc(e,l,o,r);return u.realConsumers.length<=1&&!(u.realConsumers.length>0&&pm(l.relativePath))}),a=i.semantic&&s.length>0?on(o,fm(e,t,s,{semantic:!0,sourceFallback:!1})):o,c=s.filter(l=>rc(e,l,a,r).realConsumers.length<=1);return on(a,fm(e,t,c,{semantic:!1,sourceFallback:!0}))}function rV(e){let t=new Map;for(let n of e){let r=t.get(n.relativePath);r||(r=new Map,t.set(n.relativePath,r));let i=T(n.symbol);i&&r.set(i,n)}return t}function rc(e,t,n,r){let o=[...n.get(t.symbolId)??new Set].filter(u=>u!==t.relativePath&&!e.isIgnored(u)),{realConsumers:s,barrelConsumers:a,importOnlyConsumers:c}=Ua(e,t,o),l=pV(e,t,n,r);return{definition:t,realConsumers:s,barrelConsumers:a+c,transitivelyReachable:l}}function iV(e,t){let n=CR(e,t.definition.relativePath,t.definition.startLine),r=pm(t.definition.relativePath)?!0:gV(e,t.definition),{confidence:i,reason:o}=hV(t.realConsumers.length,n,r),s=oV(t.realConsumers.length,n,r);return{symbol:t.definition.symbol,shortName:I(t.definition.symbol),file:t.definition.relativePath,startLine:t.definition.startLine,endLine:t.definition.endLine,loc:O(t.definition),consumers:t.realConsumers.length,barrelConsumers:t.barrelConsumers,kind:n,definerUsesType:r,confidence:i,reason:o,actionTier:s.actionTier,stalenessKind:s.stalenessKind,recommendation:s.recommendation}}function oV(e,t,n){return e===0?{actionTier:"direct",stalenessKind:"unused-abstraction",recommendation:"Delete the abstraction or wire the missing consumer after checking public/package surfaces."}:t==="class"?{actionTier:"signal",stalenessKind:"one-to-one-class-encapsulation",recommendation:"Treat as weak signal: a one-consumer class may be intentional encapsulation, so inline only after reviewing ownership and state boundaries."}:n?{actionTier:"signal",stalenessKind:"single-consumer-abstraction",recommendation:"Review whether this single-consumer abstraction earns its name or should be folded into the owning feature."}:{actionTier:"signal",stalenessKind:"misplaced-single-consumer-type",recommendation:"Review moving or co-locating the type with its only real consumer; keep it here only if this file owns the public contract."}}function sV(e,t,n,r,i){let o=cV(e,aV(n),r),s=o.map(l=>l.singleton);if(o.length===0)return new Set;let a=an(sn(e,t).forDefinitions(s,{semantic:i.semantic,sourceFallback:!0})),c=new Set;for(let{singleton:l,classId:u}of o)uV(e,l,a)&&c.add(u);return c}function aV(e){let t=new Map;for(let n of e){let r=T(n.symbol);r&&t.set(SR(n.relativePath,r),n)}return t}function cV(e,t,n){let r=[];for(let i of n){let o=lV(e,t,i);o&&r.push({singleton:o,classId:i.symbolId})}return r}function lV(e,t,n){if(CR(e,n.relativePath,n.startLine)!=="class")return null;let r=T(n.symbol);if(!r)return null;let i=dV(e,n.relativePath,r);return i?t.get(SR(n.relativePath,i))??null:null}function uV(e,t,n){let r=T(t.symbol),i=n.get(t.symbolId);return!r||!i?!1:[...i].some(o=>o!==t.relativePath&&!e.isIgnored(o)&&!Nd(e,o,r))}function SR(e,t){return`${e}\0${t}`}function dV(e,t,n){let r=k(e,t);if(!r)return null;let i=n.replace(/[.*+?^${}()|[\]\\]/g,"\\$&"),o=new RegExp(`\\bexport\\s+const\\s+([A-Za-z_$][\\w$]*)\\s*=\\s*new\\s+${i}\\s*\\(`);return r.match(o)?.[1]??null}function mV(e,t){return new Set(e.scopedDefinitions(t).filter(n=>n.isFunctionLike).map(n=>n.relativePath))}function fV(e){let t=ye(e);if("kind"in t)return!1;let n=t.descriptors;if(n.length<2)return!1;let r=n[n.length-1],i=n[n.length-2];return r?.suffix==="type"&&i?.suffix==="type"}function pm(e){let n=(e.split("/").pop()??"").replace(/\.[^.]+$/,"");return!!(n==="types"||n.endsWith("-types")||n==="models"||n==="schema"||n==="common"||n==="protocol"||n==="proto"||n==="dto"||n==="mod"||n==="contracts"||/(^|\/)types(\/|\.)/.test(e)||/(^|\/)models?(\/|\.)/.test(e)||/(^|\/)proto(?:col)?(\/|\.)/.test(e)||/(^|\/)schema(\/|\.)/.test(e)||/(^|\/)contracts?(\/|\.)/.test(e))}function bR(e,t,n){return!(pm(e.relativePath)&&t>0||t===0&&n.has(e.relativePath))}function pV(e,t,n,r){let i=Jc(e,t.relativePath),o=T(t.symbol);if(!o)return!1;let s=r.get(t.relativePath);if(!s)return!1;let a=[...i.get(o)??[]],c=new Set;for(;a.length>0;){let l=a.pop();if(c.has(l))continue;c.add(l);let u=s.get(l);if(!u)continue;let d=n.get(u.symbolId);if(d){for(let m of d)if(m!==t.relativePath&&!e.isIgnored(m))return!0}for(let m of i.get(l)??[])a.push(m)}return!1}function CR(e,t,n){let r=k(e,t);if(!r)return"other";let i=r.split(`
785
+ `),o=Math.max(0,n-2),s=Math.min(i.length-1,n+2);for(let a=o;a<=s;a++){let l=(i[a]??"").replace(/^\s*\/\/.*$/g,"");if(/\b(?:export\s+)?(?:abstract\s+)?class\s+\w/.test(l))return"class";if(/\b(?:export\s+)?interface\s+\w/.test(l))return"interface";if(/\b(?:export\s+)?type\s+\w/.test(l))return"type";if(/\b(?:export\s+)?(?:const\s+)?enum\s+\w/.test(l))return"enum"}return"other"}function gV(e,t){let n=k(e,t.relativePath);if(!n)return!1;let r=T(t.symbol);if(!r)return!1;let i=r.replace(/[.*+?^${}()|[\]\\]/g,"\\$&"),o=new RegExp(`\\b${i}\\b`),s=n.split(`
786
+ `);for(let a=0;a<s.length;a++)if(!(a>=t.startLine&&a<=t.endLine)&&o.test(s[a]??""))return!0;return!1}function hV(e,t,n){return e===0?{confidence:"high",reason:"unused \u2014 no consumers and defining file has no real usage"}:e===1&&t==="class"?{confidence:"low",reason:"1 consumer + class kind \u2014 likely 1:1 encapsulation, not over-abstraction"}:e===1&&!n?{confidence:"high",reason:"1 consumer + defining file never uses it \u2014 type belongs with its consumer"}:{confidence:"medium",reason:"1 consumer \u2014 single-use abstraction"}}import{basename as oi,extname as ic}from"path";function Lo(e,t){let{scope:n,maxLoc:r=15,limit:i=30,scanLimit:o}=t??{},s=new F(e),a=RV(s.fileDependencyGraph(n));return gt({candidates:()=>SV(e,s,n,r),orderCandidates:Fa,scanLimit:o,profile:{name:"wrapper-candidates"},prepare:c=>({callerFileMap:yV(e,s,c,{semantic:t?.semantic!==!1}),reverseFanIn:a}),evaluate:(c,l)=>bV(e,s,c,l),orderResults:(c,l)=>l.callerFanIn-c.callerFanIn||l.loc-c.loc,limit:i})}function yV(e,t,n,r){let i=sn(e,t),o=an(i.forDefinitions(n,{semantic:!1,sourceFallback:!1})),s=[];r.semantic&&E("wrapper.semantic-candidates",()=>{s=n.filter(m=>gm(e,t,m,o).length<=1)},()=>({symbols:n.length,semanticCandidates:s.length}));let a=s.length===0?new Map:an(i.forDefinitions(s,{semantic:!0,sourceFallback:!1})),c=a.size===0?o:on(o,a),l=new Map(n.map(m=>[m.symbolId,m])),u=new Map;for(let m of n){let f=gm(e,t,m,c);if(f.length>1||(u.set(m.symbolId,m),f.length!==1))continue;let p=f[0],g=xR(e,m.symbolId,p);if(!g)continue;let y=RR(t,e,p,m.symbol,g);y?.isFunctionLike&&l.has(y.symbolId)&&u.set(y.symbolId,l.get(y.symbolId))}let d=[...u.values()];return d.length===0?c:on(c,an(i.forDefinitions(d,{semantic:!1,sourceFallback:!0})))}function bV(e,t,n,r){let i=gm(e,t,n,r.callerFileMap);if(i.length!==1)return null;let o=i[0],s=xR(e,n.symbolId,o);if(!s)return null;let a=RR(t,e,o,n.symbol,s);if(a&&br(a.symbol))return null;let{fanIn:c,source:l}=CV(r.callerFileMap,r.reverseFanIn,o,a);if(l==="function"?c<=3:c<=5)return null;let u=IV(e,n,o,a);return{symbol:n.symbol,shortName:I(n.symbol),file:n.relativePath,startLine:n.startLine,endLine:n.endLine,loc:O(n),singleCaller:a?.symbol??"",singleCallerShort:a?.isFunctionLike?I(a.symbol):oi(o),callerFanIn:c,actionTier:u.length>0?"signal":"direct",boundaryEvidence:u}}function SV(e,t,n,r){return t.productionCallableDefinitions({scope:n,minLoc:2,maxLoc:r,requireFunctionLikeSymbol:!0,excludeRootedSymbols:!0,excludeRustTraitImplMembers:!0}).filter(i=>!hi(e,i))}function gm(e,t,n,r){let i=oi(n.relativePath,ic(n.relativePath)),o=[...r.get(n.symbolId)??[]].filter(s=>s!==n.relativePath).filter(s=>oi(s,ic(s))!==i).filter(s=>{let a=t.fileKind(s);return a!=="barrel"&&a!=="entry"&&a!=="test"});return Ua(e,n,o).realConsumers}function xR(e,t,n){return e.get(`SELECT c.start_line, c.end_line
787
+ FROM mentions m
788
+ JOIN chunks c ON m.chunk_id = c.id
789
+ JOIN documents d ON c.document_id = d.id
790
+ WHERE m.symbol_id = ? AND m.role != 1 AND d.relative_path = ?
791
+ LIMIT 1`,t,n)}function RR(e,t,n,r,i){let o=e.definitionsForFile(n),s=xV(t,n,r,i.start_line,i.end_line);return Dt(o,s)}function CV(e,t,n,r){if(r?.isFunctionLike){let i=[...e.get(r.symbolId)??[]].filter(o=>o!==r.relativePath);if(i.length>0)return{fanIn:i.length,source:"function"}}return{fanIn:vV(t,n),source:"file"}}function xV(e,t,n,r,i){let o=T(n);if(!o)return r;let s=Qt(e,t).get(o);if(!s||s.length===0)return r;for(let a of s)if(a>=r&&a<=i)return a;return r}function RV(e){let t=new Map;for(let[n,r]of e){t.has(n)||t.set(n,t.get(n)??0);for(let i of r)t.set(i,(t.get(i)??0)+1)}return t}function vV(e,t){let n=e.get(t)??0;if(n>0)return n;let r=oi(t,ic(t)),i=0;for(let[o,s]of e)o!==t&&oi(o,ic(o))===r&&s>i&&(i=s);return i}function IV(e,t,n,r){return nc(e,t.relativePath,t.startLine,"wrapper","explicit ignore-wrapper comment",[{label:"wrapper name",value:I(t.symbol)},{label:"caller name",value:r?.symbol?I(r.symbol):oi(n)},{label:"wrapper path",value:t.relativePath},{label:"caller path",value:n}])}var EV=25e3,DV=2500,PV=2500;function kV(e){let t=cr(e);return t.symbols>=EV||t.documents>=DV?PV:void 0}function hm(e,t={}){let{scope:n}=t,r=kV(e),i=[],o=lr(e,{scope:n,...me.dead,scanLimit:r});for(let s of o.symbols)De(e,s.relativePath)||de(e,s.symbol,s.relativePath)||s.kind==="dead-code"&&i.push(`dead:${s.relativePath}:${s.shortName}`);for(let s of fo(e,{scope:n,...me.isolated,scanLimit:r}))De(e,s.relativePath)||de(e,s.symbol,s.relativePath)||i.push(`isolated:${s.relativePath}:${s.shortName}`);for(let s of uo(e,{scope:n}))s.kind==="real"&&i.push(`cycle:${TV(s.path)}`);for(let s of po(e,{scope:n,...me.similar,scanLimit:r}))i.push(`similar:${[s.symbolA,s.symbolB].sort().join("|")}`);for(let s of Eo(e,{scope:n,...me.duplicateBodies,scanLimit:r}))i.push(`duplicate-bodies:${s.hash}:${s.functions.map(a=>a.symbol).sort().join("|")}`);for(let s of So(e,{scope:n,...me.extract,scanLimit:r}))i.push(`extract:${s.relativePath}:${s.shortName}`);for(let s of Lo(e,{scope:n,...me.wrappers,scanLimit:r}))i.push(`wrapper:${s.file}:${s.shortName}`);for(let s of To(e,{scope:n,...me.passthroughs,scanLimit:r}))i.push(`passthrough:${s.file}:${s.shortName}`);for(let s of _o(e,{scope:n,...me.stale,scanLimit:r}))i.push(`stale:${s.file}:${s.shortName}`);for(let s of ko(e,{scope:n,...me.drift,includePatternDeviations:!1,limit:Number.POSITIVE_INFINITY}).results)s.kind!=="architecture-violation"&&i.push(`drift:${s.kind}:${s.file}:${s.dep}`);return i.push(...Ma(ur(e,{scope:n}))),[...new Set(i.map(mm))].sort()}function TV(e){if(e.length===0)return"";let t=0;for(let n=1;n<e.length;n++)e[n]<e[t]&&(t=n);return[...e.slice(t),...e.slice(0,t)].join(">")}function FV(e,t={}){let n=hm(e,{scope:t.scope}),r=ii(e,t.path);return wV(r,JSON.stringify({version:1,findings:n},null,2)+`
792
+ `),{path:r,findingCount:n.length}}function ym(e,t={}){return tc(e,hm(e,{scope:t.scope}),{path:t.path})}function vR(e,t={}){let n=Ma(ur(e,{scope:t.scope}));return tc(e,n,{path:t.path,accept:r=>r.startsWith(Rt)})}var _V=5;function Sm(e,t={}){let{base:n="HEAD",minContainment:r=.7,minCallees:i=3,minSiteCoverage:o=.4,maxHelpers:s=Number.POSITIVE_INFINITY,limit:a=20,scanLimit:c}=t,l=t.semantic!==!1,u=t.diffPlan??An(e,{base:n}),d={available:u.note!==Ro,base:n,changedFiles:u.changedFiles,helpersChecked:0,skipped:[],findings:[]};if(!d.available||u.changedFiles.length===0)return d;let m=new F(e),f=new Set(u.changedFiles),p=new Map(u.renamedFiles.map(R=>[R.to,R.from])),g=t.baseContentAt??vo(e.config.projectRoot,n,Io(u)),y=jV(m,f,p,g);if(y.length===0)return d;let h=y.slice(0,s);y.length>s&&(d.note=`helper scoring capped at ${s} of ${y.length} new symbols`);let x=m.calleeMap(h,{semantic:l}),b=h.map(R=>({def:R,callees:ja((x.get(R.symbolId)??[]).map(D=>D.symbol))})),C=Xr(e),S,v=()=>(S??=C.calleeIndex({minCallees:Math.min(3,i),scanLimit:c,semantic:l}),S);for(let{def:R,callees:D}of b){let w=I(R.symbol);if(D.size<i){d.skipped.push({helperShortName:w,helperFile:R.relativePath,reason:`fewer than ${i} meaningful callees \u2014 too small to score`});continue}let P=v(),L=OV(D,P);if(L===0){d.skipped.push({helperShortName:w,helperFile:R.relativePath,reason:"helper callee pattern is all project-wide infrastructure \u2014 too generic to score"});continue}let re=BV(e,R.symbolId);if(re.length===0){d.skipped.push({helperShortName:w,helperFile:R.relativePath,reason:"no references yet \u2014 covered by the new-dead check"});continue}d.helpersChecked+=1;let Q=LV({candidateIndex:P,changed:f,helperCallees:D,helperFile:R.relativePath,helperSymbol:R.symbol,minContainment:r,minSiteCoverage:o,migratedFiles:re});Q.length!==0&&(Q.sort((_,ae)=>IR(ae.migrationScope)-IR(_.migrationScope)||ae.containment-_.containment||ae.siteCoverage-_.siteCoverage||_.file.localeCompare(ae.file)),d.findings.push({helperSymbol:R.symbol,helperShortName:w,helperFile:R.relativePath,helperShape:"specific-callee-cluster",helperCalleeCount:D.size,specificHelperCalleeCount:L,migratedFiles:re.sort(),leftovers:Q.slice(0,_V)}))}return d.findings.sort((R,D)=>(D.leftovers[0]?.containment??0)-(R.leftovers[0]?.containment??0)||R.helperFile.localeCompare(D.helperFile)),d.findings=d.findings.slice(0,a),d}function LV(e){let t=[],n=NV(e.helperSymbol,e.helperFile,e.migratedFiles),r=new Set;for(let i of e.helperCallees)for(let o of e.candidateIndex.candidateIndexesByCallee.get(i)??[])r.add(o);for(let i of r){let o=e.candidateIndex.corpus[i];if(o.symbol===e.helperSymbol||e.changed.has(o.file)||o.callees.has(e.helperSymbol))continue;let s=bC(e.helperCallees,o.callees);if(s<e.minContainment)continue;let a=[...e.helperCallees].filter(u=>o.callees.has(u)),c=o.callees.size===0?0:a.length/o.callees.size;if(c<e.minSiteCoverage||!a.some(u=>(e.candidateIndex.docFreq.get(u)??0)<=e.candidateIndex.ubiquityThreshold))continue;let l=AV(n,o.symbol,o.file);t.push({symbol:o.symbol,shortName:I(o.symbol),file:o.file,...l,containment:s,siteCoverage:c,uniqueSiteCalleeCount:Math.max(0,o.callees.size-a.length),sharedCallees:a.map(I).sort()})}return t}function IR(e){return e==="same-scope"?2:e==="unknown"?1:0}function NV(e,t,n){let r=new Set([...bm(t),...Cm(T(e))]);for(let i of n)for(let o of bm(i))r.add(o);return r}function AV(e,t,n){let r=new Set([...bm(n),...Cm(T(t))]);if(e.size===0||r.size===0)return{migrationScope:"unknown",migrationScopeReasons:["insufficient path/name tokens to infer migration scope"]};let i=[...r].filter(o=>e.has(o)).sort();return i.length>0?{migrationScope:"same-scope",migrationScopeReasons:[`shares migration-scope token(s): ${i.slice(0,5).join(", ")}`]}:{migrationScope:"possible-subtype",migrationScopeReasons:["no path/name tokens shared with the helper or already migrated files"]}}var MV=new Set(["app","apps","common","component","components","helper","helpers","index","lib","package","packages","page","pages","route","routes","service","services","shared","spec","src","test","tests","util","utils"]);function bm(e){return Cm(e.replace(/\.[^.]+$/,""))}function Cm(e){return e.replace(/([a-z0-9])([A-Z])/g,"$1 $2").toLowerCase().split(/[^a-z0-9]+/).filter(t=>t.length>1&&!MV.has(t))}function OV(e,t){let n=0;for(let r of e)(t.docFreq.get(r)??0)<=t.ubiquityThreshold&&(n+=1);return n}function jV(e,t,n,r){return e.productionCallableDefinitions({files:[...t],requireFunctionLikeSymbol:!0}).filter(i=>{if(!t.has(i.relativePath))return!1;let o=n.get(i.relativePath)??i.relativePath,s=r(o);return s===null||!new RegExp(`\\b${$(i.leaf)}\\b`).test(s)})}function BV(e,t){return e.all(`SELECT DISTINCT ref_d.relative_path
793
+ FROM mentions m
794
+ JOIN chunks c ON m.chunk_id = c.id
795
+ JOIN documents ref_d ON c.document_id = ref_d.id
796
+ WHERE m.symbol_id = ?
797
+ AND m.role != 1
798
+ ${e.pathExclusionsFor("ref_d")}`,t).map(r=>r.relative_path)}function xm(e,t={}){let{scope:n,limit:r=30,scanLimit:i}=t,o=new F(e);return gt({candidates:()=>o.productionCallableDefinitions({scope:n,files:t.files,minLoc:2,excludeRootedSymbols:!0,requireFunctionLikeSymbol:!0}),filterCandidate:s=>$V(s.relativePath),scanLimit:i,profile:{name:"unused-params"},evaluate:s=>{let a=z(e,s.relativePath)?.callables.find(u=>u.startLine===s.startLine&&u.endLine===s.endLine);if(!a||a.params.length===0||a.params.some(u=>!u.simple)||a.paramsEndLine>=a.endLine)return null;let c=Qt(e,s.relativePath),l=[];for(let u=a.params.length-1;u>=0;u--){let d=a.params[u];if(d.name===""||d.name.startsWith("_")||HV(c.get(d.name),a.paramsEndLine,a.endLine))break;l.unshift(d.name)}return l.length===0?null:{symbol:s.symbol,shortName:I(s.symbol),file:s.relativePath,startLine:s.startLine,endLine:s.endLine,paramCount:a.paramCount,unusedTrailing:l}},orderResults:(s,a)=>a.unusedTrailing.length-s.unusedTrailing.length||s.file.localeCompare(a.file)||s.startLine-a.startLine,limit:r})}function $V(e){let t=M(e);return t==="typescript"||t==="tsx"||t==="javascript"}function HV(e,t,n){return e?e.some(r=>r>t&&r<=n):!1}import{existsSync as UV,mkdirSync as WV,readdirSync as GV,readFileSync as zV,writeFileSync as VV}from"fs";import{createHash as qV}from"crypto";import{join as oc}from"path";var No=oc(".scipquery","suppressions");function wR(e){return oc(e,No)}function KV(e){if(e.id&&e.id.trim()!=="")return`${e.id.trim()}.json`;let t=`${e.check??""}\0${e.file??""}`;return`CHECK-${qV("sha256").update(t).digest("hex").slice(0,12).toUpperCase()}.json`}function vde(e,t,n=new Date){if(!t.reason||t.reason.trim()==="")throw new Error("suppression requires a non-empty reason");if(!t.id&&!t.check)throw new Error("suppression requires an id or a check");let r=wR(e);WV(r,{recursive:!0});let i=oc(r,KV(t)),o={...t,createdAt:t.createdAt??n.toISOString()};return VV(i,JSON.stringify(o,null,2)+`
799
+ `),{path:i}}function ER(e){let t=wR(e);if(!UV(t))return{suppressions:[],warnings:[]};let n=[],r=[];for(let i of GV(t).sort()){if(!i.endsWith(".json"))continue;let o=oc(t,i),s;try{s=JSON.parse(zV(o,"utf-8"))}catch{r.push(`${No}/${i}: malformed JSON \u2014 ignored`);continue}if(typeof s!="object"||s===null||Array.isArray(s)){r.push(`${No}/${i}: not a suppression object \u2014 ignored`);continue}let a=s;if(typeof a.reason!="string"||a.reason.trim()===""){r.push(`${No}/${i}: missing reason \u2014 ignored`);continue}if(!a.id&&!a.check){r.push(`${No}/${i}: needs an id or a check \u2014 ignored`);continue}n.push(a)}return{suppressions:n,warnings:r}}var YV=["echo","incomplete-migration","co-change-partner","twin-partner","coverage-contract","architecture","doc-reference","unused-params","new-dead","baseline"];function XV(e,t={}){let n=t.base??"HEAD",{minTogether:r=6,minConfidence:i=.6,maxEchoChecks:o=Number.POSITIVE_INFINITY,maxHelpers:s=Number.POSITIVE_INFINITY,minSimilarity:a=.8,includeBaseline:c=!1,scanLimit:l}=t,u=t.semantic!==!1,d=t.historyMode??"bounded",m=new Set(t.skip??[]),f=An(e,{base:n}),p=ei(e,{base:n,plan:f}),g=p.changedFiles,y=new Set(g),h=new Set(f.changedFileLines),x=new Set([...y,...h]),b=vo(e.config.projectRoot,n,Io(f,g)),C=Eq(e.config.projectRoot,n,f,b),S={base:n,changedFiles:g,changedSymbols:p.changedSymbols.length,checksRun:[],skipped:[],suppressed:[],findings:[],attributionNotes:p.attributionNotes,rootCauseGroups:[],note:p.summary.note};if(g.length===0)return S;let v=(R,D)=>{if(m.has(R)){S.skipped.push({check:R,reason:"skipped via --skip"});return}let w=S.findings.length,P=S.skipped.length,L=S.checksRun.length;E(`diff-gate.check.${R}`,D,()=>({check:R,changedFiles:g.length,changedSymbols:p.changedSymbols.length,findingsAdded:S.findings.length-w,skippedAdded:S.skipped.length-P,checksRunAdded:S.checksRun.length-L}))};return v("echo",()=>rq(e,p.changedSymbols,y,C,o,a,l,u,S)),v("incomplete-migration",()=>lq(e,n,f,s,l,u,b,S)),v("co-change-partner",()=>uq(e,x,r,i,d,S)),v("twin-partner",()=>dq(e,p.changedSymbols,y,l,S)),v("coverage-contract",()=>mq(e,x,S)),v("architecture",()=>kq(e,S)),v("doc-reference",()=>yq(e,y,h,f.changedRanges,f.renamedFiles,S)),v("unused-params",()=>xq(e,g,S)),v("new-dead",()=>Rq(e,p.changedSymbols,C,S)),c&&v("baseline",()=>Pq(e,S)),tq(S,[...e.config.suppressions??[],...ER(e.config.projectRoot).suppressions]),S.rootCauseGroups=eq(S.findings),S}function QV(e){return e.checksRun.length===0&&e.note===Ro}function ZV(e){return e.filter(t=>!t.advisory)}function eq(e){let t=new Map;for(let n of e){let r=n.groupKey??`${n.check}:${n.id}`,i=t.get(r);i||(i={groupKey:r,check:n.check,severity:n.severity,actionTier:n.actionTier,sourceAnalyzer:n.sourceAnalyzer,rootCauseKey:n.rootCauseKey,count:0,findingIds:[],files:new Set,relatedFiles:new Set,message:n.message,remediation:n.remediation},t.set(r,i)),i.count+=1,i.findingIds.push(n.id),i.severity=_R(i.severity,n.severity),i.actionTier=LR(i.actionTier,n.actionTier),n.file&&i.files.add(n.file);for(let o of n.relatedFiles??[])i.relatedFiles.add(o)}return[...t.values()].map(n=>({...n,files:[...n.files].sort(),relatedFiles:[...n.relatedFiles].sort()})).sort((n,r)=>r.count-n.count||sc(r.severity)-sc(n.severity)||n.groupKey.localeCompare(r.groupKey))}function _R(e,t){return sc(t)>sc(e)?t:e}function sc(e){return e==="error"?2:e==="warning"?1:0}function LR(e,t){return e?t&&DR(t)>DR(e)?t:e:t}function DR(e){return e==="direct"?2:e==="signal"?1:0}function tq(e,t){if(t.length===0||e.findings.length===0)return;let n=[];for(let r of e.findings){let i=t.find(o=>nq(o,r));i?e.suppressed.push({finding:r,suppression:i}):n.push(r)}e.findings=n}function nq(e,t){return!e.reason||e.reason.trim()===""||e.expiresAt&&Date.parse(e.expiresAt)<=Date.now()||e.id&&e.id!==t.id&&!t.legacySuppressionIds?.includes(e.id)||e.check&&e.check!==t.check||e.file&&e.file!==t.file?!1:!!(e.id||e.check)}function Bt(e,t){e.findings.push({...t,suppressionHint:`scip-query: ignore ${t.check} ${t.id} -- <reason>`})}function rq(e,t,n,r,i,o,s,a,c){c.checksRun.push("echo");for(let l of t.slice(0,i)){if(!le(l.symbol)||r(l))continue;let u=cm(e,l.symbol,{maxLoc:15,scanLimit:s}).filter(h=>!n.has(h.file)).slice(0,5).map(h=>({otherFile:h.file,otherShort:h.shortName,otherSymbol:h.symbol,similarity:1,similarityBasis:"exact-body",sharedEvidence:[`exact normalized body (${h.loc} LOC)`]}));if(u.length>0){let h=ve("echo",l.symbol,l.file),x=ve("echo",l.symbol,l.file,...u.map(C=>`${C.otherSymbol}|${C.otherFile}`).sort()),b=u[0];Bt(c,{id:h,legacySuppressionIds:x===h?void 0:[x],groupKey:h,actionTier:"direct",check:"echo",severity:"warning",evidence:"heuristic",confidence:1,file:l.file,symbol:l.symbol,relatedFiles:[...new Set(u.map(C=>C.otherFile))].sort(),sourceAnalyzer:"duplicate-bodies",rootCauseKey:`${l.symbol}:${b.otherSymbol}`,message:kR(l,u),why:TR(l,u),remediation:FR("direct",l.shortName,b.otherShort)});continue}let d=Oa(e,l.symbol,{minSimilarity:o,limit:5,scanLimit:s,semantic:a,sourceCandidateMode:"target-pruned"}),m=[];for(let h of d){let x=h.fileA===l.file?h.fileB:h.fileA,b=h.fileA===l.file?h.shortNameB:h.shortNameA,C=h.fileA===l.file?h.symbolB:h.symbolA;n.has(x)||m.push({otherFile:x,otherShort:b,otherSymbol:C,similarity:h.similarity,similarityBasis:h.similarityBasis??"callees",sharedEvidence:h.sharedCallees})}if(m.length===0)continue;let f=m[0],p=ve("echo",l.symbol,l.file,...m.map(h=>`${h.otherSymbol}|${h.otherFile}`).sort()),g=ve("echo",l.symbol,l.file),y=iq(l,m);Bt(c,{id:g,legacySuppressionIds:p===g?void 0:[p],groupKey:g,actionTier:y,check:"echo",severity:"warning",evidence:"heuristic",confidence:f.similarity,file:l.file,symbol:l.symbol,relatedFiles:[...new Set(m.map(h=>h.otherFile))].sort(),message:kR(l,m),why:TR(l,m),remediation:FR(y,l.shortName,f.otherShort)})}t.length>i&&c.skipped.push({check:"echo",reason:`echo check capped at ${i} of ${t.length} changed symbols`})}function iq(e,t){return t.some(r=>oq(e.symbol,r))?"direct":"signal"}function oq(e,t){if(t.similarityBasis==="exact-body")return!0;if(t.similarityBasis!=="source-tokens"||t.similarity<.98||t.sharedEvidence.length>8)return!1;let n=T(e),r=T(t.otherSymbol);return!n||!r?!1:n===r?!0:cq(t.sharedEvidence)?!1:sq(n,r)}function sq(e,t){let n=PR(e),r=PR(t);if(n.length===0||r.length===0)return!1;let i=new Set(r),o=n.filter(s=>i.has(s)).length;return o>=2&&o/Math.min(n.length,r.length)>=.5}function PR(e){return e.replace(/([a-z0-9])([A-Z])/g,"$1 $2").split(/[^A-Za-z0-9]+/).map(t=>t.toLowerCase()).filter(t=>t.length>=2)}var aq=new Set(["bytes","crypto","hex","num","random","secret","to","token"]);function cq(e){return e.length>=3&&e.every(t=>aq.has(t.toLowerCase()))}function kR(e,t){let n=t[0],r=Math.round(n.similarity*100);return t.length===1?`${e.shortName} (${e.file}) is ${r}% similar to established ${n.otherShort} (${n.otherFile})`:`${e.shortName} (${e.file}) resembles ${t.length} established symbol(s); strongest is ${r}% similar to ${n.otherShort} (${n.otherFile})`}function TR(e,t){let n=[`${e.shortName} was changed in this diff.`];for(let r of t.slice(0,3))n.push(`${r.otherShort} is outside this diff and scored ${Math.round(r.similarity*100)}% similar by ${r.similarityBasis} evidence.`),n.push(`Shared evidence: ${r.sharedEvidence.slice(0,5).join(", ")||"(none listed)"}.`);return t.length>3&&n.push(`${t.length-3} additional similar match(es) grouped into this finding.`),n}function FR(e,t,n){return e==="direct"?`Extract or reuse the shared behavior with ${n}, or keep the duplicate with a suppression reason.`:`Review whether ${t} is intentionally parallel to the established implementation(s); extract shared behavior only if the product semantics match.`}function lq(e,t,n,r,i,o,s,a){let c=Sm(e,{base:t,maxHelpers:r,diffPlan:n,scanLimit:i,semantic:o,baseContentAt:s});if(!c.available){a.skipped.push({check:"incomplete-migration",reason:"no git history"});return}a.checksRun.push("incomplete-migration"),c.note&&a.skipped.push({check:"incomplete-migration",reason:c.note});for(let l of c.findings){let u=l.leftovers.map(h=>`${h.shortName} (${h.file}, ${Math.round(h.containment*100)}% helper / ${Math.round(h.siteCoverage*100)}% site, ${h.migrationScope})`).join(", "),d=l.leftovers.map(h=>`${h.shortName}: ${h.migrationScope} (${h.migrationScopeReasons[0]})`).join("; "),m=[...l.migratedFiles,...l.leftovers.map(h=>h.file)],f=l.leftovers.length===0?void 0:Math.max(...l.leftovers.map(h=>Math.min(h.containment,h.siteCoverage))),p=l.leftovers.some(h=>h.migrationScope==="possible-subtype"),g=ve("incomplete-migration",l.helperSymbol,l.helperFile,m.join("|")),y=ve("incomplete-migration",l.helperSymbol,l.helperFile);Bt(a,{id:y,legacySuppressionIds:g===y?void 0:[g],check:"incomplete-migration",severity:"warning",evidence:"heuristic",confidence:f,file:l.helperFile,symbol:l.helperSymbol,relatedFiles:m,message:`new helper ${l.helperShortName} (${l.helperFile}) is wired into ${l.migratedFiles.length} file(s), but ${l.leftovers.length} similar un-migrated site(s) remain: ${u}`,why:[`${l.helperShortName} is new in this diff and already referenced by ${l.migratedFiles.join(", ")}.`,`Helper shape: ${l.helperShape}; ${l.specificHelperCalleeCount}/${l.helperCalleeCount} helper callees are specific enough to score.`,`Unchanged site(s) still contain the helper's callee pattern: ${u}.`,`Migration scope hints: ${d}.`],remediation:p?`Migrate same-scope sites to ${l.helperShortName}; review possible subtype/variant sites before applying the helper.`:`Migrate the remaining sites to ${l.helperShortName}, or confirm they are intentionally different.`})}}function uq(e,t,n,r,i,o){let s=ze(e,{historyMode:i}).directionalCoChangePairsForFiles(t,{minTogether:n,minConfidence:0,maxFilesPerCommit:20});if(!s){o.skipped.push({check:"co-change-partner",reason:"no git history"});return}o.checksRun.push("co-change-partner");let a=new Set,c;for(let l of s){let u=t.has(l.fileA),d=t.has(l.fileB);if(u===d)continue;let m=u?l.fileA:l.fileB,f=u?l.fileB:l.fileA,p=u?l.changesA:l.changesB,g=p>0?l.together/p:0;if(g<r||Jd(f)||Jd(m)||!ac(`${e.config.projectRoot}/${f}`))continue;let y=`${m}|${f}`;if(a.has(y))continue;a.add(y);let h=ve("co-change-partner",m,f,String(l.together)),x=ve("co-change-partner",m,f),b=Yd(m,f),C=Xd({fileA:m,fileB:f,together:l.together,confidence:g,commitScope:l.commitScope,recency:l.recency,subjectContext:l.subjectContext},b,(c??=Qd(e))(m,f)),S=[m,f].sort().join("|");o.findings.push({id:x,legacySuppressionIds:h===x?void 0:[h],check:"co-change-partner",severity:"warning",evidence:"change-graph",actionTier:"signal",groupKey:`co-change-partner:${S}`,confidence:g,file:m,relatedFiles:[f],sourceAnalyzer:"co-change",rootCauseKey:S,partnerClass:b.partnerClass,partnerClassReasons:b.reasons,commitScope:l.commitScope,recency:l.recency,focusedTogether:l.focusedTogether,broadTogether:l.broadTogether,broadCommitRatio:l.broadCommitRatio,lastTogetherAt:l.lastTogetherAt,recentTogether:l.recentTogether,subjectContext:l.subjectContext,...C?{declaredCouplingSuggestion:C}:{},message:`${m} changed, but ${f} did not \u2014 they change together ${l.together}x (${Math.round(g*100)}% of the time)`,why:[`${m} is in this diff and ${f} is not.`,`Git history shows ${l.together} co-change(s), which is ${Math.round(g*100)}% of changes to the edited side.`,`History context: ${fq(l)}.`,`Subject context: ${pq(l.subjectContext)}.`,...gq(l),`Partner class: ${b.partnerClass} (${b.reasons.join("; ")}).`],remediation:C?`Update ${f} alongside this change, declare the coupling "${C.name}", or confirm the coupling no longer holds.`:`Update ${f} alongside this change, or confirm the coupling no longer holds.`})}}function dq(e,t,n,r,i){i.checksRun.push("twin-partner");let o=ri(e,{scanLimit:r}).filter(c=>c.relationship==="divergent"||c.relationship==="identical");if(o.length===0)return;let s=new Map;for(let c of o)for(let l of c.members)s.set(l.symbol,c);let a=new Set;for(let c of t){if(!le(c.symbol))continue;let l=s.get(c.symbol);if(!l)continue;let u=l.members.filter(p=>p.symbol!==c.symbol&&!n.has(p.file));if(u.length===0)continue;let d=[c.symbol,...u.map(p=>p.symbol)].sort().join("|");if(a.has(d))continue;a.add(d);let m=u[0],f=ve("twin-partner",c.symbol,c.file,m.symbol);Bt(i,{id:f,groupKey:`twin-partner:${d}`,check:"twin-partner",severity:"warning",evidence:"heuristic",actionTier:"signal",advisory:!0,confidence:l.relationship==="identical"?1:Math.max(0,1-l.maxDivergence),file:c.file,symbol:c.symbol,relatedFiles:u.map(p=>p.file).sort(),sourceAnalyzer:"twin-drift",rootCauseKey:d,message:`${c.shortName} (${c.file}) changed but its same-name twin ${m.shortName} (${m.file}) did not \u2014 verify the change shouldn't apply to both, or consolidate them.`,why:[`${c.symbol} is in this diff.`,`${m.symbol} shares its (near-)name and is classified '${l.relationship}' with it, but ${m.file} is not in this diff.`,l.relationship==="divergent"?`The two bodies already diverge (~${Math.round(l.maxDivergence*100)}% token difference) \u2014 this diff may widen or narrow that drift.`:"The two bodies were byte-identical before this diff.","Advisory: twin-partner never fails the gate by itself \u2014 see the twin-partner entry in the diff-gate checks table."],remediation:`Update ${m.file} alongside this change, consolidate ${c.shortName}/${m.shortName} into one helper, or confirm the twin should diverge on purpose.`})}}function mq(e,t,n){n.checksRun.push("coverage-contract");let r=e.config.coverageContracts??[];for(let i of r){if(!lR(i,t))continue;let o=dm(e,i);if(o.status==="ok")continue;let s=ve("coverage-contract",i.name,i.file);Bt(n,{id:s,groupKey:`coverage-contract:${i.name}`,check:"coverage-contract",severity:o.status==="unavailable"?"warning":"error",evidence:"graph-fact",actionTier:"direct",file:i.file,sourceAnalyzer:"coverage-contracts",rootCauseKey:i.name,message:uR(o),why:[`Contract "${i.name}" declares that ${i.file} (${i.keys.type}) must track ${i.mustEqual.type}.`,o.status==="unavailable"?`The declared side could not be evaluated: ${o.unavailableReason}.`:`Missing: ${o.missing.join(", ")||"none"}. Extra: ${o.extra.join(", ")||"none"}.`,"Either side of this contract changed in this diff."],remediation:o.status==="unavailable"?"Investigate why the declared key set could not be parsed (see the reason above) \u2014 do not treat this as a pass.":`Update ${i.file} so its ${i.keys.type==="object-literal-keys"||i.keys.type==="string-array"?i.keys.identifier:i.keys.marker} matches ${i.mustEqual.type}, or fix the ground-truth source if the declared set is right.`})}}function fq(e){return`${e.commitScope}/${e.recency}; ${e.focusedTogether} focused, ${e.broadTogether} broad-sweep (${Math.round(e.broadCommitRatio*100)}% broad), ${e.recentTogether} recent, last ${hq(e.lastTogetherAt)}`}function pq(e){let t=e.subjectLabels.length>0?e.subjectLabels.slice(0,5).join(", "):"none inferred",n=e.issueRefs.length>0?e.issueRefs.slice(0,5).join(", "):"none",r=e.sampleSubjects.length>0?e.sampleSubjects.slice(0,3).map(i=>`"${i}"`).join("; "):"none";return`labels ${t}; refs ${n}; samples ${r}; external issue/PR labels ${e.externalIssueLabelStatus}`}function gq(e){let t=[];return e.commitScope==="broad-sweep"&&t.push("Broad-sweep history is weaker than focused co-edits; confirm this is a real coordination contract."),e.recency==="stale"&&t.push("The pair has no co-change in the recent history window; confirm the coupling still holds."),t}function hq(e){return e<=0?"unknown":new Date(e*1e3).toISOString().slice(0,10)}var Rm=3;function yq(e,t,n,r,i,o){o.checksRun.push("doc-reference");let s=cn.referenceTargets(e,t,r);if(s.size===0)return;let a=new Set(i.map(l=>l.from)),c=[];for(let l of $x(e,s))n.has(l.doc)||Qa(e,l.doc)||c.push(bq(e,l,a));for(let l of Sq(c))Bt(o,l)}function bq(e,t,n){let r=t.citedClaims.length>0?t.citedClaims:cn.citationContexts(e,t.doc,t.cited),i=cn.classifyCitation(r),o=cn.hasLineAnchoredCitation(t.citations),s=t.cited.some(d=>n.has(d)||!ac(`${e.config.projectRoot}/${d}`)),a=!(o||s),c=t.cited[0]??"",l=ve("doc-reference",t.doc,t.cited.join("|")),u=ve("doc-reference",t.doc,c);return{id:u,legacySuppressionIds:l===u?void 0:[l],check:"doc-reference",severity:"warning",evidence:"change-graph",actionTier:i.actionTier,groupKey:`doc-reference:${c}`,rootCauseKey:c,confidence:1,file:t.doc,relatedFiles:t.cited,citationKind:i.citationKind,citationKindReasons:i.reasons,citedClaims:r,...a?{advisory:!0}:{},message:`${t.doc} cites ${t.cited.join(", ")} as ${cn.citationKindLabel(i.citationKind)} \u2014 changed in this diff, doc untouched`,why:[`${t.cited.join(", ")} changed in this diff.`,`${t.doc} cites the changed file(s) but was not updated in the same diff.`,...i.reasons.map(d=>`Citation kind evidence: ${d}`),a?"Advisory: bare file-mention citation (no line anchor, cited file still present under the same path) \u2014 21.2 calibration found this citation shape low-precision; verify at your leisure.":o?"Blocking: citation includes a line anchor that may now point at the wrong lines.":"Blocking: the cited file was deleted or renamed in this diff \u2014 the citation almost certainly needs an update."],remediation:cn.citationRemediation(i.citationKind,t.doc)}}function Sq(e){let t=new Map;for(let r of e){let i=r.rootCauseKey??"",o=t.get(i);o?o.push(r):t.set(i,[r])}let n=[];for(let[r,i]of t)i.length<=Rm?n.push(...i):n.push(Cq(r,i));return n}function Cq(e,t){let n=[...t].sort((u,d)=>(u.file??"").localeCompare(d.file??"")),r=n.slice(0,Rm).map(u=>({doc:u.file??"",citedClaims:u.citedClaims??[]})),i=n.length-r.length,o=n.every(u=>u.advisory===!0),s=n.reduce((u,d)=>_R(u,d.severity),"info"),a=n.reduce((u,d)=>LR(u,d.actionTier),void 0),c=n.map(u=>u.file??"").filter(u=>u.length>0),l=[...new Set(n.flatMap(u=>[u.id,...u.legacySuppressionIds??[]]))];return{id:ve("doc-reference","hub-cluster",e),memberFindingIds:l,check:"doc-reference",severity:s,evidence:"change-graph",actionTier:a,groupKey:`doc-reference:${e}`,rootCauseKey:e,confidence:1,file:r[0]?.doc,relatedFiles:[e],citationCount:n.length,citationExemplars:r,suppressedCount:i,...o?{advisory:!0}:{},message:`${e} is cited by ${n.length} doc(s) changed in this diff, doc(s) untouched \u2014 showing ${r.length} example(s), ${i} more damped`,why:[`${e} changed in this diff.`,`${n.length} doc(s) cite it but were not updated in the same diff: ${c.join(", ")}.`,...r.map(u=>`Example \u2014 ${u.doc}: ${u.citedClaims[0]??"(no captured citation text)"}`),`${i} additional doc(s) also cite this file, past the per-hub-file cascade cap (${Rm}) \u2014 not silently dropped: counted in citationCount/suppressedCount and individually addressable via memberFindingIds.`,o?"Advisory: every citation in this cluster is a bare file-mention (no line anchor, cited file still present).":"Blocking: at least one citation in this cluster is line-anchored or cites a deleted/renamed file."],remediation:`Review the ${r.length} example doc(s) above; ${n.length} total doc(s) cite ${e} the same way \u2014 see citationExemplars and memberFindingIds in --json for the complete list.`}}function xq(e,t,n){n.checksRun.push("unused-params");for(let r of xm(e,{files:t,limit:50})){let i=ve("unused-params",r.symbol,r.file,r.unusedTrailing.join("|")),o=ve("unused-params",r.symbol,r.file);Bt(n,{id:o,legacySuppressionIds:i===o?void 0:[i],check:"unused-params",severity:"warning",evidence:"heuristic",confidence:.85,file:r.file,startLine:r.startLine,endLine:r.endLine,symbol:r.symbol,message:`${r.shortName} (${r.file}) has trailing unused parameter(s): ${r.unusedTrailing.join(", ")}`,why:[`${r.shortName} is in a changed file.`,`The trailing parameter(s) ${r.unusedTrailing.join(", ")} are not referenced in the function body.`],remediation:"Drop the unused trailing parameters and their call-site arguments."})}}function Rq(e,t,n,r){r.checksRun.push("new-dead");let i=new F(e),o=Ir(e.config.projectRoot),s=o.length>1;for(let a of t){if(n(a)||a.fanIn>0||i.fileKind(a.file)==="test"||De(e,a.file)||de(e,a.symbol,a.file)||wq(a.symbol))continue;let c=ve("new-dead",a.symbol,a.file),l=s&&vq(o,a.file)&&Iq(e,a.symbol);Bt(r,{id:c,check:"new-dead",severity:"warning",evidence:l?"heuristic":"graph-fact",confidence:l?.4:.9,file:a.file,symbol:a.symbol,message:l?`${a.shortName} (${a.file}) unconfirmed (cross-package ambiguous-name resolution gap): zero indexed consumers found, but this name is ambiguous project-wide and lives in a workspace package \u2014 verify manually before treating as dead`:`${a.shortName} (${a.file}) was changed but has zero indexed consumers`,why:l?[`${a.shortName} is a changed production symbol in a workspace package.`,"The index, semantic, and source-fallback layers all report zero consumers for this symbol.","Its leaf name is ambiguous project-wide (a same-named definition exists elsewhere), and cross-package consumers reached only through a re-exporting barrel are a known unresolvable shape for this tool \u2014 see docs/plans/2026-07-02-followups.md item 2."]:[`${a.shortName} is a changed production symbol.`,"The index reports zero consumers for this symbol.","The symbol is not in a detected entry surface or configured live root."],remediation:l?"Verify with a direct code search before deleting; this tool cannot confidently resolve this symbol.":"Wire it up, or remove it before it becomes permanent dead code."})}}function vq(e,t){return e.some(n=>t===n.relativeDir||t.startsWith(`${n.relativeDir}/`))}function Iq(e,t){let n=T(t);return n?(Zt(e).get(n)?.length??0)>1:!1}function wq(e){if(ue(e)!=="type")return!1;let t=T(e);return t.startsWith("_Assert")||t.startsWith("Assert")}function Eq(e,t,n,r){let i=new Map(n.renamedFiles.map(s=>[s.to,s.from])),o=r??vo(e,t,Io(n));return s=>{let a=i.get(s.file)??s.file,c=T(s.symbol);if(!c)return!1;let l=o(a);return l!==null&&Dq(l,c)}}function Dq(e,t){return new RegExp(`\\b${$(t)}\\b`).test(e)}function Pq(e,t){if(!ac(ii(e))){t.skipped.push({check:"baseline",reason:"no .scipquery-baseline.json \u2014 run health --write-baseline to enable"});return}t.checksRun.push("baseline");let n=ym(e);for(let r of n.newFindings.filter(i=>!i.startsWith(Rt))){let i=rm(r),o=ve("baseline",r);Bt(t,{id:o,groupKey:`baseline:${i.sourceAnalyzer}:${i.rootCauseKey}`,check:"baseline",severity:"error",evidence:"baseline",actionTier:i.actionTier,confidence:1,file:i.file,relatedFiles:i.relatedFiles.length>0?i.relatedFiles:void 0,sourceAnalyzer:i.sourceAnalyzer,rootCauseKey:i.rootCauseKey,message:`new ${i.label} vs committed baseline: ${r}`,why:["A committed health baseline exists.","The current health result contains a finding not present in that baseline.",`Underlying analyzer: ${i.sourceAnalyzer}.`,`Inherited action tier: ${i.actionTier}.`,`Root cause key: ${i.rootCauseKey}.`,...i.why],remediation:i.remediation})}}function kq(e,t){if(!pC(e.config.architecture)){t.skipped.push({check:"architecture",reason:"no closed architecture dependency rows, requireCompletePolicy rule, or requireAcyclic rule configured"});return}if(!ac(ii(e))){t.skipped.push({check:"architecture",reason:"no .scipquery-baseline.json \u2014 run health --write-baseline to enable"});return}t.checksRun.push("architecture");let n=vR(e);for(let r of n.newFindings){let i=rm(r),o=ve("architecture",r);Bt(t,{id:o,groupKey:`architecture:${i.rootCauseKey}`,check:"architecture",severity:"error",evidence:"baseline",actionTier:"direct",confidence:1,sourceAnalyzer:"architecture",rootCauseKey:i.rootCauseKey,message:`new ${i.label} vs committed baseline: ${r}`,why:["The project declares an enforceable architecture rule.","The current boundary graph contains a violation not present in the committed baseline.",...i.why],remediation:i.remediation})}}function ve(e,...t){return`SQ${JV("sha256").update([e,...t].join("\0")).digest("hex").slice(0,12).toUpperCase()}`}import{dirname as Tq,relative as Fq,resolve as _q}from"path";var Lq=new Set(Nt());function Nq(e,t){return`tests/generated/twin-ab/${NR(e)}-vs-${NR(t)}.test.ts`}function NR(e){return(e.split(/[/#]/).pop()||e).replace(/[^A-Za-z0-9_-]+/g,"-").replace(/^-+|-+$/g,"")||"symbol"}function Aq(e,t,n,r){let i=AR(e,t);if(!i.ok)return i;let o=AR(e,n);if(!o.ok)return o;let s=i.symbol.paramCount===null||o.symbol.paramCount===null?null:i.symbol.paramCount===o.symbol.paramCount,a=Oq(i.symbol,o.symbol,e.config.projectRoot,r,s);return{ok:!0,a:i.symbol,b:o.symbol,signatureCompatible:s,testSource:a}}function AR(e,t){let r=wi(e,t).match;if(!r)return{ok:!1,reason:`${t} does not resolve to an indexed symbol.`};let o=e.get("SELECT kind FROM global_symbols WHERE id = ?",r.symbolId)?.kind??null;if(!(o!==null?Lq.has(o):te(r.symbol)))return{ok:!1,reason:`${t} resolves to ${I(r.symbol)}${o!==null?` with SCIP kind ${ao(o)}`:""} \u2014 twin-ab compares call outputs, so both referents must be functions or methods.`};if(!Fo(e,r))return{ok:!1,reason:`${t} (${I(r.symbol)} at ${r.relativePath}:${r.startLine+1}) is not exported \u2014 twin-ab needs an importable named binding for both twins.`};let a=e.get("SELECT documentation FROM global_symbols WHERE id = ?",r.symbolId),c=Yt(Xt(a?.documentation??null));return{ok:!0,symbol:{ref:t,symbol:r.symbol,shortName:T(r.symbol)||I(r.symbol),file:r.relativePath,startLine:r.startLine,signature:c,paramCount:c?Mq(c):null}}}function Mq(e){let t=e.indexOf("(");if(t===-1)return null;let n=0,r=-1;for(let a=t;a<e.length;a+=1){let c=e[a];if(c==="(")n+=1;else if(c===")"&&(n-=1,n===0)){r=a;break}}if(r===-1)return null;let i=e.slice(t+1,r).trim();if(!i)return 0;let o=1,s=0;for(let a of i)a==="("||a==="["||a==="{"?s+=1:a===")"||a==="]"||a==="}"?s=Math.max(0,s-1):a===","&&s===0&&(o+=1);return o}function MR(e,t,n){let r=Tq(t),i=_q(e,n),s=Fq(r,i).replace(/\\/g,"/").replace(/\.tsx?$/,".js");return s.startsWith(".")?s:`./${s}`}function Oq(e,t,n,r,i){let o=MR(n,r,e.file),s=MR(n,r,t.file),a=i===null?"Signature comparison: unknown (one or both signatures unavailable in the index) \u2014 check by hand.":i?"Signature comparison: param counts match.":"Signature comparison: param counts DIFFER \u2014 twins may not be directly comparable; check by hand.";return`/**
800
+ * Generated by 'scip-query twin-ab'. scip-integrity-audit drill 5
801
+ * ("cross-examine same-concept twins"): where one concept is computed in
802
+ * more than one place, feed both the same input and require the same
803
+ * answer. Disagreement between twins means at least one is wrong \u2014
804
+ * determine which before consolidating.
805
+ *
806
+ * Twin A: ${e.shortName} (${e.file}:${e.startLine+1})
807
+ * ${e.signature??"(signature unavailable)"}
808
+ * Twin B: ${t.shortName} (${t.file}:${t.startLine+1})
809
+ * ${t.signature??"(signature unavailable)"}
810
+ * ${a}
811
+ *
812
+ * Fill in the TODO input table below with inputs both twins should agree
813
+ * on, then run this file with vitest.
814
+ */
815
+ import { describe, expect, it } from 'vitest';
816
+ import { ${e.shortName} as twinA } from '${o}';
817
+ import { ${t.shortName} as twinB } from '${s}';
818
+
819
+ // TODO: fill in shared inputs both twins should agree on \u2014 one arg array per call.
820
+ const inputs: any[][] = [
821
+ // [/* arg1, arg2, ... */],
822
+ ];
823
+
824
+ // Cast to a variadic signature so the input table can hold any arg shape \u2014
825
+ // the real twins have fixed, non-rest parameter lists, and TS rejects
826
+ // spreading a generic args array into those (TS2556) even when the array
827
+ // itself is 'any'; casting the callee's signature, not the args, satisfies
828
+ // the checker without weakening the twins' real exported types elsewhere.
829
+ const callA = twinA as (...callArgs: any[]) => any;
830
+ const callB = twinB as (...callArgs: any[]) => any;
831
+
832
+ describe.skipIf(inputs.length === 0)('twin-ab: ${e.shortName} vs ${t.shortName}', () => {
833
+ it.each(inputs)('agrees on input %#', (...args) => {
834
+ expect(callA(...args)).toEqual(callB(...args));
835
+ });
836
+ });
837
+ `}var OR={caller:3,"entry-surface":2,rooted:1},jq=/not\s*yet\s*implement|not\s*implement|unimplement|\bnyi\b|\btodo\b|\bstub\b|not\s*supported|coming\s*soon/i,Bq=/^throw\s+new\s+[\w.]*Error\s*\(([\s\S]*)\)\s*;?$/,$q=/^return(\s+(null|undefined|false|0|''|""|``|\[\]|\{\}))?\s*;?$/,Hq=/\/\/\s*TODO\b|\/\*\s*TODO\b/i,Uq=/(?:=>|\))\s*(?::\s*[^{;=]+)?\s*\{\s*\}\s*;?\s*$/;function Wq(e,t={}){let{scope:n,limit:r=30,scanLimit:i,semantic:o=!0}=t,s=new F(e),a=se(s.productionCallableDefinitions({scope:n,minLoc:1,requireFunctionLikeSymbol:!0,excludeTypesFiles:!0}),i),c=[];for(let f of a){let p=zq(e,f);p&&c.push(p)}if(c.length===0)return[];let l=Jq(e,c,a),u=c.filter(f=>!l.has(f.def.symbol));if(u.length===0)return[];let d=sn(e,s).forDefinitions(u.map(f=>f.def),{semantic:o}),m=[];for(let f of u){let g=d.get(f.def.symbolId)?.realConsumers.length??0,y=Gq(e,f.def,g);y&&m.push({symbol:f.def.symbol,shortName:I(f.def.symbol),file:f.def.relativePath,startLine:f.def.startLine,endLine:f.def.endLine,loc:O(f.def),stubKind:f.stubKind,reachability:y,callerFanIn:g,stubText:f.stubText})}return m.sort((f,p)=>OR[p.reachability]-OR[f.reachability]||p.callerFanIn-f.callerFanIn||f.file.localeCompare(p.file)||f.startLine-p.startLine),r?m.slice(0,r):m}function Gq(e,t,n){return n>0?"caller":de(e,t.symbol,t.relativePath)?"rooted":De(e,t.relativePath)?"entry-surface":null}function zq(e,t){let n=ln(e,t);if(!n)return null;let r=jt(n),i=r.trim();if(i==="")return!Kq(n)||!Fo(e,t)?null:{def:t,stubKind:"empty-body",stubText:"(empty body)"};let o=Ci(r),s=st(r),a=Vq(o,s);if(a.length!==1)return null;let c=a[0];return qq(c)?{def:t,stubKind:"throw-stub",stubText:c.trim()}:Hq.test(r)&&$q.test(c.trim())?{def:t,stubKind:"todo-return-default",stubText:i}:null}function Vq(e,t){let n=[],r=0,i="";for(let o=0;o<t.length;o+=1){let s=t[o];if(s==="("||s==="["||s==="{"?r+=1:(s===")"||s==="]"||s==="}")&&(r=Math.max(0,r-1)),s===";"&&r===0){n.push(i),i="";continue}i+=e[o]??""}return i.trim()&&n.push(i),n.map(o=>o.trim()).filter(o=>o.length>0)}function qq(e){let t=Bq.exec(e.trim());return t?jq.test(t[1]??""):!1}function Kq(e){return Uq.test(e.trimEnd())}function Jq(e,t,n){let r=new Set,i=new Set(t.map(a=>a.def.parentTypeName).filter(a=>a!==null));if(i.size===0)return r;let o=Xq(e,i),s=new Map;for(let a of n){if(!a.parentTypeName)continue;let c=s.get(a.leaf)??new Set;c.add(a.parentTypeName),s.set(a.leaf,c)}for(let a of t){let c=a.def.parentTypeName;if(!c)continue;let l=o.get(c);if(!l||l.size===0)continue;let u=s.get(a.def.leaf)??new Set;[...l].every(m=>u.has(m))&&r.add(a.def.symbol)}return r}var Yq=/\bclass\s+([A-Za-z_$][\w$]*)\s+extends\s+([A-Za-z_$][\w$]*)/g;function Xq(e,t){let n=new Map;for(let r of N(e,{includeIgnored:!1})){let i=k(e,r);if(i)for(let o of i.matchAll(Yq)){let s=o[1],a=o[2];if(!s||!a||!t.has(a))continue;let c=n.get(a)??new Set;c.add(s),n.set(a,c)}}return n}var Qq=/^(?:validate|verify|check|assert)(?:[A-Z].*)?$/,Zq=/^(?:is|has)(?:[A-Z].*)?$/,eK=/[{,]\s*(?:ok|success|valid|isValid)\s*:\s*false\b/,vm=/\breturn\b/g,tK=/\bfunction\b|=>|\)\s*(?::\s*[^{;=]+)?\s*\{/,nK=/\.(?:addIssue|push)\s*\(/;function rK(e,t={}){let{scope:n,limit:r=30,scanLimit:i}=t,o=new F(e),s=se(o.productionCallableDefinitions({scope:n,minLoc:1,requireFunctionLikeSymbol:!0,excludeTypesFiles:!0}),i),a=[];for(let c of s){let l=oK(e,c);l&&a.push({symbol:c.symbol,shortName:I(c.symbol),file:c.relativePath,startLine:c.startLine,endLine:c.endLine,loc:O(c),...l})}return a.sort((c,l)=>c.file.localeCompare(l.file)||c.startLine-l.startLine||c.loc-l.loc),r?a.slice(0,r):a}function iK(e){return Qq.test(e)?"imperative":Zq.test(e)?"predicate":null}function oK(e,t){let n=iK(t.leaf);if(!n||qr(e,t))return null;let r=ln(e,t);if(!r||!tK.test(r))return null;let i=z(e,t.relativePath)?.callables.find(s=>s.startLine===t.startLine&&s.endLine===t.endLine);if(n==="predicate"&&i?.paramCount===0)return null;if(rR(r)){let s=cK(e,t);return!s||$R(s.body,BR(s.snippet))||jR(s.body)?null:{nameKind:n,resolvedVia:"one-hop-delegate",delegateTarget:s.shortName}}let o=jt(r);return $R(o,BR(r))||jR(o)?null:{nameKind:n,resolvedVia:"direct"}}var sK=new Set(["if","for","while","switch","catch","function"]);function jR(e){let t=Ci(e);for(let n of t.matchAll(/\b([A-Za-z_$][\w$]*(?:\.[A-Za-z_$][\w$]*)*)\s*\(/g))if(!sK.has(n[1]))return!0;return!1}function BR(e){let t=e.indexOf("=>");return t===-1?!1:!/^\s*\{/.test(e.slice(t+2))}function $R(e,t){let n=Ci(e);if(/\bthrow\b/.test(n)||/\.reject\s*\(/.test(n)||eK.test(n)||nK.test(n))return!0;let r=aK(n);if(t&&r.length===0){let i=n.trim();return i!==""&&i!=="true"}for(let i of r)if(i!==""&&i!=="true")return!0;return!1}function aK(e){let t=[];vm.lastIndex=0;let n;for(;n=vm.exec(e);){let r=n.index+n[0].length,i=0,o=e.length;for(let s=r;s<e.length;s+=1){let a=e[s];if(a==="("||a==="["||a==="{")i+=1;else if(a===")"||a==="]"||a==="}"){if(i===0){o=s;break}i-=1}else if(a===";"&&i===0){o=s;break}}t.push(e.slice(r,o).trim()),vm.lastIndex=o}return t}function cK(e,t){let n=ft(e,t,{callableOnly:!0,limit:3,semanticEvidence:H}),r=[...new Set(n.map(c=>c.symbol))].filter(c=>c!==t.symbol);if(r.length!==1)return null;let o=wi(e,r[0]).match;if(!o)return null;let s=Y(e,o.relativePath).find(c=>c.symbolId===o.symbolId);if(!s)return null;let a=ln(e,s);return a?{body:jt(a),snippet:a,shortName:I(s.symbol)}:null}var lK=60;function uK(e,t={}){let{scope:n,limit:r=30,scanLimit:i,rotDays:o=lK}=t,s=se($e(e,{extensions:[".ts",".tsx",".js",".jsx",".mjs",".cjs"]}).filter(u=>G(u)==="test").filter(u=>!n||u.includes(n)).filter(u=>!e.isIgnored(u)).sort(),i),a=[],c=[],l=[];for(let u of s){let d=k(e,u);if(!d)continue;let m=Rp(d),f=fK(d);for(let g of yK(m,f))f.add(g);let p=dK(m);for(let g of p){if(g.skip){c.push(IK(e,u,g,o));continue}if(g.kind==="describe")continue;let y=UR(d,g.argsStart),h=m.slice(g.argsStart,g.callEnd),x=d.slice(g.argsStart,g.callEnd);WR(h,f)||a.push({file:u,startLine:Ao(d,g.callStart),endLine:Ao(d,g.callEnd),title:y,severity:/\bawait\b/.test(h)?"low":"high"});let b=xK(h,x);b&&l.push({file:u,startLine:Ao(d,g.callStart),endLine:Ao(d,g.callEnd),title:y,echoedValue:b})}}return{assertionFree:r?a.slice(0,r):a,skipped:r?c.slice(0,r):c,mockEcho:r?l.slice(0,r):l}}var Im=/(?<!\.)\b(?:x(it|test|describe)|(it|test|describe)(?:\.\s*(skip|only|todo|each\s*\([^)]*\)))?)\s*\(/g;function dK(e){let t=[];Im.lastIndex=0;let n;for(;n=Im.exec(e);){let r=n[1],i=r??n[2];if(!i)continue;let o=n[3]?.split(/\s*\(/)[0],s=n.index,a=n.index+n[0].length-1,c=Mo(e,a);Im.lastIndex=a+1,o!=="each"&&t.push({kind:i,skip:r!==void 0||o==="skip"||o==="todo",skipKind:o==="todo"?"todo":"skip",callStart:s,argsStart:a+1,callEnd:c+1})}return t}function Mo(e,t){let n=0;for(let r=t;r<e.length;r+=1){let i=e[r];if(i==="(")n+=1;else if(i===")"&&(n-=1,n===0))return r}return e.length-1}function Ao(e,t){let n=0;for(let r=0;r<t&&r<e.length;r+=1)e[r]===`
838
+ `&&(n+=1);return n}function UR(e,t){let n=e.slice(t,t+400),r=/^\s*(['"`])((?:\\.|(?!\1)[\s\S])*)\1/.exec(n);return r?r[2]:"(anonymous)"}var mK=new Set(["vitest","chai","jest","@jest/globals","assert","node:assert","node:assert/strict","assert/strict","uvu/assert","expect","chai-as-promised"]),HR=/import\s+(?:\*\s+as\s+(\w+)|\{([^}]*)\}|(\w+))\s+from\s+['"]([^'"]+)['"]/g;function fK(e){let t=new Set(["expect","assert"]);HR.lastIndex=0;let n;for(;n=HR.exec(e);){let[,r,i,o,s]=n;if(!(!s||!mK.has(s))&&(r&&t.add(r),o&&t.add(o),i))for(let a of i.split(",")){let c=a.trim().replace(/^type\s+/,"");if(!c)continue;let l=/^(\w+)\s+as\s+(\w+)$/.exec(c);t.add(l?l[2]:c)}}return t}function WR(e,t){if(/\.should\b/.test(e)||/\bawait\s+(?:[\w$.]+\.)?findBy[A-Z]\w*\s*\(/.test(e)||/\bawait\s+\w*waitFor(?:Text|Value|Condition|Result|Event)\s*\(/.test(e)||/\bthrow\b/.test(e))return!0;for(let n of t){let r=n.replace(/[.*+?^${}()|[\]\\]/g,"\\$&");if(new RegExp(`\\b${r}\\s*(?:<[^<>]*>)?\\s*[.(]`).test(e))return!0}return!1}var pK=/\bfunction\s+(\w+)\s*\(/g,gK=/\b(?:const|let)\s+(\w+)\s*=\s*(?:async\s*)?\(/g,hK=60;function yK(e,t){let n=new Set;for(let r of[pK,gK]){r.lastIndex=0;let i;for(;i=r.exec(e);){let o=i[1],s=i.index+i[0].length-1,a=Mo(e,s),c=e.indexOf("{",a+1);if(c===-1||c-a>hK)continue;let l=bK(e,c),u=e.slice(c+1,l);WR(u,t)&&n.add(o)}}return n}function bK(e,t){let n=0;for(let r=t;r<e.length;r+=1){let i=e[r];if(i==="{")n+=1;else if(i==="}"&&(n-=1,n===0))return r}return e.length-1}var SK=/\bmock(?:ReturnValue|ResolvedValue)(?:Once)?\s*\(/g,wm=/\bexpect\s*\(/g,CK=/^\s*\.\s*(?:toBe|toEqual|toStrictEqual)\s*\(/,GR=/^(?:-?\d+(?:\.\d+)?|(['"`]).+\1)$/;function xK(e,t){let n=RK(e,t,SK);if(n.length===0)return null;let r=vK(e,t);for(let i of r)if(n.includes(i))return i;return null}function RK(e,t,n){let r=[];n.lastIndex=0;let i;for(;i=n.exec(e);){let o=i.index+i[0].length-1,s=Mo(e,o),a=t.slice(o+1,s).trim();GR.test(a)&&r.push(a),n.lastIndex=s+1}return r}function vK(e,t){let n=[];wm.lastIndex=0;let r;for(;r=wm.exec(e);){let i=r.index+r[0].length-1,o=Mo(e,i),s=e.slice(o+1),a=CK.exec(s);if(wm.lastIndex=o+1,!a)continue;let c=o+1+a[0].length-1,l=Mo(e,c),u=t.slice(c+1,l).trim();GR.test(u)&&n.push(u)}return n}function IK(e,t,n,r){let i=k(e,t),o=UR(i,n.argsStart),s=Ao(i,n.callStart),a=wK(e.config.projectRoot,t,s),c=a===null?"unknown":a>=r?"rot":"workflow";return{file:t,startLine:s,title:o,skipKind:n.skipKind,blockKind:n.kind,ageDays:a,rot:c}}function wK(e,t,n){let r=n+1;try{let i=Ot(e,["blame","-L",`${r},${r}`,"--porcelain","--",t]),o=/^author-time (\d+)$/m.exec(i);if(!o)return null;let s=Number(o[1]);return Number.isFinite(s)?Math.max(0,Math.round((Date.now()/1e3-s)/86400)):null}catch{return null}}var EK=.7,zR=.62,VR=.45;function DK(e,t={}){let{windowCommits:n=100,limit:r=30,scope:i,scanLimit:o}=t,s=ze(e,{historyMode:t.historyMode}).fileAddRecords();if(!s)return{available:!1,windowCommits:n,findings:[]};if(r<=0)return{available:!0,windowCommits:n,findings:[]};let a=MK(s,n);if(a.size===0)return{available:!0,windowCommits:n,findings:[]};let l=PK(e,{limit:r,minSimilarity:t.minSimilarity,scanLimit:o,scope:i,semantic:t.semantic,focusFiles:Number.isFinite(r)?void 0:a}).map(d=>OK(d,s,n)).filter(d=>d!==null);l.sort((d,m)=>(d.kind===m.kind?0:d.kind==="echo"?-1:1)||m.similarity-d.similarity||d.echoFile.localeCompare(m.echoFile)||d.echoSymbol.localeCompare(m.echoSymbol)||d.domain.localeCompare(m.domain));let u=l.slice(0,r).map(jK);return{available:!0,windowCommits:n,findings:u,rootCauseGroups:BK(u)}}function PK(e,t){let n=HK(t.limit),r=[...kK(e,{scope:t.scope,minSimilarity:t.minSimilarity??EK,limit:n,scanLimit:t.scanLimit,semantic:t.semantic,focusFiles:t.focusFiles})],i=ls(e,{scope:t.scope});return i.react&&r.push(...TK(e,{scope:t.scope,minSimilarity:t.minSimilarity??zR,limit:n,scanLimit:t.scanLimit,focusFiles:t.focusFiles}),...FK(e,{scope:t.scope,minSimilarity:t.minSimilarity??VR,limit:n,scanLimit:t.scanLimit,focusFiles:t.focusFiles})),i.vue&&r.push(...NK(e,{scope:t.scope,minSimilarity:t.minSimilarity??zR,limit:n,scanLimit:t.scanLimit,focusFiles:t.focusFiles}),...AK(e,{scope:t.scope,minSimilarity:t.minSimilarity??VR,limit:n,scanLimit:t.scanLimit,focusFiles:t.focusFiles})),r}function kK(e,t){return po(e,{scope:t.scope,minSimilarity:t.minSimilarity,limit:t.limit,crossFileOnly:!0,scanLimit:t.scanLimit,semantic:t.semantic,focusFiles:t.focusFiles}).filter(n=>!Ie(n.symbolA)&&!Ie(n.symbolB)).map(n=>({domain:"callable",basis:n.similarityBasis??"callees",symbolA:n.shortNameA,fileA:n.fileA,symbolB:n.shortNameB,fileB:n.fileB,similarity:n.similarity,sharedEvidence:n.sharedCallees,sharedCallees:n.sharedCallees}))}function TK(e,t){return lc(e,t,{query:go,domain:"react-component",basis:"jsx-structure",symbolA:n=>n.componentA,symbolB:n=>n.componentB,evidenceBuckets:n=>[["component",n.sharedComponents],["tag",n.sharedNativeTags],["prop",n.sharedProps],["event",n.sharedEvents],["binding",n.sharedBindings]]})}function lc(e,t,n){return n.query(e,t).filter(r=>r.fileA!==r.fileB).filter(r=>n.acceptPair?.(r)??!0).map(r=>({domain:n.domain,basis:n.basis,symbolA:n.symbolA(r),fileA:r.fileA,symbolB:n.symbolB(r),fileB:r.fileB,similarity:r.similarity,sharedEvidence:UK(...n.evidenceBuckets(r)),sharedCallees:[]}))}function FK(e,t){return lc(e,t,{query:ho,domain:"react-hook",basis:"react-behavior",symbolA:n=>n.componentA,symbolB:n=>n.componentB,acceptPair:LK,evidenceBuckets:n=>[["hook",n.sharedHooks],["react-hook",n.sharedReactHooks],["effect",n.sharedEffects],["state",n.sharedState],["request",n.sharedRequests],["handler",n.sharedHandlers],["action",n.sharedHandlerVerbs]]})}var _K=new Set(["useCallback","useEffect","useLayoutEffect","useMemo","useMutation","useQueries","useQuery","useQueryClient","useReducer","useRef","useState"]);function LK(e){return e.sharedHooks.some(t=>!_K.has(t))||e.sharedState.length>0||e.sharedHandlers.length>0||e.sharedHandlerVerbs.length>=2}function NK(e,t){return lc(e,t,{query:yo,domain:"vue-component",basis:"vue-template",symbolA:n=>cc(n.fileA),symbolB:n=>cc(n.fileB),evidenceBuckets:n=>[["component",n.sharedComponents],["prop",n.sharedProps],["event",n.sharedEvents],["directive",n.sharedDirectives],["slot",n.sharedSlots],["identifier",n.sharedIdentifiers]]})}function AK(e,t){return lc(e,t,{query:bo,domain:"vue-composable",basis:"vue-behavior",symbolA:n=>cc(n.fileA),symbolB:n=>cc(n.fileB),evidenceBuckets:n=>[["composable",n.sharedComposables],["store",n.sharedStores],["reactivity",n.sharedReactivity],["lifecycle",n.sharedLifecycle],["request",n.sharedRequests],["function",n.sharedFunctions],["action",n.sharedFunctionVerbs],["binding",n.sharedBindings],["template-event",n.sharedTemplateEvents]]})}function MK(e,t){let n=new Set;for(let[r,i]of e)i.commitsAgo<=t&&n.add(r);return n}function OK(e,t,n){let r=t.get(e.fileA)?.commitsAgo??null,i=t.get(e.fileB)?.commitsAgo??null,o=r!==null&&r<=n,s=i!==null&&i<=n;if(!o&&!s)return null;if(o&&s){let a=(r??0)<=(i??0);return{kind:"twin",domain:e.domain,basis:e.basis,echoSymbol:a?e.symbolA:e.symbolB,echoFile:a?e.fileA:e.fileB,echoAgeCommits:(a?r:i)??0,establishedSymbol:a?e.symbolB:e.symbolA,establishedFile:a?e.fileB:e.fileA,establishedAgeCommits:a?i:r,similarity:e.similarity,sharedEvidence:e.sharedEvidence,sharedCallees:e.sharedCallees}}return{kind:"echo",domain:e.domain,basis:e.basis,echoSymbol:o?e.symbolA:e.symbolB,echoFile:o?e.fileA:e.fileB,echoAgeCommits:(o?r:i)??0,establishedSymbol:o?e.symbolB:e.symbolA,establishedFile:o?e.fileB:e.fileA,establishedAgeCommits:o?i:r,similarity:e.similarity,sharedEvidence:e.sharedEvidence,sharedCallees:e.sharedCallees}}function jK(e){let t=qR(e);return{...e,rootCauseKey:t,groupKey:`recent-duplicate:${t}`}}function qR(e){if(e.kind==="echo")return["echo",e.domain,e.basis,e.establishedSymbol].join(":");let t=e.sharedEvidence.slice().sort().join("|"),n=[e.echoSymbol,e.establishedSymbol].sort().join("|");return["twin",e.domain,e.basis,t||n].join(":")}function BK(e){let t=new Map;for(let[n,r]of e.entries()){let i=r.rootCauseKey??qR(r),o=r.groupKey??`recent-duplicate:${i}`,s=t.get(o);s||(s={groupKey:o,rootCauseKey:i,kind:r.kind,domain:r.domain,basis:r.basis,count:0,maxSimilarity:r.similarity,findingIndexes:[],echoFiles:new Set,establishedFile:r.kind==="echo"?r.establishedFile:void 0,establishedSymbol:r.kind==="echo"?r.establishedSymbol:void 0,relatedFiles:new Set,sharedEvidence:new Set,recommendation:$K(r)},t.set(o,s)),s.count+=1,s.maxSimilarity=Math.max(s.maxSimilarity,r.similarity),s.findingIndexes.push(n),s.echoFiles.add(r.echoFile),s.relatedFiles.add(r.echoFile),s.relatedFiles.add(r.establishedFile);for(let a of r.sharedEvidence)s.sharedEvidence.add(a)}return[...t.values()].map(n=>({...n,echoFiles:[...n.echoFiles].sort(),relatedFiles:[...n.relatedFiles].sort(),sharedEvidence:[...n.sharedEvidence].sort().slice(0,16)})).sort((n,r)=>r.count-n.count||r.maxSimilarity-n.maxSimilarity||n.groupKey.localeCompare(r.groupKey))}function $K(e){return e.kind==="echo"?"Review the established side once, then migrate or delete every echo in this group.":"Pick one owner for the new twins and consolidate the group before the copies diverge."}function HK(e){return Number.isFinite(e)?e*5:Number.POSITIVE_INFINITY}function UK(...e){let t=[],n=new Set;for(let[r,i]of e)for(let o of i){let s=`${r}:${o}`;n.has(s)||(n.add(s),t.push(s))}return t}function cc(e){return(e.split("/").pop()??e).replace(/\.[^.]+$/,"")}var WK=X("suppression-inventory",{clearGroups:["whole-project"]});function uc(e){return WK.get(e,()=>GK(e))}function GK(e){let t={dead:0,stale:0,wrapper:0,passthrough:0,drift:0,extract:0,similar:0,twin:0,uncategorized:0},n=new Map,r=0;for(let i of $e(e)){let o=k(e,i);if(!(!o||!o.includes("scip-query")))for(let s of o.split(/\r?\n/)){let a=mi(s);if(a===null)continue;r+=1,n.set(i,(n.get(i)??0)+1);let c=zK(a);t[c]+=1}}return{total:r,byCategory:t,byFile:n}}function zK(e){if(!e)return"uncategorized";let t=e.toLowerCase();return t==="dead-code"?"dead":t}import{readFileSync as VK}from"fs";import{join as qK}from"path";function Em(e,t,n={}){let r=B(e,t);if(!r)return null;let i=new F(e),o=KK(e,r),s=r.endLine-r.startLine+1,c=i.calleeMap([r],{additive:!0,semantic:n.semantic}).get(r.symbolId)??[],l=new Set(c.map(u=>u.symbol));return{symbol:r.symbol,shortName:I(r.symbol),relativePath:r.relativePath,startLine:r.startLine,endLine:r.endLine,loc:s,branches:o.branches,estimateBasis:o.estimateBasis,cyclomaticEstimate:o.branches+1,calleeCount:l.size,fanIn:YK(e,r.symbolId),fanOut:XK(c,r.relativePath)}}function KK(e,t){let n=K(e,t.relativePath);if(n){let r=XR(n.rootNode,t.startLine,t.endLine);if(r)return{branches:QK(r),estimateBasis:"ast"}}return{branches:ZR(YR(e,t.relativePath,t.startLine,t.endLine),JR(e,t.relativePath)),estimateBasis:"regex-fallback"}}function KR(e,t){let n=new Map,r=new Map;for(let i of t){let o=r.get(i.relativePath)??[];o.push(i),r.set(i.relativePath,o)}for(let[i,o]of r){let s=K(e,i),a=s===null?[]:o.filter(l=>s.rootNode.startPosition.row<=l.startLine&&s.rootNode.endPosition.row>=l.endLine),c=new Set(a.map(l=>l.symbolId));if(s&&a.length>0){for(let l of a)n.set(l.symbolId,{branches:0,estimateBasis:"ast"});ZK(s.rootNode,a,n)}for(let l of o)c.has(l.symbolId)||n.set(l.symbolId,JK(e,l))}return n}function JK(e,t){return{branches:ZR(YR(e,t.relativePath,t.startLine,t.endLine),JR(e,t.relativePath)),estimateBasis:"regex-fallback"}}function JR(e,t){return e.get("SELECT language FROM documents WHERE relative_path = ?",t)?.language??"unknown"}function YR(e,t,n,r){try{return VK(qK(e.config.projectRoot,t),"utf-8").split(`
839
+ `).slice(n,r+1).join(`
840
+ `)}catch{return""}}function YK(e,t){return e.get(`SELECT COUNT(DISTINCT c.document_id) AS c
841
+ FROM mentions m
842
+ JOIN chunks c ON m.chunk_id = c.id
843
+ JOIN (
844
+ SELECT m2.symbol_id, c2.document_id
845
+ FROM mentions m2
846
+ JOIN chunks c2 ON m2.chunk_id = c2.id
847
+ WHERE m2.role = 1
848
+ GROUP BY m2.symbol_id
849
+ ) sym_def ON sym_def.symbol_id = m.symbol_id
850
+ WHERE m.symbol_id = ?
851
+ AND m.role != 1
852
+ AND sym_def.document_id != c.document_id`,t)?.c??0}function XK(e,t){return new Set(e.filter(n=>n.file!==t).map(n=>n.symbol)).size}function QK(e){let t=0;return Dm(e,n=>{t+=QR(n)}),t}function ZK(e,t,n){let r=[...t].sort((i,o)=>i.startLine-o.startLine||o.endLine-i.endLine);Dm(e,i=>{let o=QR(i);if(o===0)return;let s=i.startPosition.row,a=i.endPosition.row;for(let c of r){if(c.startLine>s)break;if(c.endLine<a)continue;let l=n.get(c.symbolId);l&&(l.branches+=o)}})}function Dm(e,t){t(e);for(let n of e.namedChildren)Dm(n,t)}function XR(e,t,n){if(e.startPosition.row>t||e.endPosition.row<n)return null;for(let r of e.namedChildren){let i=XR(r,t,n);if(i)return i}return e}var e2=new Set(["if_statement","conditional_expression","ternary_expression","for_statement","for_in_statement","for_of_statement","while_statement","do_statement","switch_case","case_statement","catch_clause","except_clause","elif_clause","match_arm"]);function QR(e){return e2.has(e.type)?1:e.type==="binary_expression"&&e.parent?.type!=="binary_expression"&&(e.text.includes("&&")||e.text.includes("||"))?t2(e.text):0}function t2(e){return(e.match(/&&|\|\|/g)??[]).length}function ZR(e,t){let n=st(e),r=0,i=[/\bif\b/g,/\belse\s+if\b/g,/\belse\b/g,/\bfor\b/g,/\bwhile\b/g,/\bswitch\b/g,/\bcase\b/g,/\bcatch\b/g,/\?\s*[^?]/g,/&&/g,/\|\|/g];for(let o of i){let s=n.match(o);s&&(r+=s.length)}if(t==="python"){let o=[/\belif\b/g,/\bexcept\b/g,/\bfinally\b/g];for(let s of o){let a=n.match(s);a&&(r+=a.length)}}else if(t==="rust"){let o=[/\bmatch\b/g,/=>/g,/\bloop\b/g];for(let s of o){let a=n.match(s);a&&(r+=a.length)}}else if(t==="ruby"){let o=[/\belsif\b/g,/\bunless\b/g,/\brescue\b/g,/\bwhen\b/g];for(let s of o){let a=n.match(s);a&&(r+=a.length)}}else if(t==="go"){let o=[/\bselect\b/g,/\bdefer\b/g];for(let s of o){let a=n.match(s);a&&(r+=a.length)}}return r}function Pm(e,t,n={}){let r=B(e,t);if(!r)return null;let i=[{file:r.relativePath,line:r.startLine}],o=Pt(e,r,{semantic:n.semantic,semanticEvidence:H}).map(c=>({file:c.file,line:c.line,enclosingSymbol:c.enclosingSymbol??"(top-level)",enclosingShort:c.enclosingSymbol?I(c.enclosingSymbol):"(top-level)"})),{producers:s,consumers:a}=n2(e,r,o,{semantic:n.semantic!==!1});return{symbol:r.symbol,shortName:I(r.symbol),relativePath:r.relativePath,definitionSites:i.filter(c=>!e.isIgnored(c.file)),usageSites:o,producers:s.filter(c=>!e.isIgnored(c.file)).map(c=>({symbol:c.symbol,shortName:I(c.symbol),file:c.file})),consumers:a.filter(c=>!e.isIgnored(c.file)).map(c=>({symbol:c.symbol,shortName:c.symbol===c.file?"(top-level)":I(c.symbol),file:c.file}))}}function n2(e,t,n,r){let i=Vr(ft(e,t,{limit:30,semantic:r.semantic,semanticEvidence:H}).map(a=>({symbol:a.symbol,file:a.file}))),o=Vr(xt(e,t,{limit:30,semantic:r.semantic,semanticEvidence:H})),s=o.length>0?o:Vr(n.map(a=>({symbol:a.enclosingSymbol==="(top-level)"?a.file:a.enclosingSymbol,file:a.file})));return{producers:i,consumers:s}}function dc(e,t,n={}){let{direction:r="backward",maxDepth:i=3}=n,o=B(e,t);return o?r==="backward"?r2(e,o,i,{semantic:n.semantic!==!1}):i2(e,o,{semantic:n.semantic!==!1}):null}function r2(e,t,n,r){let i=[],o=new Set([t.symbol]),s=[t];for(let a=1;a<=n&&s.length!==0;a++){let c=[];for(let l of s){let u=ft(e,l,{semantic:r.semantic,semanticEvidence:H});for(let d of u){if(o.has(d.symbol))continue;o.add(d.symbol),i.push({symbol:d.symbol,shortName:I(d.symbol),file:d.file,relationship:a===1?"referenced within definition (callee)":`depth ${a} callee`});let m=Ei(e,d.symbol);m&&!e.isIgnored(m.relativePath)&&c.push(m)}}s=c}return{symbol:t.symbol,shortName:I(t.symbol),direction:"backward",connectedSymbols:i}}function i2(e,t,n){let r=new Set,i=[],o=new F(e);for(let s of Pt(e,t,{semantic:n.semantic,semanticEvidence:H})){if(i.length>=30)break;let a=s.enclosingSymbol??Dt(o.definitionsForFile(s.file),s.line)?.symbol??null;if(!a||a===t.symbol)continue;let c=Ei(e,a);!c||e.isIgnored(c.relativePath)||r.has(c.symbol)||(r.add(c.symbol),i.push({symbol:c.symbol,shortName:I(c.symbol),file:c.relativePath,relationship:`references target at ${s.file}:${s.line+1}`}))}return i.sort((s,a)=>s.file.localeCompare(a.file)),{symbol:t.symbol,shortName:I(t.symbol),direction:"forward",connectedSymbols:i}}function o2(e,t,n={}){let r=n.impactDepth??3,i=n.sliceDepth??3,o=n.semantic,s=!a2(t),a=s?Ne("trace",t,()=>pd(e,t,{semantic:o}),R=>({definitions:R.definitions.length,references:R.referencedBy.length})):{definitions:[],referencedBy:[]},c=s?Ne("call-graph",t,()=>Id(e,t,{semantic:o}),R=>({callers:R?.callers.length??0,callees:R?.callees.length??0})):null,l=s?Ne("complexity",t,()=>Em(e,t,{semantic:o}),R=>({callees:R?.calleeCount??0})):null,u=s?Ne("dataflow",t,()=>Pm(e,t,{semantic:o}),R=>({references:R?.usageSites.length??0,producers:R?.producers.length??0,consumers:R?.consumers.length??0})):null,d=s?Ne("backward-slice",t,()=>dc(e,t,{direction:"backward",maxDepth:i,semantic:o}),R=>({maxDepth:i,connectedSymbols:R?.connectedSymbols.length??0})):null,m=s?Ne("forward-slice",t,()=>dc(e,t,{direction:"forward",maxDepth:i,semantic:o}),R=>({maxDepth:i,connectedSymbols:R?.connectedSymbols.length??0})):null,f=s?Ne("affected",t,()=>$d(e,t,{maxDepth:r,scope:n.scope}),R=>({maxDepth:r,affectedSymbols:R.length})):[],p=Ne("change-surface",t,()=>Hd(e,t,{semantic:o}),R=>({symbols:R?.symbols.length??0,externalConsumers:R?.totalExternalConsumers??0})),g=Ne("system",t,()=>yd(e,t),R=>({files:R.files.length,symbols:R.symbols.length})),y=g.files.length===1,h=Ne("deps",t,()=>y?g.dependsOn.map(R=>({relativePath:R})):gd(e,t),R=>({files:R.length,reusedSystem:y})),x=Ne("rdeps",t,()=>y?g.dependedOnBy.map(R=>({relativePath:R})):hd(e,t),R=>({files:R.length,reusedSystem:y})),b=Ne("surface",t,()=>bd(e,t),R=>({consumers:R.length})),C={symbol:a.definitions.length>0||a.referencedBy.length>0||c!==null||l!==null||u!==null||d!==null||m!==null||f.length>0,file:p!==null||h.length>0||x.length>0,module:g.files.length>0||g.symbols.length>0||b.length>0},S=[];!C.symbol&&!C.file&&!C.module&&S.push("No symbol, file, or module matched target.");let v=p?.file??a.definitions[0]?.relativePath??null;return{target:t,matched:C,history:Ne("history",v??t,()=>s2(e,v,n.gitHead)),trace:a,callGraph:c,complexity:l,dataflow:u,backwardSlice:d,forwardSlice:m,affected:f,changeSurface:p,deps:h,rdeps:x,system:g,surface:b,warnings:S}}function Ne(e,t,n,r=()=>({})){let i;return E(`plan-context.${e}`,()=>(i=n(),i),()=>({target:t,...r(i)}))}function s2(e,t,n){let r={available:!1,file:t,churn:null,coChangePartners:[],suppressionsInFile:0};if(!t)return r;let i=ze(e,n?{head:n}:{}),o=Ne("history.churn",t,()=>i.fileChurn(),c=>({files:c?.size??0}));if(!o)return r;let s=Ne("history.co-change",t,()=>xo(e,t,{limit:5,...n?{head:n}:{}}),c=>({commits:c.commitsAnalyzed,partners:c.findings.length})),a=Ne("history.suppressions",t,()=>uc(e).byFile.get(t)??0,c=>({suppressions:c}));return{available:!0,file:t,churn:o.get(t)??{changes:0,fixChanges:0,lastChangedAt:0},coChangePartners:s.findings.map(c=>({file:c.fileA===t?c.fileB:c.fileA,together:c.together,confidence:c.confidence,subjectContext:c.subjectContext})),suppressionsInFile:a}}function a2(e){return e.includes("/")||e.includes("\\")||/\.[A-Za-z0-9]+(?::\d+(?:-\d+)?)?$/.test(e)}var c2=new Set(Nt());function km(e,t){let{scope:n,minLoc:r=10,limit:i=30,scanLimit:o}=t??{},s=new F(e);return gt({candidates:()=>s.productionCallableDefinitions({scope:n,minLoc:r,requireFunctionLikeSymbol:!0,includeSuppressed:!0,sortByLocDesc:typeof o=="number"&&o>0}),scanLimit:o,filterCandidate:l2,profile:{name:"complexity-hotspots"},prepare:a=>{let c=d2(e,a),l=t?.semantic!==!1,u=l?We(e):null;u?.materializeReferences(a,{prefetchCallees:!0});let d=s.crossFileCallerMap(a,{semantic:!1});return{callerMap:u?on(d,u.callerMap(a)):d,calleeMap:s.calleeMap(a,{semantic:l}),languageByFile:c,clojureCallableIds:m2(e,a,c),branchEstimates:KR(e,a)}},evaluate:(a,c)=>u2(a,c,r),orderResults:(a,c)=>c.score-a.score||c.loc-a.loc,limit:i})}function l2(e){return e.symbol.startsWith("rust-analyzer ")?typeof e.kind=="number"&&c2.has(e.kind):!0}function u2(e,t,n){if(t.languageByFile.get(e.relativePath)==="clojure"&&!t.clojureCallableIds.has(e.symbolId))return null;let r=e.endLine-e.startLine+1;if(r<n)return null;let i=t.callerMap.get(e.symbolId)?.size??0,o=t.calleeMap.get(e.symbolId)??[],s=new Set,a=new Set;for(let m of o){let f=`${m.symbol}|${m.file}`;s.add(f),m.file!==e.relativePath&&a.add(f)}let c=a.size,l=s.size,u=t.branchEstimates.get(e.symbolId)??{branches:0,estimateBasis:"regex-fallback"},d=u.branches+1;return{symbol:e.symbol,shortName:I(e.symbol),file:e.relativePath,startLine:e.startLine,endLine:e.endLine,loc:r,fanIn:i,fanOut:c,calleeCount:l,branches:u.branches,estimateBasis:u.estimateBasis,score:Math.round(r/50*(i/5)*Math.max(c/5,1)*Math.max(d/5,1)*100)/100}}function d2(e,t){let n=[...new Set(t.map(o=>o.relativePath))];if(n.length===0)return new Map;let r=n.map(()=>"?").join(", "),i=e.all(`SELECT relative_path, language
853
+ FROM documents
854
+ WHERE relative_path IN (${r})`,...n);return new Map(i.map(o=>[o.relative_path,o.language?.toLowerCase()??null]))}function m2(e,t,n){let r=new Set,i=new Map;for(let o of t){if(n.get(o.relativePath)!=="clojure")continue;let s=i.get(o.relativePath);s||(s=new Set((z(e,o.relativePath)?.callables??[]).map(a=>`${a.name}:${a.startLine}`)),i.set(o.relativePath,s)),s.has(`${o.leaf}:${o.startLine}`)&&r.add(o.symbolId)}return r}function $t(e,t){return`${e}\0${t}`}function Wfe(e,t,n,r,i,o={}){let s=new Map(e.map(l=>[$t(l.check,l.findingId),l])),a=[],c=(l,u)=>{let d=n.get(l.findingId),m=u==="resolved"?o.verifiedAgainstByFinding?.get($t(l.check,l.findingId)):void 0;a.push({ts:i,check:l.check,findingId:l.findingId,event:u,commit:r,...o.comparisonBaseCommit?{comparisonBaseCommit:o.comparisonBaseCommit}:{},...m?{verifiedAgainstCommit:m}:{},...d?{symbol:d}:{}})};for(let l of t){let u=s.get($t(l.check,l.findingId));if(!u){c(l,"caught"),l.outcome==="suppressed"&&c(l,"suppressed");continue}u.outcome!==l.outcome&&(l.outcome==="resolved"?c(l,"resolved"):l.outcome==="suppressed"?c(l,"suppressed"):l.outcome==="still-open"&&c(l,"reopened"))}return a}function Gfe(e){for(let t=e.length-1;t>=0;t-=1){let n=e[t];if(n?.event==="caught"||n?.event==="reopened")return n}}function f2(e,t,n,r,i=new Set){let o=new Map(e.map(c=>[$t(c.check,c.findingId),c])),s=new Set(t.map(c=>$t(c.check,c.findingId))),a=new Set(n);for(let c of t){let l=$t(c.check,c.findingId),u=o.get(l),d=c.suppressed?"suppressed":"still-open";u?o.set(l,{...u,lastSeen:r,timesShown:u.timesShown+1,outcome:d}):o.set(l,{check:c.check,findingId:c.findingId,firstSeen:r,lastSeen:r,timesShown:1,outcome:d})}for(let c of e){if(!a.has(c.check))continue;let l=$t(c.check,c.findingId);s.has(l)||i.has(l)||c.outcome!=="resolved"&&o.set(l,{...c,outcome:"resolved"})}return[...o.values()]}function Tm(e,t){let n=new Map;for(let i of e){let o=n.get(i.check)??[];o.push(i),n.set(i.check,o)}let r=[];for(let[i,o]of n){let s=o.filter(d=>d.outcome==="resolved").length,a=o.filter(d=>d.outcome==="suppressed").length,c=o.filter(d=>d.outcome==="still-open").length,l=o.length,u=o.filter(d=>d.outcome==="still-open").sort((d,m)=>d.firstSeen-m.firstSeen)[0];r.push({check:i,seen:l,resolved:s,suppressed:a,stillOpen:c,resolutionRate:l>0?s/l:0,suppressionRate:l>0?a/l:0,oldestOpenAgeDays:u?Math.floor((t-u.firstSeen)/ev):null})}return r.sort((i,o)=>i.check.localeCompare(o.check))}var ev=864e5,p2=50,g2=.1,h2=10;function y2(e,t,n){return e.filter(r=>r.check===t).sort((r,i)=>i.firstSeen-r.firstSeen).slice(0,n)}function Kfe(e,t,n){if(t.length===0)return null;let r=new Map(e.map(s=>[$t(s.check,s.findingId),s])),i=t.map(s=>r.get($t(s.check,s.findingId))).filter(s=>s!==void 0&&s.timesShown>1);if(i.length===0)return null;let o=Math.max(...i.map(s=>Math.floor((n-s.firstSeen)/ev)));return`${t.length} finding(s), ${i.length} shown before and unresolved (oldest: ${o} day(s))`}function Jfe(e,t){let n=[];for(let r of[...new Set(t)].sort()){let i=y2(e,r,p2);i.length<h2||i.filter(a=>a.outcome==="resolved").length/i.length>=g2||n.push(`(the ${r} check's findings are rarely acted on in this repo \u2014 consider suppressing with reasons or tuning its config)`)}return n}function mc(e){return of(e).map(t=>({check:t.check,findingId:t.findingId,firstSeen:t.firstSeen,lastSeen:t.lastSeen,timesShown:t.timesShown,outcome:t.outcome}))}function Yfe(e,t,n,r=Date.now(),i=new Set){let o=mc(e),s=f2(o,t,n,r,i);return sf(e,s),s}function un(e){return e.scoreCount??e.count}function rv(e){let t=x2(e),{breakdown:n,pressure:r}=R2(e),i=nv(n,"risk"),o=nv(n,"hygiene");return{score:Math.min(i,o),riskScore:i,hygieneScore:o,scoreBreakdown:n,overview:{documents:e.statsResult.documents,symbols:e.statsResult.symbols,indexSizeBytes:e.statsResult.indexSizeBytes},findings:{deadSymbols:e.dead.count,deadLoc:e.dead.loc,isolatedSymbols:e.isolated.count,isolatedLoc:e.isolated.loc,cycles:e.realCycleCount,similarPairs:e.similarCount,duplicateBodyGroups:e.duplicateBodies.count,duplicateBodyLoc:e.duplicateBodies.loc,twinDriftGroups:e.twinDrift.count,twinDriftLoc:e.twinDrift.loc,reactComponentDuplicatePairs:e.reactComponentDuplicates.count,reactHookCandidatePairs:e.reactHookCandidates.count,reactHookCandidateScoreCount:un(e.reactHookCandidates),reactLargeComponentPressureFiles:e.reactLargeComponentPressure.count,vueComponentDuplicatePairs:e.vueComponentDuplicates.count,vueComposableCandidatePairs:e.vueComposableCandidates.count,vueComposableCandidateScoreCount:un(e.vueComposableCandidates),vueLargeViewPressureFiles:e.vueLargeViewPressure.count,extractionCandidates:e.extractCount,wrappers:e.wrappers.count,wrapperScoreCount:un(e.wrappers),passthroughs:e.passthroughs.count,staleTypes:e.stale.count,driftedFiles:e.drift.count,complexityHotspotCount:e.complexity.extremeCount,hiddenCouplingPairs:e.gitEvidence?.hiddenCoupling.pairCount??null,hiddenCouplingScoreCount:e.gitEvidence?.hiddenCoupling.scoreCount??null,coverageContractViolations:e.coverageContracts.count},axes:b2(e),validation:C2(e),suppressions:e.suppressions,actions:t,pressure:r,topComplexity:e.complexity.top,warnings:e.warnings.length>0?e.warnings:void 0,detectorPrecision:[]}}function b2(e){return{deletable:{loc:e.dead.loc+e.isolated.loc,symbols:e.dead.count+e.isolated.count},cycles:{count:e.realCycleCount},changeAmplification:e.gitEvidence?.amplification??null,hiddenCoupling:e.gitEvidence?.hiddenCoupling??null,churnWeightedComplexity:S2(e),evidenceQuality:{graphFindings:e.dead.count+e.isolated.count+e.realCycleCount,heuristicFindings:e.similarCount+e.duplicateBodies.count+e.twinDrift.count+e.reactComponentDuplicates.count+e.reactHookCandidates.count+e.reactLargeComponentPressure.count+e.vueComponentDuplicates.count+e.vueComposableCandidates.count+e.vueLargeViewPressure.count+e.extractCount+e.wrappers.count+e.passthroughs.count+e.stale.count+e.drift.count,userSuppressed:e.suppressions?.total??0}}}function S2(e){let t=e.gitEvidence?.fileStats;return t?e.complexity.top.map(n=>{let r=n.file?t[n.file]?.changes??0:0;return{...n,changes:r,weighted:Ht(n.score*Math.log2(1+r))}}).sort((n,r)=>r.weighted-n.weighted):null}function C2(e){let t=e.gitEvidence?.fileStats;if(!t)return null;let n={dead:e.dead.files??[],isolated:e.isolated.files??[],twinDrift:e.twinDrift.files??[],wrappers:e.wrappers.files??[],passthroughs:e.passthroughs.files??[],stale:e.stale.files??[],reactComponents:e.reactComponentDuplicates.files??[],reactHooks:e.reactHookCandidates.files??[],reactLargeComponents:e.reactLargeComponentPressure.files??[],vueComponents:e.vueComponentDuplicates.files??[],vueComposables:e.vueComposableCandidates.files??[],vueLargeViews:e.vueLargeViewPressure.files??[]},r=new Set(Object.values(n).flat()),i=0,o=0,s=0;for(let[u,d]of Object.entries(t))r.has(u)?i+=d.fixChanges:(o+=d.fixChanges,s+=1);let a=r.size>0?Ht(i/r.size):0,c=s>0?Ht(o/s):0,l={};for(let[u,d]of Object.entries(n)){let m=new Set(d);if(m.size===0)continue;let f=0;for(let g of m)f+=t[g]?.fixChanges??0;let p=Ht(f/m.size);l[u]={flaggedFiles:m.size,fixDensity:p,lift:c>0?Ht(p/c):null}}return{flaggedFiles:r.size,flaggedFixDensity:a,baselineFixDensity:c,ratio:r.size>0&&c>0?Ht(a/c):null,byCategory:l,validationBasis:{method:"subject-regex",commitsScanned:e.gitEvidence?.commitsScanned??0}}}function Ht(e){return Math.round(e*100)/100}function iv(e){return Number.isInteger(e)?String(e):e.toFixed(2).replace(/0+$/,"").replace(/\.$/,"")}function fc(e,t="existing shared infrastructure discount"){let n=un(e);return Math.abs(n-e.count)<.01?"":` (${iv(n)} score-weighted after ${t})`}function Oo(e,t){let n=un(e),r=`${e.count} ${t}`;return Math.abs(n-e.count)<.01?r:`${r} (${iv(n)} score-weighted)`}function x2(e){let t=[];if(e.dead.count>0&&t.push({category:"Dead code",evidence:"graph-fact",description:`${e.dead.count} indexed symbols with no visible repository references \u2014 review runtime/framework roots and the capability disclosure, then verify any deletion with cleanup-plan --verify`,effort:"low",impact:"high",count:e.dead.count,locRecoverable:e.dead.loc}),e.isolated.count>0&&t.push({category:"Isolated symbols",evidence:"graph-fact",description:`${e.isolated.count} symbols completely disconnected from the codebase graph`,effort:"low",impact:"medium",count:e.isolated.count,locRecoverable:e.isolated.loc}),e.realCycleCount>0&&t.push({category:"Circular dependencies",evidence:"graph-fact",description:`${e.realCycleCount} indexed dependency cycle(s) \u2014 inspect ownership and runtime order before choosing whether or how to break them`,effort:"medium",impact:"high",count:e.realCycleCount,locRecoverable:0}),e.similarCount>0&&t.push({category:"Similar functions",evidence:"heuristic",description:`${e.similarCount} pairs share disclosed call or source-token evidence beyond imports \u2014 review domain identity before considering consolidation`,effort:"medium",impact:"medium",count:e.similarCount,locRecoverable:0}),e.duplicateBodies.count>0&&t.push({category:"Duplicate function bodies",evidence:"heuristic",description:`${e.duplicateBodies.count} exact small-body group(s) across files \u2014 consolidate only when the domain concept matches`,effort:"low",impact:"medium",count:e.duplicateBodies.count,locRecoverable:e.duplicateBodies.loc}),e.twinDrift.count>0&&t.push({category:"Drifted twin implementations",evidence:"heuristic",description:`${e.twinDrift.count} same-name (or near-name) function group(s) across files with diverged or identical bodies \u2014 determine whether they represent the same concept before acting`,effort:"medium",impact:"medium",count:e.twinDrift.count,locRecoverable:0}),e.reactComponentDuplicates.count>0&&t.push({category:"Duplicated React components",evidence:"heuristic",description:`${e.reactComponentDuplicates.count} React component pair(s) share JSX structure \u2014 review whether local product intent justifies reuse`,effort:"medium",impact:"medium",count:e.reactComponentDuplicates.count,locRecoverable:e.reactComponentDuplicates.loc}),e.reactHookCandidates.count>0&&t.push({category:"Duplicated React hook behavior",evidence:"heuristic",description:`${e.reactHookCandidates.count} React component pair(s) share state/effect/request behavior${fc(e.reactHookCandidates)} \u2014 review whether a common hook would preserve ownership and lifecycle semantics`,effort:"medium",impact:"medium",count:e.reactHookCandidates.count,locRecoverable:e.reactHookCandidates.loc}),e.reactLargeComponentPressure.count>0&&t.push({category:"Large React components",evidence:"heuristic",description:`${e.reactLargeComponentPressure.count} React component(s) concentrate JSX/behavior pressure \u2014 split by reason to change`,effort:"medium",impact:"medium",count:e.reactLargeComponentPressure.count,locRecoverable:0}),e.vueComponentDuplicates.count>0&&t.push({category:"Duplicated Vue components",evidence:"heuristic",description:`${e.vueComponentDuplicates.count} Vue component pair(s) share template structure \u2014 review whether local product intent justifies reuse`,effort:"medium",impact:"medium",count:e.vueComponentDuplicates.count,locRecoverable:e.vueComponentDuplicates.loc}),e.vueComposableCandidates.count>0&&t.push({category:"Duplicated Vue behavior",evidence:"heuristic",description:`${e.vueComposableCandidates.count} Vue component pair(s) share state/effect/request behavior${fc(e.vueComposableCandidates)} \u2014 review whether a common composable would preserve ownership and lifecycle semantics`,effort:"medium",impact:"medium",count:e.vueComposableCandidates.count,locRecoverable:e.vueComposableCandidates.loc}),e.vueLargeViewPressure.count>0&&t.push({category:"Large Vue views",evidence:"heuristic",description:`${e.vueLargeViewPressure.count} Vue file(s) concentrate template/script/style pressure \u2014 split by reason to change`,effort:"medium",impact:"medium",count:e.vueLargeViewPressure.count,locRecoverable:0}),e.extractCount>0&&t.push({category:"Extraction candidates",evidence:"heuristic",description:`${e.extractCount} large functions with isolated callee clusters \u2014 review same-file or feature-local extraction seams`,effort:"medium",impact:"medium",count:e.extractCount,locRecoverable:0}),e.wrappers.count>0&&t.push({category:"Wrapper functions",evidence:"heuristic",description:`${e.wrappers.count} single-consumer symbols${fc(e.wrappers,"boundary-evidence discount")} \u2014 inspect whether each is indirection or an intentional API, framework, or ownership boundary`,effort:"low",impact:"low",count:e.wrappers.count,locRecoverable:e.wrappers.loc}),e.passthroughs.count>0&&t.push({category:"Passthrough functions",evidence:"heuristic",description:`${e.passthroughs.count} functions that literally forward to one callee \u2014 inspect whether each is unnecessary indirection or an intentional boundary`,effort:"low",impact:"low",count:e.passthroughs.count,locRecoverable:e.passthroughs.loc}),e.stale.count>0){let i=[];e.stale.unused>0&&i.push(`${e.stale.unused} unused`),e.stale.singleUse>0&&i.push(`${e.stale.singleUse} single-consumer (not in types file)`),t.push({category:"Stale abstractions",evidence:"heuristic",description:`${i.join(", ")} \u2014 review public, runtime-registration, and ownership evidence before removing, moving, or inlining`,effort:"low",impact:"medium",count:e.stale.count,locRecoverable:e.stale.loc})}if(e.drift.count>0){let i=[];e.drift.unusedImports>0&&i.push(`${e.drift.unusedImports} unused imports`),e.drift.architectureViolations>0&&i.push(`${e.drift.architectureViolations} declared architecture violations`),t.push({category:"Structural drift",evidence:"heuristic",description:`${i.join(", ")} \u2014 repair direct dependency-rule breaks; inspect boundary signals with \`drift --architecture\``,effort:e.drift.architectureViolations>0?"medium":"low",impact:e.drift.architectureViolations>0?"medium":"low",count:e.drift.count,locRecoverable:0})}if(e.coverageContracts.count>0&&t.push({category:"Coverage contract drift",evidence:"graph-fact",description:`${e.coverageContracts.count} configured coverage contract(s) drifted from their ground-truth source (enumeration rot) \u2014 run \`scip-query diff-gate\` or \`scip-query health --json\` for the missing/extra keys`,effort:"low",impact:"medium",count:e.coverageContracts.count,locRecoverable:0}),e.gitEvidence&&e.gitEvidence.hiddenCoupling.pairCount>0){let i=e.gitEvidence.hiddenCoupling.top[0];t.push({category:"Hidden coupling",evidence:"change-graph",description:`${e.gitEvidence.hiddenCoupling.pairCount} file pair(s) co-change without a structural link`+fc({count:e.gitEvidence.hiddenCoupling.pairCount,scoreCount:e.gitEvidence.hiddenCoupling.scoreCount},"broad/stale-history discount")+(i?` (e.g. ${i.fileA} \u2194 ${i.fileB})`:"")+" \u2014 inspect whether a shared concept, generated artifact, or coordinated contract explains the history",effort:"medium",impact:"high",count:e.gitEvidence.hiddenCoupling.pairCount,locRecoverable:0})}let n={high:3,medium:2,low:1},r={low:3,medium:2,high:1};return t.sort((i,o)=>{let s=n[i.impact]*r[i.effort];return n[o.impact]*r[o.effort]-s}),t}var tv={"dead-code":"risk",isolated:"risk",cycles:"risk",complexity:"risk","hidden-coupling":"risk","cycles-pressure":"risk","complexity-pressure":"risk","hidden-coupling-pressure":"risk",similar:"hygiene","duplicate-bodies":"hygiene","twin-drift":"hygiene","react-component-duplicates":"hygiene","react-hook-candidates":"hygiene","react-large-component-pressure":"hygiene","vue-component-duplicates":"hygiene","vue-composable-candidates":"hygiene","vue-large-view-pressure":"hygiene",extract:"hygiene",wrappers:"hygiene",passthroughs:"hygiene","stale-abstractions":"hygiene",drift:"hygiene","similar-pressure":"hygiene","duplicate-bodies-pressure":"hygiene","twin-drift-pressure":"hygiene","react-component-duplicates-pressure":"hygiene","react-hook-candidates-pressure":"hygiene","react-large-component-pressure-pressure":"hygiene","vue-component-duplicates-pressure":"hygiene","vue-composable-candidates-pressure":"hygiene","vue-large-view-pressure-pressure":"hygiene","extract-pressure":"hygiene","wrappers-pressure":"hygiene","passthroughs-pressure":"hygiene","stale-abstractions-pressure":"hygiene","drift-pressure":"hygiene"};function nv(e,t){let n=e.filter(r=>r.kind===t).reduce((r,i)=>r+i.points,0);return Math.max(0,Math.min(100,100-n))}function R2(e){let t=Math.max(e.statsResult.documents,1),n=Math.max(e.statsResult.symbols,1),r=[],i=[],o=(R,D,w)=>{D>0&&r.push({axis:R,points:D,detail:w,kind:tv[R]??"hygiene"})},s=(R,D,w,P,L,re,Q)=>{let _=Math.max(P,1);if(w<=_)return;let ae=w/_,ee=Math.min(L,Math.ceil(Math.log2(ae)*re));if(ee<=0)return;let dn=tv[R]??"hygiene";i.push({axis:R,category:D,kind:dn,count:w,threshold:Ht(_),ratio:Ht(ae),extraPenalty:ee}),o(R,ee,`${w} ${Q} exceed pressure threshold ${Ht(_)} (${Ht(ae)}x)`)},a=e.dead.count/n;o("dead-code",Math.min(20,Math.round(a*200)),`${e.dead.count} dead symbols (${e.dead.loc} LOC deletable)`);let c=e.isolated.count/n;o("isolated",Math.min(10,Math.round(c*200)),`${e.isolated.count} isolated symbols (${e.isolated.loc} LOC deletable)`),o("cycles",Math.min(15,e.realCycleCount*5),`${e.realCycleCount} real dependency cycle(s)`);let l=e.similarCount/n*1e3;o("similar",Math.min(10,Math.round(l)),`${e.similarCount} similar function pair(s)`);let u=e.duplicateBodies.count/n*1e3;o("duplicate-bodies",Math.min(10,Math.round(u*2)),`${e.duplicateBodies.count} exact duplicate small-body group(s) (${e.duplicateBodies.loc} duplicate LOC)`);let d=e.twinDrift.count/n*1e3;o("twin-drift",Math.min(10,Math.round(d*2)),`${e.twinDrift.count} drifted twin implementation group(s) (same or near-same name, diverged or identical bodies)`);let m=e.reactComponentDuplicates.count/t*1e3;o("react-component-duplicates",Math.min(10,Math.round(m)),`${e.reactComponentDuplicates.count} duplicated React component pair(s)`);let f=un(e.reactHookCandidates),p=f/t*1e3;o("react-hook-candidates",Math.min(10,Math.round(p)),Oo(e.reactHookCandidates,"duplicated React behavior pair(s)"));let g=e.reactLargeComponentPressure.count/t*1e3;o("react-large-component-pressure",Math.min(5,Math.round(g/2)),`${e.reactLargeComponentPressure.count} large React component pressure file(s)`);let y=e.vueComponentDuplicates.count/t*1e3;o("vue-component-duplicates",Math.min(10,Math.round(y)),`${e.vueComponentDuplicates.count} duplicated Vue component pair(s)`);let h=un(e.vueComposableCandidates),x=h/t*1e3;o("vue-composable-candidates",Math.min(10,Math.round(x)),Oo(e.vueComposableCandidates,"duplicated Vue behavior pair(s)"));let b=e.vueLargeViewPressure.count/t*1e3;o("vue-large-view-pressure",Math.min(5,Math.round(b/2)),`${e.vueLargeViewPressure.count} large Vue view pressure file(s)`);let C=un(e.wrappers);o("wrappers",Math.min(3,C),Oo(e.wrappers,"wrapper candidate(s)"));let S=un(e.passthroughs);o("passthroughs",Math.min(3,S),Oo(e.passthroughs,"passthrough candidate(s)")),o("stale-abstractions",Math.min(8,e.stale.unused),`${e.stale.unused} unused stale abstraction(s); ${e.stale.singleUse} single-consumer signal(s)`);let v=e.drift.direct/t;if(o("drift",Math.min(5,Math.round(v*50)),`${e.drift.direct} direct drift finding(s); ${e.drift.signal} signal drift finding(s)`),o("complexity",Math.min(5,e.complexity.extremeCount*2),`${e.complexity.extremeCount} extreme complexity hotspot(s)`),e.gitEvidence){let R=e.gitEvidence.hiddenCoupling.scoreCount;o("hidden-coupling",Math.min(5,Math.ceil(R/10)),Oo({count:e.gitEvidence.hiddenCoupling.pairCount,scoreCount:R},"co-changing pair(s) without a structural link"))}if(s("cycles-pressure","Circular dependencies",e.realCycleCount,3,10,3,"cycle(s)"),s("complexity-pressure","Extreme complexity",e.complexity.extremeCount,3,5,2,"extreme complexity hotspot(s)"),e.gitEvidence){let R=e.gitEvidence.hiddenCoupling.scoreCount;s("hidden-coupling-pressure","Hidden coupling",R,50,10,4,"score-weighted co-changing pair(s)")}return s("similar-pressure","Similar functions",e.similarCount,Math.max(50,n*.01),8,4,"similar function pair(s)"),s("duplicate-bodies-pressure","Duplicate function bodies",e.duplicateBodies.count,Math.max(20,n*.005),8,4,"exact duplicate small-body group(s)"),s("twin-drift-pressure","Drifted twin implementations",e.twinDrift.count,Math.max(20,n*.005),8,4,"drifted twin implementation group(s)"),s("react-component-duplicates-pressure","Duplicated React components",e.reactComponentDuplicates.count,Math.max(10,t*.01),8,4,"duplicated React component pair(s)"),s("react-hook-candidates-pressure","Duplicated React hook behavior",f,Math.max(10,t*.01),8,4,"duplicated React behavior pair(s)"),s("react-large-component-pressure-pressure","Large React components",e.reactLargeComponentPressure.count,Math.max(10,t*.01),4,2,"large React component pressure file(s)"),s("vue-component-duplicates-pressure","Duplicated Vue components",e.vueComponentDuplicates.count,Math.max(10,t*.01),8,4,"duplicated Vue component pair(s)"),s("vue-composable-candidates-pressure","Duplicated Vue behavior",h,Math.max(10,t*.01),8,4,"duplicated Vue behavior pair(s)"),s("vue-large-view-pressure-pressure","Large Vue views",e.vueLargeViewPressure.count,Math.max(10,t*.01),4,2,"large Vue view pressure file(s)"),s("extract-pressure","Extraction candidates",e.extractCount,Math.max(50,n*.01),4,2,"extraction candidate(s)"),s("wrappers-pressure","Wrapper functions",C,50,4,2,"wrapper candidate(s)"),s("passthroughs-pressure","Passthrough functions",S,50,4,2,"passthrough candidate(s)"),s("stale-abstractions-pressure","Single-consumer stale abstraction signals",e.stale.singleUse,Math.max(50,n*.02),4,2,"single-consumer stale abstraction signal(s)"),s("drift-pressure","Structural drift signals",e.drift.signal,Math.max(10,t*.1),4,2,"signal drift finding(s)"),{breakdown:r,pressure:i}}import{getHeapStatistics as v2}from"v8";var I2=64*1024*1024;function Fm(){let e=globalThis.gc;if(!e)return;let t=v2();t.heap_size_limit-t.used_heap_size<I2||e()}var w2=50,E2=25e3,D2=2500,ov=2500,sv=50,P2=10,pc=["overview","dead","isolated","cycles","similar","duplicate-bodies","twin-drift","react-component-duplicates","react-hook-candidates","react-large-component-pressure","vue-component-duplicates","vue-composable-candidates","vue-large-view-pressure","extract-candidates","wrapper-candidates","passthrough-candidates","stale-abstractions","drift","complexity-hotspots","git-evidence","suppressions","coverage-contracts"],k2={overview:(e,t,n,r)=>({phase:"overview",statsResult:r,warnings:n.warnings}),dead:(e,t,n)=>({phase:"dead",dead:L2(e,t,n)}),isolated:(e,t,n)=>({phase:"isolated",isolated:N2(e,t,n)}),cycles:(e,t,n)=>({phase:"cycles",realCycleCount:A2(e,t,n)}),similar:(e,t,n)=>({phase:"similar",similarCount:M2(e,t,n)}),"duplicate-bodies":(e,t,n)=>({phase:"duplicate-bodies",duplicateBodies:j2(e,t,n)}),"twin-drift":(e,t,n)=>({phase:"twin-drift",twinDrift:B2(e,t,n)}),"react-component-duplicates":(e,t,n)=>({phase:"react-component-duplicates",reactComponentDuplicates:$2(e,t,n)}),"react-hook-candidates":(e,t,n)=>({phase:"react-hook-candidates",reactHookCandidates:H2(e,t,n)}),"react-large-component-pressure":(e,t,n)=>({phase:"react-large-component-pressure",reactLargeComponentPressure:U2(e,t,n)}),"vue-component-duplicates":(e,t,n)=>({phase:"vue-component-duplicates",vueComponentDuplicates:W2(e,t,n)}),"vue-composable-candidates":(e,t,n)=>({phase:"vue-composable-candidates",vueComposableCandidates:G2(e,t,n)}),"vue-large-view-pressure":(e,t,n)=>({phase:"vue-large-view-pressure",vueLargeViewPressure:z2(e,t,n)}),"extract-candidates":(e,t,n)=>({phase:"extract-candidates",extractCount:O2(e,t,n)}),"wrapper-candidates":(e,t,n)=>({phase:"wrapper-candidates",wrappers:V2(e,t,n)}),"passthrough-candidates":(e,t,n)=>({phase:"passthrough-candidates",passthroughs:q2(e,t,n)}),"stale-abstractions":(e,t,n)=>({phase:"stale-abstractions",stale:K2(e,t,n)}),drift:(e,t,n)=>({phase:"drift",drift:Q2(e,t,n)}),"complexity-hotspots":(e,t,n)=>({phase:"complexity-hotspots",complexity:Z2(e,t,n)}),"git-evidence":(e,t,n)=>({phase:"git-evidence",gitEvidence:J2(e,n)}),suppressions:(e,t,n)=>({phase:"suppressions",suppressions:Y2(e,n)}),"coverage-contracts":(e,t,n)=>({phase:"coverage-contracts",coverageContracts:X2(e,n)})};function _m(e,t,n={}){return T2(e,[t],n)[0]}function T2(e,t,n={}){return F2(e,n.full!==!1,(r,i)=>{let o={...i,releaseCachesBetweenPhases:!1};return t.map(s=>k2[s](e,n.scope,o,r))})}function F2(e,t,n){let r=cr(e),i=eJ(r,t);try{return n(r,i)}finally{xd(e,{semanticProvider:!0}),Fm()}}function Lm(e){return rv(_2(e))}function _2(e){let t=ge(e,"overview");return{statsResult:t.statsResult,warnings:t.warnings,dead:ge(e,"dead").dead,isolated:ge(e,"isolated").isolated,realCycleCount:ge(e,"cycles").realCycleCount,similarCount:ge(e,"similar").similarCount,duplicateBodies:ge(e,"duplicate-bodies").duplicateBodies,twinDrift:ge(e,"twin-drift").twinDrift,reactComponentDuplicates:ge(e,"react-component-duplicates").reactComponentDuplicates,reactHookCandidates:ge(e,"react-hook-candidates").reactHookCandidates,reactLargeComponentPressure:ge(e,"react-large-component-pressure").reactLargeComponentPressure,vueComponentDuplicates:ge(e,"vue-component-duplicates").vueComponentDuplicates,vueComposableCandidates:ge(e,"vue-composable-candidates").vueComposableCandidates,vueLargeViewPressure:ge(e,"vue-large-view-pressure").vueLargeViewPressure,extractCount:ge(e,"extract-candidates").extractCount,wrappers:ge(e,"wrapper-candidates").wrappers,passthroughs:ge(e,"passthrough-candidates").passthroughs,stale:ge(e,"stale-abstractions").stale,drift:ge(e,"drift").drift,complexity:ge(e,"complexity-hotspots").complexity,gitEvidence:av(e,"git-evidence")?.gitEvidence??null,suppressions:av(e,"suppressions")?.suppressions??null,coverageContracts:ge(e,"coverage-contracts").coverageContracts}}function av(e,t){return e.find(n=>n.phase===t)}function ge(e,t){let n=e.find(r=>r.phase===t);if(!n)throw new Error(`Missing health phase result: ${t}`);return n}function L2(e,t,n){return fe(e,n,"dead",()=>{let r=lr(e,{scope:t,...me.dead,scanLimit:n.candidateScanLimit,semantic:n.semantic});return gc(rJ(e,r.symbols))})}function N2(e,t,n){return fe(e,n,"isolated",()=>{let r=fo(e,{scope:t,...me.isolated,scanLimit:n.candidateScanLimit,semantic:n.semantic});return gc(iJ(e,r))})}function A2(e,t,n){return fe(e,n,"cycles",()=>uo(e,{scope:t}).filter(i=>i.kind==="real").length)}function M2(e,t,n){let r=fe(e,n,"similar",()=>Td(e,{scope:t,...me.similar,scanLimit:n.candidateScanLimit,semantic:n.semantic}));return Math.min(r,n.candidateResultLimit)}function O2(e,t,n){return fe(e,n,"extract-candidates",()=>So(e,{scope:t,...me.extract,limit:n.candidateResultLimit,scanLimit:n.candidateScanLimit,semantic:n.semantic}).length)}function j2(e,t,n){return fe(e,n,"duplicate-bodies",()=>{let r=Eo(e,{scope:t,...me.duplicateBodies,limit:n.candidateResultLimit,scanLimit:n.candidateScanLimit}),i=new Set,o=0;for(let s of r)for(let a of s.functions.slice(1))i.add(a.file),o+=a.loc;return{count:r.length,loc:o,files:[...i]}})}function B2(e,t,n){return fe(e,n,"twin-drift",()=>{let r=ri(e,{scope:t,...me.twinDrift,scanLimit:n.candidateScanLimit}).filter(s=>s.relationship==="divergent"||s.relationship==="identical"),i=new Set,o=0;for(let s of r)for(let a of s.members)i.add(a.file),o+=a.loc;return{count:r.length,loc:o,files:[...i].sort()}})}function $2(e,t,n){return fe(e,n,"react-component-duplicates",()=>{let r=go(e,{scope:t,limit:n.candidateResultLimit,scanLimit:n.candidateScanLimit});return Nm(r)})}function H2(e,t,n){return fe(e,n,"react-hook-candidates",()=>{let r=ho(e,{scope:t,limit:n.candidateResultLimit,scanLimit:n.candidateScanLimit});return uv(r,sJ)})}function U2(e,t,n){return fe(e,n,"react-large-component-pressure",()=>{let r=Fd(e,{scope:t,limit:n.candidateResultLimit,scanLimit:n.candidateScanLimit});return oJ(r)})}function W2(e,t,n){return fe(e,n,"vue-component-duplicates",()=>{let r=yo(e,{scope:t,limit:n.candidateResultLimit,scanLimit:n.candidateScanLimit});return Nm(r)})}function G2(e,t,n){return fe(e,n,"vue-composable-candidates",()=>{let r=bo(e,{scope:t,limit:n.candidateResultLimit,scanLimit:n.candidateScanLimit});return uv(r,aJ)})}function z2(e,t,n){return fe(e,n,"vue-large-view-pressure",()=>{let r=_d(e,{scope:t,limit:n.candidateResultLimit,scanLimit:n.candidateScanLimit});return gc(r)})}function V2(e,t,n){return fe(e,n,"wrapper-candidates",()=>{let r=Lo(e,{scope:t,...me.wrappers,limit:n.candidateResultLimit,scanLimit:n.candidateScanLimit,semantic:n.semantic});return lv(r,cJ)})}function q2(e,t,n){return fe(e,n,"passthrough-candidates",()=>{let r=To(e,{scope:t,...me.passthroughs,limit:n.candidateResultLimit,scanLimit:n.candidateScanLimit,semantic:n.semantic});return lv(r,lJ)})}function K2(e,t,n){return fe(e,n,"stale-abstractions",()=>{let r=_o(e,{scope:t,...me.stale,limit:n.candidateResultLimit,scanLimit:n.candidateScanLimit,semantic:n.semantic}),i=r.filter(o=>o.consumers===0).length;return{count:r.length,loc:r.reduce((o,s)=>o+s.loc,0),files:[...new Set(r.map(o=>o.file))],unused:i,singleUse:r.length-i}})}function J2(e,t){return fe(e,t,"git-evidence",()=>{let n=ze(e,{historyMode:t.gitHistoryMode}),r=n.fileChurn();if(!r)return null;let i=n.commitHistory(),o=xo(e,void 0,{limit:t.candidateResultLimit,historyMode:t.gitHistoryMode}),s={};for(let[a,c]of r)s[a]={changes:c.changes,fixChanges:c.fixChanges};return{amplification:n.changeAmplification(),hiddenCoupling:{pairCount:o.findings.length,scoreCount:Am(o.findings.reduce((a,c)=>a+cv(c),0)),top:o.findings.slice(0,5).map(a=>({fileA:a.fileA,fileB:a.fileB,together:a.together,confidence:a.confidence,focusedTogether:a.focusedTogether,broadTogether:a.broadTogether,broadCommitRatio:a.broadCommitRatio,lastTogetherAt:a.lastTogetherAt,recentTogether:a.recentTogether,commitScope:a.commitScope,recency:a.recency,scoreWeight:cv(a),subjectContext:a.subjectContext}))},fileStats:s,commitsScanned:i?.commits.length??0}})}function Y2(e,t){return fe(e,t,"suppressions",()=>{let n=uc(e);return{total:n.total,byCategory:{...n.byCategory}}})}function X2(e,t){return fe(e,t,"coverage-contracts",()=>{let n=e.config.coverageContracts??[],i=cR(e,n).filter(o=>o.status!=="ok");return{count:i.length,loc:0,files:[...new Set(i.map(o=>o.file))].sort()}})}function Q2(e,t,n){return fe(e,n,"drift",()=>{let r=ko(e,{scope:t,...me.drift,includePatternDeviations:!1,limit:Number.POSITIVE_INFINITY,semantic:n.semantic}),i=r.results.filter(a=>a.kind!=="pattern-deviation"),o=i.filter(a=>a.actionTier==="direct").length,s=i.length-o;return{count:i.length,unusedImports:r.unusedImports,architectureViolations:r.architectureViolations,layerViolations:r.layerViolations,direct:o,signal:s}})}function Z2(e,t,n){return fe(e,n,"complexity-hotspots",()=>{let r=km(e,{scope:t,minLoc:10,limit:n.complexityResultLimit,scanLimit:n.candidateScanLimit,semantic:n.semantic});return{top:r.slice(0,5).map(i=>({symbol:i.shortName,score:i.score,file:i.file})),extremeCount:r.filter(i=>i.score>w2).length}})}function eJ(e,t){let n=e.symbols>=E2||e.documents>=D2,r=t?Number.POSITIVE_INFINITY:sv,i=t?Number.POSITIVE_INFINITY:P2;return!n||t?{candidateScanLimit:void 0,candidateResultLimit:r,complexityResultLimit:i,semantic:!0,gitHistoryMode:t?"full":"bounded",releaseCachesBetweenPhases:!0,warnings:t&&n?["Large index detected; running health without candidate scan or result caps because full mode is enabled."]:[]}:{candidateScanLimit:ov,candidateResultLimit:r,complexityResultLimit:i,semantic:!1,gitHistoryMode:"bounded",releaseCachesBetweenPhases:!0,warnings:[`Large index detected; candidate-style health checks scanned their highest-priority ${ov} symbols and reported their top ${sv} findings. Enable full mode for unbounded candidate counts.`]}}function tJ(e,t){t.releaseCachesBetweenPhases&&(xd(e),Fm())}function fe(e,t,n,r){nJ(n);try{return r()}finally{tJ(e,t)}}function nJ(e){process.env.SCIP_QUERY_HEALTH_TRACE==="1"&&console.error(`[health] ${e}`)}function rJ(e,t){return t.filter(n=>!De(e,n.relativePath)&&!de(e,n.symbol,n.relativePath)&&n.kind==="dead-code")}function iJ(e,t){return t.filter(n=>!De(e,n.relativePath)&&!de(e,n.symbol,n.relativePath))}function gc(e){let t=new Set;for(let n of e){let r=n.relativePath??n.file;r&&t.add(r)}return{count:e.length,loc:e.reduce((n,r)=>n+r.loc,0),files:[...t]}}function lv(e,t){return{...gc(e),scoreCount:Am(e.reduce((r,i)=>r+t(i),0))}}function oJ(e){let t=new Map;for(let n of e)t.set(n.file,Math.max(t.get(n.file)??0,n.loc));return{count:t.size,loc:[...t.values()].reduce((n,r)=>n+r,0),files:[...t.keys()]}}function Nm(e){let t=new Map;for(let n of e)t.set(n.fileA,Math.max(t.get(n.fileA)??0,n.locA)),t.set(n.fileB,Math.max(t.get(n.fileB)??0,n.locB));return{count:e.length,loc:[...t.values()].reduce((n,r)=>n+r,0),files:[...t.keys()]}}function uv(e,t){return{...Nm(e),scoreCount:Am(e.reduce((r,i)=>r+t(i),0))}}function sJ(e){let t=e.sharedHooks.length>0,n=dv({namedState:e.sharedState,requests:e.sharedRequests,lifecycle:e.sharedEffects,functions:e.sharedHandlers});return t&&n<=2?0:t?.5:mv(e.sharedState,e.sharedHandlers,e.sharedHandlerVerbs)?.25:n>=2?1:.5}function aJ(e){let t=e.sharedComposables.length+e.sharedStores.length>0,n=dv({namedState:e.sharedBindings,requests:e.sharedRequests,lifecycle:e.sharedLifecycle,functions:e.sharedFunctions});return t&&n<=2?0:t?.5:mv(e.sharedBindings,e.sharedFunctions,e.sharedFunctionVerbs)?.25:n>=2?1:.5}function dv(e){return e.requests.length*2+e.lifecycle.length+e.namedState.filter(t=>!pv.has(fv(t))).length+Math.min(e.functions.length,3)}function mv(e,t,n){let r=[...e,...t,...n].map(fv);return r.length>0&&r.every(i=>pv.has(i))}function fv(e){return e.replace(/^handle/,"").replace(/^is/,"").replace(/^has/,"").toLowerCase()}function cJ(e){return e.actionTier==="signal"?.25:1}function lJ(e){return e.actionTier==="signal"?.25:1}function cv(e){return e.commitScope==="broad-sweep"?e.recency==="recent"?.25:0:e.commitScope==="mixed"?e.recency==="recent"?.5:.25:e.recency==="recent"?1:.5}function Am(e){return Math.round(e*100)/100}var pv=new Set(["add","apply","cancel","change","clear","close","create","delete","draft","edit","error","filter","form","load","loading","name","open","refresh","remove","reset","save","saving","search","select","selected","submit","toggle","update","value"]);function uJ(e,t,n,r={}){let i=kd(e,t,n,r);return i?{symbolA:i.symbolA,symbolB:i.symbolB,similarity:i.similarity,sharedCallees:i.sharedEvidence,uniqueToA:i.uniqueToA,uniqueToB:i.uniqueToB,consolidationStrategy:i.consolidationStrategy}:null}function dJ(e,t={}){let{scope:n,limit:r}=t,i=new F(e),o=SJ([...mJ(e,n),...gJ(e,i,n)]);return CJ(o),r?o.slice(0,r):o}function mJ(e,t){let n=[];for(let r of fJ(e,t)){if(e.isIgnored(r.barrel_path)||e.isIgnored(r.original_path)||ld(e,r.barrel_path)||k(e,r.barrel_path)&&bs(e,r.barrel_path).length===0)continue;let i=pJ(e,r),o=i?.barrel_consumers??0,s=i?.direct_consumers??0;o!==0||s!==0||n.push({barrelFile:r.barrel_path,symbol:r.symbol,shortName:I(r.symbol),originalFile:r.original_path,barrelConsumers:o,directConsumers:s,...hv(e,r.barrel_path)})}return n}function fJ(e,t){let n=t?"AND barrel_d.relative_path LIKE ?":"",r=t?[`%${t}%`]:[];return e.all(`SELECT DISTINCT
855
+ barrel_d.id AS barrel_doc_id,
856
+ barrel_d.relative_path AS barrel_path,
857
+ gs.id AS symbol_id,
858
+ gs.symbol AS symbol,
859
+ orig_d.id AS original_doc_id,
860
+ orig_d.relative_path AS original_path
861
+ FROM mentions m
862
+ JOIN chunks c ON m.chunk_id = c.id
863
+ JOIN documents barrel_d ON c.document_id = barrel_d.id
864
+ JOIN global_symbols gs ON m.symbol_id = gs.id
865
+ JOIN (
866
+ SELECT m2.symbol_id, c2.document_id
867
+ FROM mentions m2
868
+ JOIN chunks c2 ON m2.chunk_id = c2.id
869
+ WHERE m2.role = 1
870
+ GROUP BY m2.symbol_id
871
+ ) sym_def ON sym_def.symbol_id = gs.id
872
+ JOIN documents orig_d ON sym_def.document_id = orig_d.id
873
+ WHERE m.role != 1
874
+ AND (barrel_d.relative_path LIKE '%/index.ts'
875
+ OR barrel_d.relative_path LIKE '%/index.js'
876
+ OR barrel_d.relative_path = 'index.ts'
877
+ OR barrel_d.relative_path = 'index.js')
878
+ AND orig_d.id != barrel_d.id
879
+ ${e.pathExclusionsFor("barrel_d","orig_d")}
880
+ ${e.symbolNoiseFor("gs")}
881
+ -- Only function-level symbols (ending with ().), not module-level
882
+ AND gs.symbol LIKE '%().'
883
+ ${n}
884
+ ORDER BY barrel_d.relative_path, gs.symbol`,...r)}function pJ(e,t){return e.get(`SELECT
885
+ SUM(CASE WHEN uses_barrel = 1 THEN 1 ELSE 0 END) AS barrel_consumers,
886
+ SUM(CASE WHEN uses_barrel = 0 THEN 1 ELSE 0 END) AS direct_consumers
887
+ FROM (
888
+ SELECT
889
+ consumer_d.id AS consumer_doc_id,
890
+ MAX(CASE WHEN EXISTS (
891
+ SELECT 1
892
+ FROM mentions barrel_m
893
+ JOIN chunks barrel_c ON barrel_m.chunk_id = barrel_c.id
894
+ WHERE barrel_c.document_id = consumer_d.id
895
+ AND barrel_m.role != 1
896
+ AND barrel_m.symbol_id IN (
897
+ SELECT m2.symbol_id
898
+ FROM mentions m2
899
+ JOIN chunks c2 ON m2.chunk_id = c2.id
900
+ WHERE c2.document_id = ?
901
+ AND m2.role != 1
902
+ )
903
+ ) THEN 1 ELSE 0 END) AS uses_barrel
904
+ FROM mentions ref_m
905
+ JOIN chunks ref_c ON ref_m.chunk_id = ref_c.id
906
+ JOIN documents consumer_d ON ref_c.document_id = consumer_d.id
907
+ WHERE ref_m.symbol_id = ?
908
+ AND ref_m.role != 1
909
+ AND consumer_d.id != ?
910
+ AND consumer_d.id != ?
911
+ ${e.pathExclusionsFor("consumer_d")}
912
+ GROUP BY consumer_d.id
913
+ )`,t.barrel_doc_id,t.symbol_id,t.barrel_doc_id,t.original_doc_id)}function gJ(e,t,n){let r=[];for(let i of hJ(e,n))yv(e,i,i)>0||r.push(...yJ(e,t,i));return r}function hJ(e,t){return N(e,{scope:t,includeIgnored:!1}).filter(n=>bs(e,n).length>0||Jt(e,n).length>0)}function yJ(e,t,n){let r=bs(e,n).filter(o=>o.sourcePath&&!e.isIgnored(o.sourcePath)).flatMap(o=>gv(e,t,n,o.sourcePath,[bJ(o.specifier)])),i=Jt(e,n).filter(o=>o.sourcePath&&!e.isIgnored(o.sourcePath)).flatMap(o=>gv(e,t,n,o.sourcePath,o.kind==="named"&&o.names.length>0?o.names:[o.kind==="star"?`* from ${o.sourcePath}`:`* namespace from ${o.sourcePath}`]));return[...r,...i]}function gv(e,t,n,r,i){let o=t.definitionsForFile(r);return i.map(s=>{let a=o.find(c=>c.leaf===s);return{barrelFile:n,symbol:a?.symbol??`source-reexport:${n}:${s}`,shortName:a?I(a.symbol):s,originalFile:r,barrelConsumers:0,directConsumers:yv(e,r,n),...hv(e,n)}})}function bJ(e){return e.split("::").at(-1)?.split("/").at(-1)?.replace(/\.[^.]+$/,"")??e}function hv(e,t){return ar(e,t)?{actionTier:"signal",surfaceEvidence:["barrel file is declared on the package public surface"],recommendation:"Review the package API before removing this re-export; local consumers are zero, but external consumers may import through the public barrel."}:{actionTier:"direct",surfaceEvidence:[],recommendation:"Remove this unused re-export when the barrel is not part of an external API surface."}}function yv(e,t,n){let r=new Set;for(let i of N(e,{includeIgnored:!1}))if(i!==n)for(let o of Z(e,i))o.sourcePath===t&&r.add(i);return r.size}function SJ(e){let t=new Set,n=[];for(let r of e){let i=`${r.barrelFile}|${r.symbol}|${r.originalFile}`;t.has(i)||(t.add(i),n.push(r))}return n}function CJ(e){e.sort((t,n)=>n.directConsumers-t.directConsumers||t.barrelFile.localeCompare(n.barrelFile)||t.shortName.localeCompare(n.shortName))}function xJ(e,t={}){let{samples:n=50,scope:r,maxDisagreements:i=5}=t,o=new F(e),s=RJ(o.productionCallableDefinitions({scope:r,minLoc:2,requireFunctionLikeSymbol:!0}),n),a=vJ(e,s);if(s.length===0||!a)return{available:!1,sampleSize:s.length,oracleCoverage:0,scores:[],topDisagreements:[]};let c={references:bv(),callees:bv()},l=[],u=0,d=a==="semantic"?oa(e,s):new Map,m=a==="source"?EJ(e,o,s):null;for(let f of s){let p=hc(f,a==="semantic"?ia(e,f).map(C=>C.file):[...m?.referencesBySymbolId.get(f.symbolId)??[]]),g=hc(f,a==="semantic"?(d.get(f.symbolId)??[]).map(C=>C.file):[...m?.calleesBySymbolId.get(f.symbolId)??[]]);u+=1;let y=hc(f,Pt(e,f,{semanticEvidence:H}).map(C=>C.file)),h=hc(f,(o.calleeMap([f],{semantic:!1}).get(f.symbolId)??[]).map(C=>C.file)),x=Mm(a,"references"),b=Mm(a,"callees");Sv(c.references,f,"references",y,p,x,l),Sv(c.callees,f,"callees",h,g,b,l)}return l.sort((f,p)=>p.cheapOnly.length+p.oracleOnly.length-(f.cheapOnly.length+f.oracleOnly.length)),{available:!0,sampleSize:s.length,oracleCoverage:s.length>0?jm(u/s.length):0,oracleKind:a,scores:["references","callees"].map(f=>wJ(f,c[f],a)),topDisagreements:l.slice(0,i)}}function bv(){return{comparedSymbols:0,agreed:0,cheapTotal:0,oracleTotal:0,skippedOraclePartial:0}}function RJ(e,t){let n=[...e].sort((o,s)=>o.symbolId-s.symbolId);if(n.length<=t)return n;let r=n.length/t,i=[];for(let o=0;o<t;o++)i.push(n[Math.floor(o*r)]);return i}function vJ(e,t){let n=t[0];if(!n)return null;if(Om(e,n))return"source";try{if(We(e).capability("semantic-references",n.relativePath).available)return"semantic"}catch{}return t.some(r=>Om(e,r))?"source":null}function hc(e,t){let n=new Set;for(let r of t)r!==e.relativePath&&n.add(r);return n}function Sv(e,t,n,r,i,o,s){if(!o&&i.size===0){e.skippedOraclePartial+=1;return}e.comparedSymbols+=1,e.cheapTotal+=r.size,e.oracleTotal+=i.size;let a=[],c=[];for(let l of r)i.has(l)?e.agreed+=1:a.push(l);for(let l of i)r.has(l)||c.push(l);(a.length>0||c.length>0)&&s.push({symbol:I(t.symbol),question:n,cheapOnly:a,oracleOnly:c})}var IJ={references:!0,callees:!1};function wJ(e,t,n){let r=t.oracleTotal>0?t.agreed/t.oracleTotal:1,i=t.cheapTotal-t.agreed,o=Mm(n,e);return{question:e,comparedSymbols:t.comparedSymbols,precision:o&&t.cheapTotal>0?jm(t.agreed/t.cheapTotal):null,recall:jm(r),unverified:i,skippedOraclePartial:t.skippedOraclePartial}}function Mm(e,t){return e==="semantic"?IJ[t]:!1}function Om(e,t){return M(t.relativePath)==="clojure"&&z(e,t.relativePath)!==null}function EJ(e,t,n){let r=new Map,i=new Map,o=n.filter(c=>Om(e,c)),s=new Map;for(let c of o){let l=s.get(c.leaf)??[];l.push(c),s.set(c.leaf,l)}for(let c of t.sourceFiles()){if(M(c)!=="clojure")continue;let l=z(e,c);if(l)for(let u of l.fileIdentifiers)for(let d of s.get(u)??[])Cv(r,d.symbolId,c)}let a=new Map;for(let c of t.scopedDefinitions()){if(M(c.relativePath)!=="clojure")continue;let l=a.get(c.leaf)??[];l.push(c),a.set(c.leaf,l)}for(let c of o){let l=z(e,c.relativePath);if(l){for(let u of l.callSites)if(!(u.line<c.startLine||u.line>c.endLine))for(let d of a.get(u.calleeLeaf)??[])Cv(i,c.symbolId,d.relativePath)}}return{referencesBySymbolId:r,calleesBySymbolId:i}}function Cv(e,t,n){let r=e.get(t);if(r){r.add(n);return}e.set(t,new Set([n]))}function jm(e){return Math.round(e*1e3)/1e3}var DJ=new Set(Nt());function PJ(e,t={}){let{scope:n,minLoc:r=1,limit:i,scanLimit:o,maxShapeFrequency:s=12}=t,a=t.semantic!==!1,c=FJ(e,kJ(e,{scope:n,minLoc:r,scanLimit:o}),{semantic:a,maxShapeFrequency:s}),l=LJ(c);return i?l.slice(0,i):l}function kJ(e,t){let n=xe(e,{scope:t.scope}).filter(r=>TJ(r)&&!e.isIgnored(r.relativePath)).filter(r=>O(r)>=t.minLoc);return typeof t.scanLimit=="number"&&t.scanLimit>0&&n.sort((r,i)=>O(i)-O(r)||r.relativePath.localeCompare(i.relativePath)),se(n,t.scanLimit)}function TJ(e){return!e.isFunctionLike||Ie(e.symbol)?!1:e.kind===null||DJ.has(e.kind)}function FJ(e,t,n){let r=[];for(let s of t){let a=AJ(e,s,n);a&&r.push({signature:a,definition:s,fn:_J(s)})}let i=new Map;for(let s of r)i.set(s.signature,(i.get(s.signature)??0)+1);let o=new Map;for(let s of r){let a=NJ(s.fn.loc),c=(i.get(s.signature)??0)>n.maxShapeFrequency,l=c?lm(e,s.definition):null;if(c&&!l)continue;let u=c?`${s.signature}\0body\0${l}`:`${s.signature}\0band\0${a}`,d=o.get(u)??{signature:s.signature,locBand:a,exactBody:c,functions:[]};d.functions.push(s.fn),o.set(u,d)}return[...o.values()]}function _J(e){return{symbol:e.symbol,shortName:I(e.symbol),file:e.relativePath,startLine:e.startLine,endLine:e.endLine,loc:O(e)}}function LJ(e){let t=[];for(let n of e)n.functions.length>=2&&t.push(n);return t.sort((n,r)=>{let i=r.functions.length-n.functions.length;if(i!==0)return i;let o=n.functions.reduce((a,c)=>a+c.loc,0);return r.functions.reduce((a,c)=>a+c.loc,0)-o}),t}function NJ(e){return e<=5?"<=5":e<=20?"6-20":">20"}function AJ(e,t,n){if(n.semantic){let o=xy(e,t);if(o)return o}let r=MJ(t.documentation),i=r?BJ(r):null;return i||$J(OJ(e,t.relativePath,t.startLine,t.endLine,t.leaf),t.leaf)}function MJ(e){return Yt(Xt(e))}function OJ(e,t,n,r,i){let o=k(e,t);if(!o)return null;let s=o.split(/\r?\n/),a=UJ(s,n,r,i);for(let c of a){let l=Math.min(s.length-1,Math.max(c,c+4)),u="";for(let d=c;d<=l;d+=1){let m=s[d]?.trim();if(m&&(u=u?`${u} ${m}`:m,jJ(u)))return u}if(u&&u.includes("("))return u}return null}function jJ(e){let t=e.replace(/\s+/g," ").trim();return!t.includes("(")||xi(t)>0?!1:/[;{]$/.test(t)||/\)\s*(?::\s*[^={]+)?\s*(?:=>|=|throws\b|where\b|$)/i.test(t)||/\)\s*As\s+.+$/i.test(t)}function BJ(e){if(!e||!e.trim())return null;let t=e.replace(/^```\w*\s*/,"").replace(/\s*```$/,"").replace(/^\(method\)\s*/,"").replace(/^\(property\)\s*/,"").replace(/^\(function\)\s*/,"").replace(/^\(class\)\s*/,"").replace(/^\(interface\)\s*/,"").replace(/^\(enum\)\s*/,"").replace(/^\(type alias\)\s*/,"").replace(/^\(const\)\s*/,"").replace(/^\(var\)\s*/,"").trim(),n=t.indexOf("(");return n===-1||(t=t.slice(n),t=t.replace(/\s+/g,"").toLowerCase(),t.length<3)?null:t}function $J(e,t){if(!e||!e.trim())return null;let n=e.replace(/\s+/g," ").trim(),r=n.indexOf("(");if(r===-1)return null;let i=n.slice(0,r),s=new RegExp(`\\b${$(t)}\\b`,"i").exec(i);s&&typeof s.index=="number"&&(i=i.slice(0,s.index)),i=i.replace(/\b(public|private|protected|internal|final|static|abstract|sealed|virtual|override|async|suspend|inline|constexpr|consteval|constinit|const|pub|fn|function|def|sub|friend|shared|readonly|new|open|partial|export)\b/gi," ").replace(/\s+/g," ").trim();let a=HJ(n.slice(r)).replace(/\)\s*=\s*[\s\S]*$/,")").replace(/\s+throws\s+[^={]+$/i,"").replace(/\s+where\s+.+$/i,"").replace(/\s+/g," ").trim();if(!a.startsWith("("))return null;let c=`${i?`${i} `:""}${a}`.replace(/\s+/g,"").toLowerCase();return c.length>=3?c:null}function HJ(e){let t=0,n=0,r=0,i=0,o=null,s=!1;for(let a=0;a<e.length;a+=1){let c=e[a];if(o){if(s){s=!1;continue}if(c==="\\"){s=!0;continue}c===o&&(o=null);continue}if(c==='"'||c==="'"||c==="`"){o=c;continue}if(c==="(")t+=1;else if(c===")")t=Math.max(0,t-1);else if(c==="[")r+=1;else if(c==="]")r=Math.max(0,r-1);else if(c==="<")i+=1;else if(c===">")i=Math.max(0,i-1);else if(c==="{"){if(t===0&&r===0&&i===0)return e.slice(0,a);n+=1}else if(c==="}")n=Math.max(0,n-1);else if(c==="="&&e[a+1]===">"&&t===0&&n===0&&r===0&&i===0)return e.slice(0,a)}return e}function UJ(e,t,n,r){let i=$(r),o=new RegExp(`\\b${i}\\b\\s*\\(`,"i"),s=new RegExp(`\\bdef\\s+${i}\\b`,"i"),a=[],c=new Set,l=Math.max(0,Math.min(t,e.length-1)),u=Math.max(l,Math.min(e.length-1,Math.max(n,t+4)));for(let d=l;d<=u;d+=1){let m=e[d]??"";(o.test(m)||s.test(m))&&!c.has(d)&&(c.add(d),a.push(d))}for(let d=0;d<e.length;d+=1){let m=e[d]??"";(o.test(m)||s.test(m))&&!c.has(d)&&(c.add(d),a.push(d))}return a}import{spawn as GJ,spawnSync as ghe}from"child_process";var si=class extends Error{constructor(n,r){super(`${n} timed out after ${r}ms.`);this.label=n;this.timeoutMs=r}label;timeoutMs;timedOut=!0};function xv(e,t){let n=[];for(let r=0;r<e.length;r+=t)n.push(e.slice(r,r+t));return n}function yc(e){return new Promise((t,n)=>{let r=e.maxBuffer??10485760,i=GJ(process.execPath,[...process.execArgv,e.cliPath,e.command,...e.args??[]],{cwd:process.cwd(),env:e.env??process.env,stdio:["ignore","pipe","pipe"]}),o=[],s=[],a=0,c=0,l=!1,u=e.timeoutMs&&e.timeoutMs>0?setTimeout(()=>d(new si(e.label,e.timeoutMs)),e.timeoutMs):null,d=m=>{l||(l=!0,u&&clearTimeout(u),i.kill(),n(m))};i.stdout.on("data",m=>{if(a+=m.length,a>r){d(new Error(`${e.label} exceeded stdout buffer limit (${r} bytes).`));return}o.push(m)}),i.stderr.on("data",m=>{if(c+=m.length,c>r){d(new Error(`${e.label} exceeded stderr buffer limit (${r} bytes).`));return}s.push(m)}),i.on("error",d),i.on("close",m=>{if(l)return;l=!0,u&&clearTimeout(u);let f=Buffer.concat(s).toString("utf8").trim();if(m!==0){n(new Error(`${e.label} failed${f?`:
914
+ ${f}`:""}`));return}try{t(JSON.parse(Buffer.concat(o).toString("utf8")))}catch(p){n(new Error(`${e.label} returned invalid JSON: ${p instanceof Error?p.message:p}`))}})})}async function Bm(e,t,n){let r=new Array(e.length),i=0;async function o(){for(;i<e.length;){let s=i++;r[s]=await n(e[s])}}return await Promise.all(Array.from({length:Math.min(t,e.length)},()=>o())),r}function Rv(e,t){let n=new Set,r=[];for(let i of e){if(n.has(i))continue;let o=t.find(a=>a.has(i));if(!o){n.add(i),r.push([i]);continue}let s=e.filter(a=>o.has(a));s.forEach(a=>n.add(a)),r.push(s)}return r}import{spawnSync as zJ}from"child_process";import{existsSync as VJ,mkdirSync as qJ,readFileSync as KJ,renameSync as JJ,writeFileSync as YJ}from"fs";import{dirname as vv,join as XJ}from"path";var bc=3,QJ="health-report-cache.json";function $m(e,t,n,r=nY()){let i=Te(e);return i?{version:bc,projectFingerprint:i,cliVersion:n,scope:t.scope??null,full:t.full===!0,phaseTimeoutMs:t.phaseTimeoutMs??null,gitHead:r.gitHead(e.config.projectRoot)}:null}function Iv(e,t,n=Pv()){let r=Ev(e),i=Dv(t),o=!1;return E("health.report-cache.read",()=>{if(!n.existsSync(r))return null;try{let s=JSON.parse(n.readFileSync(r,"utf8"));return!ZJ(s)||s.keyHash!==i?null:(o=!0,s.report)}catch{return null}},()=>({available:!0,hit:o,keyHash:i}))}function wv(e,t,n,r=Pv()){let i=Ev(e),o={version:bc,keyHash:Dv(t),key:t,writtenAt:r.nowIso(),report:n};r.mkdirSync(vv(i),{recursive:!0});let s=`${i}.${process.pid}.${Date.now()}.tmp`;r.writeFileSync(s,JSON.stringify(o)),r.renameSync(s,i)}function Ev(e){return XJ(vv(e.config.dbPath),QJ)}function Dv(e){return he(JSON.stringify(e))}function ZJ(e){if(!e||typeof e!="object")return!1;let t=e;return t.version===bc&&typeof t.keyHash=="string"&&eY(t.key)&&typeof t.writtenAt=="string"&&tY(t.report)}function eY(e){if(!e||typeof e!="object")return!1;let t=e;return t.version===bc&&typeof t.projectFingerprint=="string"&&typeof t.cliVersion=="string"&&(t.scope===null||typeof t.scope=="string")&&typeof t.full=="boolean"&&(t.phaseTimeoutMs===null||typeof t.phaseTimeoutMs=="number")&&(t.gitHead===null||typeof t.gitHead=="string")}function tY(e){if(!e||typeof e!="object")return!1;let t=e;return typeof t.score=="number"&&typeof t.riskScore=="number"&&typeof t.hygieneScore=="number"&&typeof t.overview=="object"&&typeof t.findings=="object"&&Array.isArray(t.scoreBreakdown)&&Array.isArray(t.actions)&&Array.isArray(t.pressure)&&Array.isArray(t.topComplexity)&&Array.isArray(t.detectorPrecision)}function nY(){return{gitHead(e){let t=zJ("git",["rev-parse","HEAD"],{cwd:e,encoding:"utf8"});return t.status===0?t.stdout.trim():null}}}function Pv(){return{existsSync:VJ,mkdirSync:qJ,readFileSync:KJ,renameSync:JJ,writeFileSync:YJ,nowIso:()=>new Date().toISOString()}}var Fv="__health-phase",iY="__diff-impact-batch",oY=10,sY=4,aY=8,cY=25e3,lY=2500,Hm=2500,uY=4,dY=12,kv=3e4,_v=new Set(["react-component-duplicates","react-hook-candidates","react-large-component-pressure"]),Lv=new Set(["vue-component-duplicates","vue-composable-candidates","vue-large-view-pressure"]),mY=new Set([...Lv,"suppressions"]),fY=new Set(["similar","extract-candidates"]),Sc=2,Tv=$n({kind:"health-semantic-prewarm",invalidation:J("health-semantic-prewarm"),serialize:e=>JSON.stringify(e),deserialize:pY});function pY(e){try{let t=JSON.parse(e);if(!t||typeof t!="object")return null;let n=t;return n.version!==Sc||typeof n.definitions!="number"||!Number.isFinite(n.definitions)||typeof n.referenceCacheWrites!="number"||!Number.isFinite(n.referenceCacheWrites)||typeof n.referenceIncomplete!="number"||!Number.isFinite(n.referenceIncomplete)||typeof n.calleeRows!="number"||!Number.isFinite(n.calleeRows)||typeof n.warmedAt!="number"||!Number.isFinite(n.warmedAt)?null:{version:Sc,definitions:n.definitions,referenceCacheWrites:n.referenceCacheWrites,referenceIncomplete:n.referenceIncomplete,calleeRows:n.calleeRows,warmedAt:n.warmedAt}}catch{return null}}function Nv(e){console.log(`Heuristic ${e}: review before acting; these are candidates, not exact compiler facts.
915
+ `)}function gY(e){let t=cr(e);return t.symbols>=cY||t.documents>=lY}function Av(e,t,n,r={}){return gY(e)?n?(r.quiet||console.error(`Large index detected; ${t} is running the unbounded semantic pass because --full was supplied.`),{semantic:!0}):(r.quiet||console.error(`Large index detected; ${t} will scan the highest-priority ${Hm} candidates with semantic enrichment disabled. Run "scip-query ${t} --full" for the unbounded semantic pass.`),{scanLimit:Hm,semantic:!1,analysisBudget:{scanLimit:Hm,semanticEnrichment:!1,reason:"large index default budget; pass --full for unbounded semantic analysis"}}):{semantic:!0}}function $he(e){return e?`analysis budget: scanning up to ${e.scanLimit} candidate(s); semantic enrichment=${e.semanticEnrichment}; ${e.reason}`:null}var hY={env:process.env,projectFingerprint:Te,semanticEngineFingerprint:CY,readMarker:(e,t,n)=>Tv.read(e,t,n),writeMarker:(e,t,n,r)=>Tv.write(e,t,n,r),candidateDefinitions:(e,t)=>new F(e).scopedDefinitions(t.scope).filter(n=>Ee(n.relativePath)!==null),materializeReferences:(e,t,n)=>We(e).materializeReferences(t,n),materializeCallees:Iu};function yY(e,t,n=hY){if(t.full!==!0)return Mn("default-mode");if((n.env??process.env).SCIP_QUERY_HEALTH_SEMANTIC_PREWARM==="0")return Mn("disabled");let r=Mn("error");return E("health.semantic-prewarm",()=>{try{r=bY(e,t,n)}catch(i){r=Mn("error",{error:i instanceof Error?i.message:String(i)})}return r},()=>xY(r))}function bY(e,t,n){let r=n.projectFingerprint(e);if(!r)return Mn("missing-project-fingerprint");let i=SY(t,n.semanticEngineFingerprint(e)),o=n.readMarker(e,i,r);if(o&&o.referenceIncomplete===0)return Mn("cache-hit");let s=[];if(s=E("health.semantic-prewarm.candidate-definitions",()=>(s=n.candidateDefinitions(e,t),s),()=>({definitions:s.length})),s.length===0)return Mn("no-semantic-definitions");let a=0,c=E("health.semantic-prewarm.references",()=>{let m=n.materializeReferences(e,s,{prefetchCallees:!0});return a=m.cacheHits+m.cacheWrites+m.inMemoryHits,m},()=>({definitions:s.length,rows:a}));if(c.cacheHits+c.cacheWrites+c.inMemoryHits===0&&c.misses+c.unkeyed>0)return Mn("provider-unavailable",{definitions:s.length,referenceMisses:c.misses});let u=0,d=E("health.semantic-prewarm.callees",()=>{let m=n.materializeCallees(e,s);return u=m.size,m},()=>({definitions:s.length,rows:u}));return c.incomplete>0?{status:"partial",reason:"incomplete-references",definitions:s.length,referenceCacheHits:c.cacheHits,referenceCacheWrites:c.cacheWrites,referenceMisses:c.misses,referenceIncomplete:c.incomplete,calleeRows:d.size}:(E("health.semantic-prewarm.marker-write",()=>n.writeMarker(e,i,r,{version:Sc,definitions:s.length,referenceCacheWrites:c.cacheWrites,referenceIncomplete:c.incomplete,calleeRows:d.size,warmedAt:Date.now()})),{status:"warmed",reason:"cache-miss",definitions:s.length,referenceCacheHits:c.cacheHits,referenceCacheWrites:c.cacheWrites,referenceMisses:c.misses,referenceIncomplete:c.incomplete,calleeRows:d.size})}function SY(e,t){return JSON.stringify({version:Sc,cliVersion:er,semanticEngineFingerprint:t,scope:e.scope??null})}function CY(e){return he(JSON.stringify({kind:"health-semantic-prewarm-engine",rust:Yn(e.config.projectRoot)}))}function Mn(e,t={}){return{status:"skipped",reason:e,definitions:0,referenceCacheHits:0,referenceCacheWrites:0,referenceMisses:0,referenceIncomplete:0,calleeRows:0,...t}}function xY(e){return{status:e.status,reason:e.reason,definitions:e.definitions,referenceCacheHits:e.referenceCacheHits,referenceCacheWrites:e.referenceCacheWrites,referenceMisses:e.referenceMisses,referenceIncomplete:e.referenceIncomplete,calleeRows:e.calleeRows,error:e.error}}async function Hhe(e){let t=DY(e),n={...e,phaseTimeoutMs:t??null},r=nn(m=>{let f=$m(m,n,er);if(!f)return null;let p=Iv(m,f);return p?(p.detectorPrecision=Tm(mc(m),Date.now()),p):null});if(r)return r;let{applicability:i,overview:o}=nn(m=>({applicability:RY(m,e),overview:_m(m,"overview",e)})),s=new Map;s.set("overview",o);let a=pc.filter(m=>m==="overview"?!1:vY(m,i)?!0:(s.set(m,fr(m)),!1)),c=IY(a);e.full&&nn(m=>yY(m,e));let l=await Bm(c,PY(c.length),m=>wY(m,e,t)),u=[];if(l.flat().forEach(m=>{m.healthPhaseMeta&&u.push(`Health phase "${m.phase}" deferred: ${m.healthPhaseMeta.reason}. Run health --full for exhaustive analysis.`),s.set(m.phase,m)}),u.length>0){let m=s.get("overview");s.set("overview",{...m,warnings:[...m.warnings,...u]})}let d=Lm(pc.map(m=>s.get(m)));return d.detectorPrecision=nn(m=>Tm(mc(m),Date.now())),nn(m=>{let f=$m(m,n,er);f&&wv(m,f,d)}),d}function RY(e,t){return ls(e,{scope:t.scope})}function vY(e,t){return _v.has(e)?t.react:Lv.has(e)?t.vue:!0}function IY(e){return Rv(e,[_v,mY,fY])}function fr(e){switch(e){case"react-component-duplicates":return{phase:e,reactComponentDuplicates:{count:0,loc:0,files:[]}};case"react-hook-candidates":return{phase:e,reactHookCandidates:{count:0,loc:0,files:[]}};case"react-large-component-pressure":return{phase:e,reactLargeComponentPressure:{count:0,loc:0,files:[]}};case"vue-component-duplicates":return{phase:e,vueComponentDuplicates:{count:0,loc:0,files:[]}};case"vue-composable-candidates":return{phase:e,vueComposableCandidates:{count:0,loc:0,files:[]}};case"vue-large-view-pressure":return{phase:e,vueLargeViewPressure:{count:0,loc:0,files:[]}};default:throw new Error(`Health phase "${e}" cannot be synthesized.`)}}function wY(e,t,n){if(e.length===1)return EY(e[0],t,n).then(s=>[s]);let r=e.join(","),i=process.argv[1]??Wm(import.meta.url),o=[r];return t.scope&&o.push("--scope",t.scope),t.full&&o.push("--full"),yc({cliPath:i,command:Fv,args:o,label:`Health phases "${r}"`,timeoutMs:n}).catch(s=>{if(t.full||!(s instanceof si))throw s;return e.map(a=>Mv(a,s.timeoutMs,`timed out after ${s.timeoutMs}ms`))})}function EY(e,t,n){let r=process.argv[1]??Wm(import.meta.url),i=[e];return t.scope&&i.push("--scope",t.scope),t.full&&i.push("--full"),yc({cliPath:r,command:Fv,args:i,label:`Health phase "${e}"`,timeoutMs:n}).catch(o=>{if(t.full||!(o instanceof si))throw o;return Mv(e,o.timeoutMs,`timed out after ${o.timeoutMs}ms`)})}function DY(e,t=process.env){if(e.full)return;let n=t.SCIP_QUERY_HEALTH_PHASE_TIMEOUT_MS;if(!n)return kv;let r=parseInt(n,10);return!Number.isFinite(r)||r<0?kv:r===0?void 0:r}function Mv(e,t,n){let r={healthPhaseMeta:{status:"deferred",reason:n,timeoutMs:t}};switch(e){case"overview":throw new Error("Overview health phase cannot be deferred.");case"dead":return{phase:e,dead:{count:0,loc:0,files:[]},...r};case"isolated":return{phase:e,isolated:{count:0,loc:0,files:[]},...r};case"cycles":return{phase:e,realCycleCount:0,...r};case"similar":return{phase:e,similarCount:0,...r};case"duplicate-bodies":return{phase:e,duplicateBodies:{count:0,loc:0,files:[]},...r};case"twin-drift":return{phase:e,twinDrift:{count:0,loc:0,files:[]},...r};case"react-component-duplicates":return{...fr(e),...r};case"react-hook-candidates":return{...fr(e),...r};case"react-large-component-pressure":return{...fr(e),...r};case"vue-component-duplicates":return{...fr(e),...r};case"vue-composable-candidates":return{...fr(e),...r};case"vue-large-view-pressure":return{...fr(e),...r};case"extract-candidates":return{phase:e,extractCount:0,...r};case"wrapper-candidates":return{phase:e,wrappers:{count:0,loc:0,files:[]},...r};case"passthrough-candidates":return{phase:e,passthroughs:{count:0,loc:0,files:[]},...r};case"stale-abstractions":return{phase:e,stale:{count:0,loc:0,files:[],unused:0,singleUse:0},...r};case"drift":return{phase:e,drift:{count:0,unusedImports:0,architectureViolations:0,layerViolations:0,direct:0,signal:0},...r};case"complexity-hotspots":return{phase:e,complexity:{top:[],extremeCount:0},...r};case"git-evidence":return{phase:e,gitEvidence:null,...r};case"suppressions":return{phase:e,suppressions:{total:0,byCategory:{}},...r};case"coverage-contracts":return{phase:e,coverageContracts:{count:0,loc:0,files:[]},...r}}}var PY=Ov({envKey:"SCIP_QUERY_HEALTH_CONCURRENCY",defaultMinimum:uY,defaultMaximum:dY});function Uhe(e,t){if(t){console.log(JSON.stringify(e,null,2));return}if(console.log(`
916
+ Codebase Health Score: ${e.score}/100`),console.log(` Risk: ${e.riskScore}/100 (risk-oriented graph facts + change graph)`),console.log(` Hygiene: ${e.hygieneScore}/100 (tidiness candidates)
917
+ `),console.log(` ${e.overview.documents} files | ${e.overview.symbols} symbols | ${fS(e.overview.indexSizeBytes)}
918
+ `),e.warnings&&e.warnings.length>0){console.log(" Warnings:");for(let r of e.warnings)console.log(` ${r}`);console.log("")}console.log(" Findings:");let n=e.findings;if(n.deadSymbols>0&&console.log(` Dead code: ${n.deadSymbols} symbols (${n.deadLoc} LOC)`),n.isolatedSymbols>0&&console.log(` Isolated symbols: ${n.isolatedSymbols} (${n.isolatedLoc} LOC)`),n.cycles>0&&console.log(` Circular deps: ${n.cycles}`),n.similarPairs>0&&console.log(` Similar pairs: ${n.similarPairs}`),n.twinDriftGroups>0&&console.log(` Drifted twins: ${n.twinDriftGroups} group(s)`),n.reactComponentDuplicatePairs>0&&console.log(` React components: ${n.reactComponentDuplicatePairs} duplicate pair(s)`),n.reactHookCandidatePairs>0&&console.log(` React hook reuse: ${Um(n.reactHookCandidatePairs,n.reactHookCandidateScoreCount)} candidate pair(s)`),n.reactLargeComponentPressureFiles>0&&console.log(` React large comps: ${n.reactLargeComponentPressureFiles} component(s)`),n.vueComponentDuplicatePairs>0&&console.log(` Vue components: ${n.vueComponentDuplicatePairs} duplicate pair(s)`),n.vueComposableCandidatePairs>0&&console.log(` Vue composables: ${Um(n.vueComposableCandidatePairs,n.vueComposableCandidateScoreCount)} candidate pair(s)`),n.vueLargeViewPressureFiles>0&&console.log(` Vue large views: ${n.vueLargeViewPressureFiles} file(s)`),n.extractionCandidates>0&&console.log(` Extract candidates: ${n.extractionCandidates}`),n.wrappers>0&&console.log(` Wrapper functions: ${Um(n.wrappers,n.wrapperScoreCount)}`),n.passthroughs>0&&console.log(` Passthroughs: ${n.passthroughs}`),n.staleTypes>0&&console.log(` Stale abstractions: ${n.staleTypes}`),n.driftedFiles>0&&console.log(` Pattern drift: ${n.driftedFiles} files`),n.complexityHotspotCount>0&&console.log(` Complexity hotspots: ${n.complexityHotspotCount}`),e.actions.length>0){console.log(`
919
+ Prioritized Actions (highest impact + lowest effort first):`);for(let r=0;r<e.actions.length;r++){let i=e.actions[r],o=i.locRecoverable>0?` (~${i.locRecoverable} LOC involved)`:"";console.log(` ${r+1}. [${i.effort} effort / ${i.impact} impact] ${i.description}${o}`)}}if(e.topComplexity.length>0){console.log(`
920
+ Top Complexity Hotspots:`);for(let r of e.topComplexity)console.log(` ${r.score.toFixed(1).padStart(6)} ${r.symbol}`)}if(FY(e),TY(e),e.scoreBreakdown.length>0){console.log(`
921
+ Score Breakdown (100 minus the following):`);for(let r of e.scoreBreakdown)console.log(` -${String(r.points).padStart(2)} ${r.axis}: ${r.detail}`)}e.actions.length===0&&console.log(e.warnings&&e.warnings.length>0?`
922
+ No findings from completed analyses. Review warnings before interpreting this result as clean.`:`
923
+ No issues found. Codebase is clean.`)}function Um(e,t){return Math.abs(e-t)<.01?String(e):`${e} (${kY(t)} score-weighted)`}function kY(e){return Number.isInteger(e)?String(e):e.toFixed(2).replace(/0+$/,"").replace(/\.$/,"")}function TY(e){if(e.pressure.length!==0){console.log(`
924
+ Maintenance Pressure:`);for(let t of e.pressure)console.log(` ${t.category}: ${t.count} / ${t.threshold} threshold (${t.ratio}x, -${t.extraPenalty} ${t.kind})`)}}function FY(e){let t=e.axes;if(console.log(`
925
+ Axes:`),console.log(` Zero-reference candidates: ${t.deletable.loc} LOC across ${t.deletable.symbols} symbols`),t.changeAmplification){let r=t.changeAmplification;console.log(` Change amplification: ${r.medianFilesPerCommit} files/commit median, ${r.p90FilesPerCommit} p90 (${r.commitsAnalyzed} commits)`)}if(t.hiddenCoupling&&t.hiddenCoupling.pairCount>0){console.log(` Hidden coupling: ${t.hiddenCoupling.pairCount} co-changing pair(s) without a dependency edge`);for(let r of t.hiddenCoupling.top.slice(0,3))console.log(` ${r.fileA} <-> ${r.fileB} (${r.together}x together, ${Math.round(r.confidence*100)}%)`)}if(t.churnWeightedComplexity&&t.churnWeightedComplexity.length>0){let r=t.churnWeightedComplexity[0];r.weighted>0&&console.log(` Churn x complexity: hottest is ${r.symbol} (${r.changes} changes, weighted ${r.weighted})`)}let n=t.evidenceQuality;if(console.log(` Evidence quality: ${n.graphFindings} graph-fact finding(s), ${n.heuristicFindings} heuristic finding(s), ${n.userSuppressed} user-suppressed`),e.validation&&e.validation.flaggedFiles>0){let r=e.validation,i=r.ratio===null?"n/a":`${r.ratio}x`;console.log(` Validation: flagged files fix-density ${r.flaggedFixDensity} vs baseline ${r.baselineFixDensity} (${i})`),console.log(` fix-commit signal: subject-keyword heuristic over ${r.validationBasis.commitsScanned} commits`)}}async function Whe(e){let t=nn(i=>{let o=An(i,{base:e.base});return o.note?{kind:"complete",result:ei(i,{base:e.base})}:o.changedFiles.length===0?{kind:"complete",result:ei(i,{base:e.base})}:{kind:"batched",plan:o}});if(t.kind==="complete")return t.result;let n=xv(t.plan.changedFiles,oY),r=await Bm(n,_Y(n.length),i=>AY(i,e));return qa(t.plan.changedFiles,r)}var _Y=Ov({envKey:"SCIP_QUERY_DIFF_IMPACT_CONCURRENCY",defaultMinimum:sY,defaultMaximum:aY});function Ov(e){return(t,n=process.env,r=rY)=>LY(t,n,r,e)}function LY(e,t,n,r){let i=t[r.envKey],o=NY(n,r),s=i?parseInt(i,10):o;return!Number.isFinite(s)||s<1?Math.min(o,e):Math.min(s,e)}function NY(e,t){let n=e(),r=Number.isFinite(n)?Math.max(t.defaultMinimum,n-1):0;return Math.min(t.defaultMaximum,Math.max(t.defaultMinimum,r))}function AY(e,t){let n=process.argv[1]??Wm(import.meta.url),r=[];return t.base&&r.push("--base",t.base),yc({cliPath:n,command:iY,args:r,env:{...process.env,SCIP_QUERY_DIFF_IMPACT_FILES:JSON.stringify(e)},label:"Diff-impact batch"})}function Ghe(e){console.log(`Changed files: ${e.summary.totalChangedFiles}`),console.log(`Changed symbols: ${e.summary.totalChangedSymbols}`),console.log(`Affected consumer files: ${e.summary.totalAffectedFiles}`),e.summary.note&&console.log(`Note: ${e.summary.note}`);let t=e.attributionNotes.filter(n=>n.method==="unattributed");if(t.length>0){let n=[...new Set(t.map(r=>r.file))];for(let r of n){let i=t.filter(o=>o.file===r).length;console.log(`note: ${i} changed line-range(s) in ${r} belong to no indexed symbol`)}}console.log(""),e.changedSymbols.length>0&&(console.log("Changed symbols:"),Lt.list(e.changedSymbols,n=>` ${n.file} ${n.shortName} (fan-in: ${n.fanIn})`)),e.affectedConsumers.length>0&&(console.log(`
926
+ Affected consumer files:`),Lt.list(e.affectedConsumers,n=>` ${n.file} (${n.consumedSymbols} symbol(s))`))}var jv=Symbol("option-value-source"),Bv=new Map;function Yhe(e){Bv=new Map(e)}function jo(e){return(...t)=>{let{args:n,opts:r}=UY(t);nn(i=>e({db:i,args:n,opts:r}))}}function xc(e,t){return jo(n=>{let r=Av(n.db,e,Cc(n.opts,"full"),{quiet:Cc(n.opts,"json")});t({...n,budget:r})})}function Xhe(e){return jo(t=>ai(t,e,{kind:"list"}))}function Qhe(e){return jo(t=>ai(t,e,{kind:"table",headers:e.headers,dashWidths:e.dashWidths}))}function Zhe(e){return jo(t=>ai(t,e,{kind:"grouped",key:e.key}))}function MY(e){return jo(t=>Gm(t,e))}function eye(e){return MY({commandName:e.commandName,query:e.query,emptyMessage:e.emptyMessage,heuristicLabel:e.heuristicLabel,before:e.before,render:(t,n)=>Lt.sectionedReport(e.sections(t,n)),toJson:e.toJson,after:e.after})}function OY(e,t){return xc(e,n=>Gm(n,{...t,commandName:t.commandName??e}))}function tye(e,t){return OY(e,{commandName:t.commandName??e,query:t.query,emptyMessage:t.emptyMessage,heuristicLabel:t.heuristicLabel,before:t.before,render:(n,r)=>Lt.sectionedReport(t.sections(n,r)),toJson:t.toJson,after:t.after})}function nye(e,t){return xc(e,n=>ai(n,{...t,commandName:e},{kind:"list"}))}function rye(e,t){return xc(e,n=>ai(n,{...t,commandName:e},{kind:"table",headers:t.headers,dashWidths:t.dashWidths}))}function iye(e,t){return xc(e,n=>ai(n,{...t,commandName:e},{kind:"grouped",key:t.key}))}function oye(e,t){return String(e[t])}function sye(e,t){let n=e[t];return typeof n=="string"?n:void 0}function aye(e,t){let n=e[t];return typeof n=="string"?n:void 0}function $v(e,t){let n=e[t];return typeof n=="number"?n:void 0}function Cc(e,t){return!!e[t]}function cye(e,t){let n=e[t];return Array.isArray(n)&&n.every(r=>typeof r=="string")?n:[]}function lye(e,t,n){return $v(e,t)??n}function uye(e,t,n){let r=$v(e,t),i=r!==void 0&&jY(e,t)!=="default";if(Cc(e,"full")){if(i)throw new Error("--full cannot be combined with --limit. Use --full for all findings, or --limit N for a capped report.");return Number.MAX_SAFE_INTEGER}return r??n}function jY(e,t){return e[jv]?.(t)}function ai(e,t,n){Gm(e,{commandName:t.commandName,query:t.query,emptyMessage:(r,i)=>r.length===0&&t.emptyMessage?t.emptyMessage(i):void 0,heuristicLabel:t.heuristicLabel,render:(r,i)=>{n.kind==="list"?Lt.list(r,o=>t.format(o,i)):n.kind==="table"?Lt.table(n.headers,r.map(o=>t.format(o,i)),n.dashWidths):Lt.groupedByFile(r,o=>t.format(o,i),n.key?o=>n.key(o,i):void 0)},toJson:t.toJson,before:t.before,after:t.after})}function Gm(e,t){let n=t.query(e);if(Cc(e.opts,"json")){$Y(t.commandName,e.args,e.opts,t.toJson?t.toJson(n,e):n,{analysisBudget:BY(e)});return}let r=t.emptyMessage?.(n,e);if(r){Lt.empty(r);return}t.heuristicLabel&&Nv(t.heuristicLabel),t.before?.(n,e),t.render(n,e),t.after?.(n,e)}function BY(e){return e.budget?.analysisBudget}function $Y(e,t,n,r,i={}){let o=e?Bv.get(e):void 0;console.log(JSON.stringify({command:e,...o?{evidence:o}:{},...i.analysisBudget?{analysisBudget:i.analysisBudget}:{},args:HY(t),options:n,result:r},null,2))}function HY(e){return e.filter(t=>typeof t=="string"||typeof t=="number"||typeof t=="boolean")}function UY(e){if(e.length===0)return{args:[],opts:{}};let t=e[e.length-1];return{args:e.slice(0,-1),opts:WY(t)}}function WY(e){if(!e||typeof e!="object")return{};let t=e;if(typeof t.opts=="function"){let n=t.opts();return!n||typeof n!="object"?{}:(typeof t.getOptionValueSource=="function"&&Object.defineProperty(n,jv,{value:r=>t.getOptionValueSource(r),enumerable:!1}),n)}return e}export{Te as a,QY as b,N as c,DX as d,wr as e,Et as f,Me as g,U as h,gf as i,hf as j,yf as k,aI as l,E as m,o5 as n,pn as o,$ as p,st as q,b5 as r,S5 as s,K as t,HE as u,VX as v,cp as w,i8 as x,ie as y,I as z,T as A,Y as B,xe as C,B as D,wi as E,$8 as F,ao as G,Nt as H,NS as I,Zne as J,HZ as K,Fl as L,UZ as M,Tg as N,dF as O,Nl as P,YZ as Q,pF as R,XZ as S,_g as T,As as U,dt as V,Fe as W,jl as X,zg as Y,D3 as Z,UF as _,Bl as $,Ti as aa,o6 as ba,P6 as ca,kh as da,V_ as ea,Th as fa,nu as ga,Ze as ha,d5 as ia,yr as ja,xI as ka,Rf as la,m5 as ma,Ho as na,It as oa,Or as pa,jr as qa,Tt as ra,$h as sa,uL as ta,Js as ua,ey as va,ta as wa,x7 as xa,cr as ya,FO as za,MO as Aa,Q7 as Ba,pd as Ca,gd as Da,hd as Ea,yd as Fa,bd as Ga,lr as Ha,Aj as Ia,jj as Ja,Bj as Ka,$j as La,cee as Ma,Zj as Na,nB as Oa,rB as Pa,iB as Qa,sB as Ra,aB as Sa,cB as Ta,lC as Ua,ur as Va,kB as Wa,fo as Xa,_B as Ya,LB as Za,$B as _a,GB as $a,Id as ab,Oa as bb,kd as cb,po as db,N$ as eb,go as fb,ho as gb,Fd as hb,yo as ib,bo as jb,_d as kb,E1 as lb,So as mb,_H as nb,$d as ob,Hd as pb,dU as qb,xo as rb,An as sb,Tx as tb,fG as ub,Eo as vb,LG as wb,ko as xb,To as yb,_o as zb,Lo as Ab,FV as Bb,ym as Cb,Sm as Db,xm as Eb,vde as Fb,YV as Gb,XV as Hb,QV as Ib,ZV as Jb,Nq as Kb,Aq as Lb,Wq as Mb,rK as Nb,uK as Ob,DK as Pb,Em as Qb,Pm as Rb,dc as Sb,o2 as Tb,km as Ub,$t as Vb,Wfe as Wb,Gfe as Xb,Kfe as Yb,Jfe as Zb,mc as _b,Yfe as $b,pc as ac,_m as bc,T2 as cc,uJ as dc,gee as ec,dJ as fc,xJ as gc,PJ as hc,Ly as ic,sa as jc,Eu as kc,Ny as lc,aa as mc,Oy as nc,qy as oc,Ky as pc,_ee as qc,Lee as rc,Nee as sc,Aee as tc,Mee as uc,Vi as vc,ob as wc,Vee as xc,Ki as yc,cb as zc,er as Ac,_u as Bc,Lu as Cc,mte as Dc,fte as Ec,pte as Fc,gte as Gc,Rte as Hc,vte as Ic,Ite as Jc,wte as Kc,Ate as Lc,Hte as Mc,Ute as Nc,xa as Oc,nS as Pc,rS as Qc,sr as Rc,iS as Sc,Xu as Tc,une as Uc,Qu as Vc,rd as Wc,dS as Xc,xne as Yc,mS as Zc,Rne as _c,vne as $c,Ine as ad,nn as bd,wne as cd,fS as dd,Ene as ed,pS as fd,a0 as gd,Pne as hd,kne as id,Lt as jd,Fv as kd,iY as ld,Nv as md,Av as nd,$he as od,Hhe as pd,Uhe as qd,Whe as rd,Ghe as sd,Yhe as td,jo as ud,xc as vd,Xhe as wd,Qhe as xd,Zhe as yd,MY as zd,eye as Ad,OY as Bd,tye as Cd,nye as Dd,rye as Ed,iye as Fd,oye as Gd,sye as Hd,aye as Id,$v as Jd,Cc as Kd,cye as Ld,lye as Md,uye as Nd,jY as Od,$Y as Pd,UY as Qd,WY as Rd};
927
+ //# sourceMappingURL=chunk-SVLTAG5O.js.map