scip-query 0.19.0 → 0.19.1

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 (178) hide show
  1. package/dist/augment-vue-worker.js +1 -1
  2. package/dist/{chunk-YHYTDWFT.js → chunk-24ET4VLC.js} +2 -2
  3. package/dist/{chunk-IXORBCMR.js → chunk-2NA6TYP4.js} +2 -2
  4. package/dist/{chunk-XKWEMFHP.js → chunk-2WCXKANA.js} +2 -2
  5. package/dist/{chunk-GJ3FR5WG.js → chunk-34MLC6UI.js} +2 -2
  6. package/dist/{chunk-PAZFJMXB.js → chunk-3WLRW5TC.js} +2 -2
  7. package/dist/{chunk-EZHARAL4.js → chunk-4BU54UJG.js} +2 -2
  8. package/dist/{chunk-XTSVYYAL.js → chunk-4CZJ4YJB.js} +2 -2
  9. package/dist/{chunk-TCVRJ56J.js → chunk-4FMT4HPC.js} +2 -2
  10. package/dist/{chunk-7FG5M53V.js → chunk-53SUJOJA.js} +2 -2
  11. package/dist/{chunk-YBAC3RON.js → chunk-5GOBZI34.js} +2 -2
  12. package/dist/{chunk-X36LKKVG.js → chunk-5OZCNAVM.js} +2 -2
  13. package/dist/{chunk-FMC3BI4I.js → chunk-5TEUKVSM.js} +2 -2
  14. package/dist/{chunk-WT7TOU2C.js → chunk-5W2VAEVR.js} +2 -2
  15. package/dist/{chunk-AWSRND4W.js → chunk-63P42UR6.js} +2 -2
  16. package/dist/{chunk-GNJHHPZE.js → chunk-64QITTX7.js} +2 -2
  17. package/dist/{chunk-XPYXEEDO.js → chunk-6O5JOS7T.js} +2 -2
  18. package/dist/{chunk-X65VYV2S.js → chunk-6PKO2TNZ.js} +2 -2
  19. package/dist/{chunk-X3OOU7CF.js → chunk-7SGOWD2Y.js} +2 -2
  20. package/dist/{chunk-ZXWFN7CK.js → chunk-7TJJY2C3.js} +2 -2
  21. package/dist/{chunk-OGHGTD6Z.js → chunk-AEM24WSF.js} +2 -2
  22. package/dist/{chunk-IWK562KR.js → chunk-AGTATREV.js} +2 -2
  23. package/dist/{chunk-SATRCB5O.js → chunk-AOSFSYEA.js} +2 -2
  24. package/dist/{chunk-3OSRXJKK.js → chunk-APLNTJPJ.js} +2 -2
  25. package/dist/{chunk-TDGCALH6.js → chunk-AYRHVJXW.js} +2 -2
  26. package/dist/{chunk-AM2LGOEX.js → chunk-B2WQKQKP.js} +2 -2
  27. package/dist/{chunk-F5L7WEZF.js → chunk-BBBKPOIT.js} +2 -2
  28. package/dist/{chunk-2FAJTZSX.js → chunk-BCMOTIB6.js} +2 -2
  29. package/dist/{chunk-RJLU7IMR.js → chunk-BMTBVMA3.js} +2 -2
  30. package/dist/{chunk-JFGUBZWE.js → chunk-C3KCSAQ4.js} +2 -2
  31. package/dist/{chunk-FLIF3JWA.js → chunk-CAKPEQZB.js} +2 -2
  32. package/dist/{chunk-PKAPOFF5.js → chunk-CIYUFF24.js} +2 -2
  33. package/dist/{chunk-7EI4MU5A.js → chunk-CKFMZE77.js} +2 -2
  34. package/dist/{chunk-A45K6VUK.js → chunk-DCDOGW32.js} +2 -2
  35. package/dist/{chunk-4ZCNFENR.js → chunk-DFQNE73Y.js} +2 -2
  36. package/dist/{chunk-J3U47L4Q.js → chunk-DO775SYA.js} +2 -2
  37. package/dist/{chunk-NEG77KKH.js → chunk-DRH3AD7W.js} +2 -2
  38. package/dist/{chunk-UVMME4FI.js → chunk-DZXFZAZO.js} +2 -2
  39. package/dist/{chunk-GMZYT44R.js → chunk-E3KWOHH7.js} +2 -2
  40. package/dist/{chunk-F334Z5UA.js → chunk-EMIIOOTM.js} +2 -2
  41. package/dist/{chunk-GBB2RUDN.js → chunk-ESNRT7QN.js} +130 -130
  42. package/dist/{chunk-RIGY5DDE.js → chunk-FB6IKAKZ.js} +2 -2
  43. package/dist/{chunk-BGUYAA3Q.js → chunk-FBUNGRKI.js} +2 -2
  44. package/dist/{chunk-M2TRDR25.js → chunk-FC5K7T35.js} +1 -1
  45. package/dist/{chunk-4ZHJAHLE.js → chunk-FHLYJVXF.js} +2 -2
  46. package/dist/{chunk-KWBA6FDD.js → chunk-FRXB74RQ.js} +2 -2
  47. package/dist/{chunk-BYPVNKJT.js → chunk-FTRNGQGR.js} +2 -2
  48. package/dist/{chunk-54UYBTZW.js → chunk-FUFNRZFJ.js} +2 -2
  49. package/dist/{chunk-QNMOZ3CJ.js → chunk-GAE7WCBK.js} +2 -2
  50. package/dist/{chunk-547VY366.js → chunk-GIHVWNKQ.js} +2 -2
  51. package/dist/{chunk-AEDB4WXE.js → chunk-HCS5LB6U.js} +2 -2
  52. package/dist/{chunk-UXOVHGT6.js → chunk-HFBNIIZX.js} +2 -2
  53. package/dist/{chunk-JHK2DMUQ.js → chunk-HGFDYOVB.js} +1 -1
  54. package/dist/{chunk-6SHX42QQ.js → chunk-IOOCKVUA.js} +2 -2
  55. package/dist/{chunk-XDVT7QPG.js → chunk-J4MYRIYT.js} +2 -2
  56. package/dist/{chunk-TAB7AWKO.js → chunk-J5XJWCB3.js} +2 -2
  57. package/dist/{chunk-PXJIEMND.js → chunk-JBZXJXIS.js} +2 -2
  58. package/dist/{chunk-UJL3N6TC.js → chunk-JJZRS2OP.js} +2 -2
  59. package/dist/chunk-KC2IFAAU.js +3 -0
  60. package/dist/{chunk-4XTPZ5CR.js → chunk-KMOMNTB4.js} +2 -2
  61. package/dist/{chunk-YYR7ADNB.js → chunk-KMUFGAIK.js} +2 -2
  62. package/dist/{chunk-DWN7QDTV.js → chunk-LF5CIKWZ.js} +2 -2
  63. package/dist/{chunk-ZL5Y23AJ.js → chunk-LM72NQ7T.js} +1 -1
  64. package/dist/{chunk-3KQOIXLO.js → chunk-LQUDSHLB.js} +2 -2
  65. package/dist/{chunk-VV5WJLRO.js → chunk-MP43RX4O.js} +1 -1
  66. package/dist/{chunk-D5OXYOJP.js → chunk-MQ2B33LQ.js} +1 -1
  67. package/dist/{chunk-EZGT3NJX.js → chunk-NTOBQK5H.js} +2 -2
  68. package/dist/{chunk-TOYQTO44.js → chunk-OLG2YPLS.js} +2 -2
  69. package/dist/{chunk-J65FQLDL.js → chunk-OOUJBAKJ.js} +2 -2
  70. package/dist/{chunk-PBADFBRR.js → chunk-OQ6TCHBB.js} +2 -2
  71. package/dist/{chunk-BOXAKNN6.js → chunk-PNESKY2Z.js} +2 -2
  72. package/dist/{chunk-TDZXQAH7.js → chunk-PYMZU5EG.js} +2 -2
  73. package/dist/{chunk-HOXI4F5I.js → chunk-Q2WEWIKX.js} +2 -2
  74. package/dist/{chunk-DQIJMKNE.js → chunk-QHKXGMOI.js} +2 -2
  75. package/dist/{chunk-MTFHE7ZO.js → chunk-RPEA7P5Z.js} +2 -2
  76. package/dist/{chunk-DV6B262O.js → chunk-SJ6XSCG7.js} +2 -2
  77. package/dist/{chunk-LJD7V7UO.js → chunk-SSXEYWN3.js} +2 -2
  78. package/dist/{chunk-XESK6725.js → chunk-SYGAA54M.js} +2 -2
  79. package/dist/{chunk-TC3X33N6.js → chunk-TYEGFDOP.js} +2 -2
  80. package/dist/chunk-UJKZQLDB.js +2 -0
  81. package/dist/{chunk-QB5WSOTY.js → chunk-US44MEVU.js} +2 -2
  82. package/dist/{chunk-2ZNZSNVW.js → chunk-V5WBVF6K.js} +2 -2
  83. package/dist/{chunk-S65OEY2G.js → chunk-V7J4A3AH.js} +2 -2
  84. package/dist/{chunk-J6BR4MD6.js → chunk-VIKEPD4D.js} +2 -2
  85. package/dist/{chunk-XDSB47KO.js → chunk-WAU7HVDI.js} +2 -2
  86. package/dist/{chunk-T5CSWYAZ.js → chunk-WCZAABYF.js} +2 -2
  87. package/dist/{chunk-KD6TPIXM.js → chunk-WFRET75Z.js} +2 -2
  88. package/dist/chunk-WWCZCH7W.js +3 -0
  89. package/dist/{chunk-G6RQVDTI.js → chunk-XCPE3G75.js} +2 -2
  90. package/dist/{chunk-QN67MWDU.js → chunk-XYBNOILR.js} +2 -2
  91. package/dist/{chunk-MFBXBLHA.js → chunk-XZXUMGAA.js} +2 -2
  92. package/dist/{chunk-QHOUNTDZ.js → chunk-YCSTKIYU.js} +2 -2
  93. package/dist/{chunk-ZNSLF5AC.js → chunk-YGQBJUS6.js} +2 -2
  94. package/dist/{chunk-6DHPQS72.js → chunk-YILKXTIY.js} +2 -2
  95. package/dist/{chunk-G6QQCX45.js → chunk-ZJGZCBYT.js} +2 -2
  96. package/dist/{chunk-MDDF67O2.js → chunk-ZNK6K3LB.js} +2 -2
  97. package/dist/cli.js +1 -1
  98. package/dist/{command-descriptors-SWFWGIFK.js → command-descriptors-3EJHQLQZ.js} +55 -55
  99. package/dist/direct-navigation-C2A44KFT.js +3 -0
  100. package/dist/index.js +1 -1
  101. package/dist/queries/affected.js +1 -1
  102. package/dist/queries/architecture.js +1 -1
  103. package/dist/queries/bottlenecks.js +1 -1
  104. package/dist/queries/by-kind.js +1 -1
  105. package/dist/queries/call-graph.js +1 -1
  106. package/dist/queries/change-surface.js +1 -1
  107. package/dist/queries/cleanup-plan.js +1 -1
  108. package/dist/queries/co-change.js +1 -1
  109. package/dist/queries/code.js +1 -1
  110. package/dist/queries/complexity-hotspots.js +1 -1
  111. package/dist/queries/complexity.js +1 -1
  112. package/dist/queries/convergence.js +1 -1
  113. package/dist/queries/coupling.js +1 -1
  114. package/dist/queries/cycles.js +1 -1
  115. package/dist/queries/dataflow.js +1 -1
  116. package/dist/queries/dead.js +1 -1
  117. package/dist/queries/decorative-checkers.js +1 -1
  118. package/dist/queries/deep-chains.js +1 -1
  119. package/dist/queries/deps.js +1 -1
  120. package/dist/queries/diff-gate.js +1 -1
  121. package/dist/queries/diff-impact.js +1 -1
  122. package/dist/queries/doc-drift.js +1 -1
  123. package/dist/queries/drift.js +1 -1
  124. package/dist/queries/duplicate-bodies.js +1 -1
  125. package/dist/queries/extract-candidates.js +1 -1
  126. package/dist/queries/fan.js +1 -1
  127. package/dist/queries/health.js +1 -1
  128. package/dist/queries/hierarchy.js +1 -1
  129. package/dist/queries/hotspots.js +1 -1
  130. package/dist/queries/imports.js +1 -1
  131. package/dist/queries/incomplete-migration.js +1 -1
  132. package/dist/queries/index.js +1 -1
  133. package/dist/queries/isolated.js +1 -1
  134. package/dist/queries/locality-candidates.js +1 -1
  135. package/dist/queries/members.js +1 -1
  136. package/dist/queries/methods.js +1 -1
  137. package/dist/queries/not-implemented.js +1 -1
  138. package/dist/queries/outline.js +1 -1
  139. package/dist/queries/passthrough-candidates.js +1 -1
  140. package/dist/queries/plan-context.js +1 -1
  141. package/dist/queries/react-component-duplicates.js +1 -1
  142. package/dist/queries/react-hook-candidates.js +1 -1
  143. package/dist/queries/react-large-component-pressure.js +1 -1
  144. package/dist/queries/recent-duplicates.js +1 -1
  145. package/dist/queries/redundant-reexports.js +1 -1
  146. package/dist/queries/refs.js +1 -1
  147. package/dist/queries/self-audit.js +1 -1
  148. package/dist/queries/similar-chains.js +1 -1
  149. package/dist/queries/similar-files.js +1 -1
  150. package/dist/queries/similar-signatures.js +1 -1
  151. package/dist/queries/similar.js +1 -1
  152. package/dist/queries/slice.js +1 -1
  153. package/dist/queries/stale-abstractions.js +1 -1
  154. package/dist/queries/surface.js +1 -1
  155. package/dist/queries/symbols.js +1 -1
  156. package/dist/queries/system.js +1 -1
  157. package/dist/queries/test-quality.js +1 -1
  158. package/dist/queries/trace.js +1 -1
  159. package/dist/queries/twin-ab.js +1 -1
  160. package/dist/queries/twin-drift.js +1 -1
  161. package/dist/queries/unused-imports.js +1 -1
  162. package/dist/queries/unused-params.js +1 -1
  163. package/dist/queries/vue-component-duplicates.js +1 -1
  164. package/dist/queries/vue-composable-candidates.js +1 -1
  165. package/dist/queries/vue-large-view-pressure.js +1 -1
  166. package/dist/queries/wrapper-candidates.js +1 -1
  167. package/dist/reindex-worker.js +5 -5
  168. package/dist/reindex.js +15 -15
  169. package/dist/runtime.js +1 -1
  170. package/dist/rust-semantic-session-server.js +1 -1
  171. package/dist/rust-semantic-session-worker.js +1 -1
  172. package/dist/rust-semantic-worker.js +1 -1
  173. package/dist/watch-server.js +1 -1
  174. package/package.json +1 -1
  175. package/dist/chunk-42QYU6FD.js +0 -3
  176. package/dist/chunk-AERYQJ52.js +0 -3
  177. package/dist/chunk-OYYZLJVT.js +0 -2
  178. package/dist/direct-navigation-RKMPBXMI.js +0 -3
@@ -1,5 +1,5 @@
1
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 xc,join as Gm}from"path";import Rc from"better-sqlite3";var Um=[];function un(e){e.groups.length>0&&Um.push(e)}function Cc(e,t){let n=new Set(t.groups);for(let r of Um)r.groups.some(i=>n.has(i))&&(t.file!==void 0&&r.clearFile?r.clearFile(e,t.file):r.clearAll(e))}function Wm(){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}=Wm(),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 un({name:e,groups:t.clearGroups,clearAll:o=>i.invalidateAll(o),clearFile:(o,s)=>i.invalidate(o,s)}),i}function J(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 un({name:e,groups:t.clearGroups,clearAll:i=>r.invalidate(i)}),r}var Hv={clearGroups:["whole-project","source-file"]};function dn(e){return Nn(e,Hv)}function Nn(e,t){let{cache:n,ensure:r}=Wm(),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 un({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"],vc=new Set(qv),Kv=25e4,Jv=512*1024*1024,Yv=5e3,Oo=new WeakMap,Xv=j("evidence-content-hash",{clearGroups:["whole-project","source-file"]}),Qv=j("evidence-project-fingerprint",{clearGroups:["whole-project"]}),Ze="evidence-v1",mr="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(Gm(xc(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 fr("project fingerprint unavailable",t),null}})}function fr(e,t){process.env.SCIP_QUERY_DEBUG&&console.error(`evidence-cache: ${e}: ${t instanceof Error?t.message:String(t)}`)}function pt(e){if(Oo.has(e))return Oo.get(e)??null;let t=null;try{let n=new Rc(Gm(xc(e.config.dbPath),Vv));n.pragma("journal_mode = WAL"),n.pragma("busy_timeout = 5000"),n.pragma("synchronous = NORMAL"),n.exec(`
2
+ import{createHash as Wv}from"crypto";import{existsSync as Gv,mkdirSync as zv,readFileSync as Vv}from"fs";import{dirname as Rc,join as Vm}from"path";import vc from"better-sqlite3";var Gm=[];function un(e){e.groups.length>0&&Gm.push(e)}function xc(e,t){let n=new Set(t.groups);for(let r of Gm)r.groups.some(i=>n.has(i))&&(t.file!==void 0&&r.clearFile?r.clearFile(e,t.file):r.clearAll(e))}function zm(){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}=zm(),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 un({name:e,groups:t.clearGroups,clearAll:o=>i.invalidateAll(o),clearFile:(o,s)=>i.invalidate(o,s)}),i}function J(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 un({name:e,groups:t.clearGroups,clearAll:i=>r.invalidate(i)}),r}var Uv={clearGroups:["whole-project","source-file"]};function dn(e){return Nn(e,Uv)}function Nn(e,t){let{cache:n,ensure:r}=zm(),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 un({name:e,groups:t.clearGroups,clearAll:o=>i.invalidateAll(o),clearFile:(o,s)=>i.invalidate(o,s)}),i}var qv="evidence.db";var Kv=["source-facts","definition-exclusions","doc-path-tokens","react-component-behavior-profiles"],Ic=new Set(Kv),Jv=25e4,Yv=512*1024*1024,Xv=5e3,Oo=new WeakMap,Qv=j("evidence-content-hash",{clearGroups:["whole-project","source-file"]}),Zv=j("evidence-project-fingerprint",{clearGroups:["whole-project"]}),Ze="evidence-v1",mr="version NOT LIKE 'evidence-%'";function he(e){return Wv("sha256").update(e).digest("hex")}function ce(e,t,n){return Qv.get(e,t,()=>he(n))}function Te(e){return Zv.get(e,"current",()=>{try{let t=JSON.parse(Vv(Vm(Rc(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 fr("project fingerprint unavailable",t),null}})}function fr(e,t){process.env.SCIP_QUERY_DEBUG&&console.error(`evidence-cache: ${e}: ${t instanceof Error?t.message:String(t)}`)}function pt(e){if(Oo.has(e))return Oo.get(e)??null;let t=null;try{let n=new vc(Vm(Rc(e.config.dbPath),qv));n.pragma("journal_mode = WAL"),n.pragma("busy_timeout = 5000"),n.pragma("synchronous = NORMAL"),n.exec(`
3
3
  CREATE TABLE IF NOT EXISTS file_evidence (
4
4
  kind TEXT NOT NULL,
5
5
  relative_path TEXT NOT NULL,
@@ -42,7 +42,7 @@ import{createHash as Uv}from"crypto";import{existsSync as Wv,mkdirSync as Gv,rea
42
42
  outcome TEXT NOT NULL,
43
43
  PRIMARY KEY (check_name, finding_id)
44
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
45
+ `),t={evidence:n,shared:eI(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
46
  WHERE kind = ? AND relative_path = ? AND content_hash = ? AND ${mr}
47
47
  ORDER BY version DESC
48
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
@@ -65,7 +65,7 @@ import{createHash as Uv}from"crypto";import{existsSync as Wv,mkdirSync as Gv,rea
65
65
  WHERE relative_path = ? AND project_fingerprint = ? AND ${mr}
66
66
  ORDER BY symbol, version DESC`),writeReferences:n.prepare(`INSERT OR REPLACE INTO semantic_references
67
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){fr("disabled (open failed)",n)}return Oo.set(e,t),t}function gt(e,t,n){fr(`disabled (${t})`,n),Oo.set(e,null)}function Zv(e){if(!e)return null;try{Gv(xc(e),{recursive:!0});let t=new Rc(e);return t.pragma("journal_mode = WAL"),t.pragma("busy_timeout = 250"),t.pragma("synchronous = NORMAL"),t.exec(`
68
+ (check_name, finding_id, first_seen, last_seen, times_shown, outcome) VALUES (?, ?, ?, ?, ?, ?)`)}}catch(n){fr("disabled (open failed)",n)}return Oo.set(e,t),t}function gt(e,t,n){fr(`disabled (${t})`,n),Oo.set(e,null)}function eI(e){if(!e)return null;try{zv(Rc(e),{recursive:!0});let t=new vc(e);return t.pragma("journal_mode = WAL"),t.pragma("busy_timeout = 250"),t.pragma("synchronous = NORMAL"),t.exec(`
69
69
  CREATE TABLE IF NOT EXISTS file_evidence (
70
70
  kind TEXT NOT NULL,
71
71
  relative_path TEXT NOT NULL,
@@ -78,46 +78,46 @@ import{createHash as Uv}from"crypto";import{existsSync as Wv,mkdirSync as Gv,rea
78
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
79
  VALUES (?, ?, ?, ?, ?, ?)
80
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 fr("shared cache disabled (open failed)",t),null}}function Ic(e,t,n){fr(`shared cache disabled (${t})`,n);try{e.shared?.evidence.close()}catch{}e.shared=null}function OY(e,t={}){if(!Wv(e))return null;let n;try{n=new Rc(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 (
81
+ DO UPDATE SET payload = excluded.payload, last_accessed_at = excluded.last_accessed_at`)}}catch(t){return fr("shared cache disabled (open failed)",t),null}}function wc(e,t,n){fr(`shared cache disabled (${t})`,n);try{e.shared?.evidence.close()}catch{}e.shared=null}function jY(e,t={}){if(!Gv(e))return null;let n;try{n=new vc(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??Jv,o=t.budgetBytes??Yv,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
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 fr("shared cache maintenance skipped",r),null}finally{try{n?.close()}catch{}}}function zm(e,t,n,r){let i=pt(e);if(!i)return null;try{let o=i.readFileEvidence.get(t,n,r,Ze)??i.readLegacyFileEvidence.get(t,n,r);if(o?.payload!==void 0)return o.payload;if(!vc.has(t)||!i.shared)return null;try{return i.shared.readFileEvidence.get(t,n,r,Ze)?.payload??null}catch(s){return Ic(i,"file_evidence read",s),null}}catch(o){return gt(e,"file_evidence read",o),null}}function Vm(e,t,n,r,i){let o=pt(e);if(o)try{if(o.writeFileEvidence.run(t,n,r,Ze,i),vc.has(t)&&o.shared)try{o.shared.writeFileEvidence.run(t,n,r,Ze,i,Date.now())}catch(s){Ic(o,"file_evidence write",s)}}catch(s){gt(e,"file_evidence write",s)}}function qm(e,t){if(t.length===0)return;let n=pt(e);if(n)try{n.evidence.transaction(()=>{for(let i of t)n.writeFileEvidence.run(i.kind,i.relativePath,i.contentHash,Ze,i.payload)})();let r=t.filter(i=>vc.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,Ze,i.payload,Date.now())})()}catch(i){Ic(n,"file_evidence batch write",i)}}catch(r){gt(e,"file_evidence batch write",r)}}function Km(e,t,n,r){let i=pt(e);if(!i)return null;try{return(i.readProjectEvidence.get(t,n,r,Ze)??i.readLegacyProjectEvidence.get(t,n,r))?.payload??null}catch(o){return gt(e,"project_evidence read",o),null}}function Jm(e,t,n,r,i){let o=pt(e);if(o)try{o.writeProjectEvidence.run(t,n,r,Ze,i)}catch(s){gt(e,"project_evidence write",s)}}function Ym(e,t,n,r){let i=pt(e);if(!i)return new Map;try{let o=i.readCalleesForFile.all(t,n,r,Ze),s=i.readLegacyCalleesForFile.all(t,n,r);return Qm([...s,...o])}catch(o){return gt(e,"semantic_callees bulk read",o),new Map}}function Xm(e,t,n){let r=pt(e);if(!r)return new Map;try{let i=r.readReferencesForFile.all(t,n,Ze),o=r.readLegacyReferencesForFile.all(t,n);return Qm([...o,...i])}catch(i){return gt(e,"semantic_references bulk read",i),new Map}}function Qm(e){let t=new Map;for(let n of e)t.set(n.symbol,n.payload);return t}function wc(e,t){if(t.length===0)return;let n=pt(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,Ze,i.payload)}})()}catch(r){gt(e,"semantic_callees write",r)}}function Zm(e,t){if(t.length===0)return;let n=pt(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,Ze,i.payload)}})()}catch(r){gt(e,"semantic_references write",r)}}function ef(e){let t=pt(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 gt(e,"finding_outcome_ledger read",n),[]}}function tf(e,t){let n=pt(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){gt(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 pr}from"perf_hooks";var sf="SCIP_QUERY_PROFILE",af="SCIP_QUERY_PROFILE_OUT",cf="SCIP_QUERY_PROFILE_COMMAND",lf="SCIP_QUERY_PROFILE_CACHE_STATE",Dc="SCIP_QUERY_PROFILE_RUN_ID",Ec="SCIP_QUERY_PROFILE_WORKLOAD_IDENTITY",kc="SCIP_QUERY_PROFILE_WORKLOAD_IDENTITY_KIND",uf=[sf,af,cf,lf,Dc,Ec,kc],WY=new Set(uf),nf=new Set,rf=new Map,of=!1;function U(){let e=process.env[sf];return e==="1"||e==="true"}function oI(){return process.env[af]}function df(){return process.env[cf]}function sI(){return process.env[lf]}function mf(){let e=process.env[Dc];if(e)return e;if(!U())return;let t=rI();return process.env[Dc]=t,t}function ff(){return process.env[Ec]}function aI(e){let t=ff();if(t)return t;if(!U())return;let n=mf();if(!n)return;let r=e.projectFingerprint?"published-project":"run-only",i=ai(["profile-workload-v1",e.toolVersion,e.command,e.projectFingerprint??n]);return process.env[Ec]=i,process.env[kc]=r,i}function ai(e){return nI("sha256").update(JSON.stringify(e)).digest("hex").slice(0,24)}function pf(){return Object.fromEntries(uf.flatMap(e=>{let t=process.env[e];return t===void 0?[]:[[e,t]]}))}function w(e,t,n){if(!U())return t();let r=pr.now();try{let i=t();return mn({type:"span",name:e,durationMs:Math.round(pr.now()-r),ok:!0,...jo(n)??{}}),i}catch(i){throw mn({type:"span",name:e,durationMs:Math.round(pr.now()-r),ok:!1,error:i instanceof Error?i.message:String(i),...jo(n)??{}}),i}}async function GY(e,t,n){if(!U())return t();let r=pr.now();try{let i=await t();return mn({type:"span",name:e,durationMs:Math.round(pr.now()-r),ok:!0,...jo(n)??{}}),i}catch(i){throw mn({type:"span",name:e,durationMs:Math.round(pr.now()-r),ok:!1,error:i instanceof Error?i.message:String(i),...jo(n)??{}}),i}}function mn(e,t=oI()){let n=cI(e),r={timestamp:new Date().toISOString(),pid:process.pid,runId:mf(),command:df(),cacheState:sI(),...n,...e},i=`${JSON.stringify(r)}
84
- `;if(t)try{let o=iI(t);nf.has(o)||(tI(o,{recursive:!0}),nf.add(o)),eI(t,i);return}catch(o){of||(of=!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=ff()??aI({command:df()??"unknown",toolVersion:"unknown",projectFingerprint:null});if(!t)return{};let n=process.env[kc],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=rf.get(o);return s||(s=ai(["profile-subsystem-v1",t,r]),rf.set(o,s)),{workloadIdentity:t,workloadIdentityKind:n,subsystem:i,subsystemWorkIdentity:s}}function jo(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 $o}from"path";var ci={run(e,t){let n=hf(e,t);return n.kind==="success"?n.output:void 0},runResult:hf},yI=["rev-parse","--show-toplevel","--absolute-git-dir","--git-common-dir","HEAD","HEAD^{tree}"],gf=/^[0-9a-f]{40,64}$/;function YY(e,t=ci){let n=t.run(e,["rev-parse","--show-toplevel"])?.trim();return n?Rt(n):void 0}function gr(e,t=ci){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||!gf.test(o)||!gf.test(s))return;let a=Rt(n);return{root:a,gitDir:Rt(Bo(a,r)),commonDir:Rt(Bo(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:{...yf(e.root,e.gitDir),commonDir:e.commonDir,repositoryId:Tc("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=Rt(Bo(i,o)),a=Pc(t.run(i,["rev-parse","--verify","HEAD"])),c=Pc(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:Tc("repository",s),headCommit:a,treeOid:c,clean:l.length===0}}function xI(e,t=ci){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=Rt(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=Rt(Bo(i,o));return{kind:"worktree",identity:yf(i,s)}}function yf(e,t){return{projectRoot:e,gitDir:t,worktreeId:Tc("worktree",`${e}\0${t}`)}}function bf(e,t=ci){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:Rt(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 XY(e,t,n=ci){return Pc(n.run(e,t))}function Bo(e,t){return gI(t)?t:$o(e,t)}function Rt(e){try{return fI(e)}catch{return $o(e)}}function Tc(e,t){return uI("sha256").update(`${e}\0${t}`).digest("hex").slice(0,24)}function Pc(e){return e?.trim()||void 0}function hf(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($o(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=$o(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 vt(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||Sf(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&&!Sf(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 Sf(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=DI(i);o&&r.push(o)}return r.join(":")}function DI(e){let t=e.suffix==="namespace"?EI(e.name):e.name;return t?e.suffix==="method"?`${t}()`:t:""}function EI(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 ee(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 fn(e){return ue(e)==="namespace"}var kI=/^rust-analyzer\b.*[\s/]impl#\[[^\]]+\]\[[^\]]+\]/;function Ie(e){return kI.test(e)}var PI=new Set(["test","tests","_tests"]);function hr(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&&PI.has(r.name))return!0}return!1}function Cf(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 xf(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 Rf}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[Rf(e).toLowerCase()]??null}function $t(e){return Rf(e).toLowerCase()===".vue"}import{createRequire as _I}from"module";var Ae=_I(import.meta.url),li=null,_c=!1;function vf(){if(_c)return null;if(li)return li;try{return li=Ae("tree-sitter"),li}catch{return _c=!0,null}}function r5(e){if(e==="clojure")return"reader";let t=vf();if(!t)return"unavailable";let n=If(e);if(!n)return"unavailable";try{return new t().setLanguage(n),"ast"}catch{return yr.add(e),"unavailable"}}var Fc=new Map,yr=new Set;function If(e){if(yr.has(e))return null;let t=Fc.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 yr.add(e),null}}catch{return yr.add(e),null}return Fc.set(e,n),n}var Lc=new Map;function i5(){li=null,_c=!1,Fc.clear(),yr.clear(),Lc.clear(),NI.clear()}function FI(e){let t=Lc.get(e);if(t)return t;let n=If(e);if(!n)return null;let r=vf();if(!r)return null;let i=new r;try{i.setLanguage(n)}catch{return yr.add(e),null}return Lc.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 ui(e,t){let n=FI(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 P(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=P(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 di(e){let t=$I.exec(e);return t?t[1]??"":null}function Ho(e,t,n){return Df(e,t,n).length>0}function wf(e,t,n,r){let i=r.toLowerCase();return Df(e,t,n).some(o=>o.toLowerCase()===i)}function Df(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=di(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 Nc}from"path";import{parse as HI}from"@vue/compiler-sfc";var UI=dn("vue-sfc-units");function br(e,t){let n=Pf(t),r=P(e,n);return UI.get(e,n,r,()=>Ac(e,n,r))}function Pf(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 An(e){return!e||e.body.length===0?0:e.body.split(`
88
- `).length}function Ac(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(kf(s)),r}r.errors.push(...i.errors.map(kf));let{descriptor:o}=i;return o.template&&(r.template=Uo(e,t,"template",o.template)),o.script&&r.scripts.push(Ef(e,t,o.script,!1)),o.scriptSetup&&r.scripts.push(Ef(e,t,o.scriptSetup,!0)),r.styles=o.styles.map(s=>Uo(e,t,"style",s)),r.customBlocks=o.customBlocks.map(s=>Uo(e,t,"custom",s)),r.errors.push(...[r.template,...r.scripts,...r.styles,...r.customBlocks].flatMap(s=>s?.errors??[])),r}function Ef(e,t,n,r){let i=Uo(e,t,"script",n);return{...i,kind:"script",setup:r,astLanguage:WI(i.lang)}}function Uo(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=P(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=Pf(Nc.normalize(Nc.join(Nc.dirname(e),n)));return r===".."||r.startsWith("../")?null:r}function zI(e){return{...e}}function kf(e){return e instanceof Error?e.message:String(e)}function Wo(e,t,n){let i=Ac(e,t,n).scripts.filter(s=>s.astLanguage&&s.body.length>0),o=i[0]?.astLanguage;return o?{body:i.map(s=>`${`
83
+ )`).run(d),n.pragma("wal_checkpoint(TRUNCATE)")),{deletedRows:d,remainingRows:r-d}}catch(r){return fr("shared cache maintenance skipped",r),null}finally{try{n?.close()}catch{}}}function qm(e,t,n,r){let i=pt(e);if(!i)return null;try{let o=i.readFileEvidence.get(t,n,r,Ze)??i.readLegacyFileEvidence.get(t,n,r);if(o?.payload!==void 0)return o.payload;if(!Ic.has(t)||!i.shared)return null;try{return i.shared.readFileEvidence.get(t,n,r,Ze)?.payload??null}catch(s){return wc(i,"file_evidence read",s),null}}catch(o){return gt(e,"file_evidence read",o),null}}function Km(e,t,n,r,i){let o=pt(e);if(o)try{if(o.writeFileEvidence.run(t,n,r,Ze,i),Ic.has(t)&&o.shared)try{o.shared.writeFileEvidence.run(t,n,r,Ze,i,Date.now())}catch(s){wc(o,"file_evidence write",s)}}catch(s){gt(e,"file_evidence write",s)}}function Jm(e,t){if(t.length===0)return;let n=pt(e);if(n)try{n.evidence.transaction(()=>{for(let i of t)n.writeFileEvidence.run(i.kind,i.relativePath,i.contentHash,Ze,i.payload)})();let r=t.filter(i=>Ic.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,Ze,i.payload,Date.now())})()}catch(i){wc(n,"file_evidence batch write",i)}}catch(r){gt(e,"file_evidence batch write",r)}}function Ym(e,t,n,r){let i=pt(e);if(!i)return null;try{return(i.readProjectEvidence.get(t,n,r,Ze)??i.readLegacyProjectEvidence.get(t,n,r))?.payload??null}catch(o){return gt(e,"project_evidence read",o),null}}function Xm(e,t,n,r,i){let o=pt(e);if(o)try{o.writeProjectEvidence.run(t,n,r,Ze,i)}catch(s){gt(e,"project_evidence write",s)}}function Qm(e,t,n,r){let i=pt(e);if(!i)return new Map;try{let o=i.readCalleesForFile.all(t,n,r,Ze),s=i.readLegacyCalleesForFile.all(t,n,r);return ef([...s,...o])}catch(o){return gt(e,"semantic_callees bulk read",o),new Map}}function Zm(e,t,n){let r=pt(e);if(!r)return new Map;try{let i=r.readReferencesForFile.all(t,n,Ze),o=r.readLegacyReferencesForFile.all(t,n);return ef([...o,...i])}catch(i){return gt(e,"semantic_references bulk read",i),new Map}}function ef(e){let t=new Map;for(let n of e)t.set(n.symbol,n.payload);return t}function Dc(e,t){if(t.length===0)return;let n=pt(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,Ze,i.payload)}})()}catch(r){gt(e,"semantic_callees write",r)}}function tf(e,t){if(t.length===0)return;let n=pt(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,Ze,i.payload)}})()}catch(r){gt(e,"semantic_references write",r)}}function nf(e){let t=pt(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 gt(e,"finding_outcome_ledger read",n),[]}}function rf(e,t){let n=pt(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,Xv);for(let a of s)n.writeFindingOutcomeLedgerRow.run(a.check,a.findingId,a.firstSeen,a.lastSeen,a.timesShown,a.outcome)}})()}catch(r){gt(e,"finding_outcome_ledger write",r)}}import{appendFileSync as tI,mkdirSync as nI}from"fs";import{createHash as rI,randomUUID as iI}from"crypto";import{dirname as oI}from"path";import{performance as pr}from"perf_hooks";var cf="SCIP_QUERY_PROFILE",lf="SCIP_QUERY_PROFILE_OUT",uf="SCIP_QUERY_PROFILE_COMMAND",df="SCIP_QUERY_PROFILE_CACHE_STATE",Ec="SCIP_QUERY_PROFILE_RUN_ID",kc="SCIP_QUERY_PROFILE_WORKLOAD_IDENTITY",Pc="SCIP_QUERY_PROFILE_WORKLOAD_IDENTITY_KIND",mf=[cf,lf,uf,df,Ec,kc,Pc],GY=new Set(mf),of=new Set,sf=new Map,af=!1;function U(){let e=process.env[cf];return e==="1"||e==="true"}function sI(){return process.env[lf]}function ff(){return process.env[uf]}function aI(){return process.env[df]}function pf(){let e=process.env[Ec];if(e)return e;if(!U())return;let t=iI();return process.env[Ec]=t,t}function gf(){return process.env[kc]}function cI(e){let t=gf();if(t)return t;if(!U())return;let n=pf();if(!n)return;let r=e.projectFingerprint?"published-project":"run-only",i=ai(["profile-workload-v1",e.toolVersion,e.command,e.projectFingerprint??n]);return process.env[kc]=i,process.env[Pc]=r,i}function ai(e){return rI("sha256").update(JSON.stringify(e)).digest("hex").slice(0,24)}function hf(){return Object.fromEntries(mf.flatMap(e=>{let t=process.env[e];return t===void 0?[]:[[e,t]]}))}function w(e,t,n){if(!U())return t();let r=pr.now();try{let i=t();return mn({type:"span",name:e,durationMs:Math.round(pr.now()-r),ok:!0,...jo(n)??{}}),i}catch(i){throw mn({type:"span",name:e,durationMs:Math.round(pr.now()-r),ok:!1,error:i instanceof Error?i.message:String(i),...jo(n)??{}}),i}}async function zY(e,t,n){if(!U())return t();let r=pr.now();try{let i=await t();return mn({type:"span",name:e,durationMs:Math.round(pr.now()-r),ok:!0,...jo(n)??{}}),i}catch(i){throw mn({type:"span",name:e,durationMs:Math.round(pr.now()-r),ok:!1,error:i instanceof Error?i.message:String(i),...jo(n)??{}}),i}}function mn(e,t=sI()){let n=lI(e),r={timestamp:new Date().toISOString(),pid:process.pid,runId:pf(),command:ff(),cacheState:aI(),...n,...e},i=`${JSON.stringify(r)}
84
+ `;if(t)try{let o=oI(t);of.has(o)||(nI(o,{recursive:!0}),of.add(o)),tI(t,i);return}catch(o){af||(af=!0,process.stderr.write(`[profile] failed to write ${t}: ${o instanceof Error?o.message:String(o)}
85
+ `));return}U()&&process.stderr.write(i)}function lI(e){let t=gf()??cI({command:ff()??"unknown",toolVersion:"unknown",projectFingerprint:null});if(!t)return{};let n=process.env[Pc],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=sf.get(o);return s||(s=ai(["profile-subsystem-v1",t,r]),sf.set(o,s)),{workloadIdentity:t,workloadIdentityKind:n,subsystem:i,subsystemWorkIdentity:s}}function jo(e){return typeof e=="function"?e():e}import{spawnSync as uI}from"child_process";import{createHash as dI}from"crypto";import{existsSync as mI,lstatSync as fI,realpathSync as pI}from"fs";import{dirname as gI,isAbsolute as hI,join as yI,resolve as $o}from"path";var ci={run(e,t){let n=bf(e,t);return n.kind==="success"?n.output:void 0},runResult:bf},bI=["rev-parse","--show-toplevel","--absolute-git-dir","--git-common-dir","HEAD","HEAD^{tree}"],yf=/^[0-9a-f]{40,64}$/;function XY(e,t=ci){let n=t.run(e,["rev-parse","--show-toplevel"])?.trim();return n?Rt(n):void 0}function gr(e,t=ci){let n=t.runResult(e,bI);if(n.kind==="success"){let r=SI(n.output);if(r)return CI(r,t)}return xI(e,t)}function SI(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||!yf.test(o)||!yf.test(s))return;let a=Rt(n);return{root:a,gitDir:Rt(Bo(a,r)),commonDir:Rt(Bo(a,i)),headCommit:o,treeOid:s}}function CI(e,t){let n=t.run(e.root,["status","--porcelain=v1","-z","--untracked-files=all"]);return n===void 0?void 0:{...Sf(e.root,e.gitDir),commonDir:e.commonDir,repositoryId:_c("repository",e.commonDir),headCommit:e.headCommit,treeOid:e.treeOid,clean:n.length===0}}function xI(e,t){let n=RI(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=Rt(Bo(i,o)),a=Tc(t.run(i,["rev-parse","--verify","HEAD"])),c=Tc(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:_c("repository",s),headCommit:a,treeOid:c,clean:l.length===0}}function RI(e,t=ci){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=Rt(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=Rt(Bo(i,o));return{kind:"worktree",identity:Sf(i,s)}}function Sf(e,t){return{projectRoot:e,gitDir:t,worktreeId:_c("worktree",`${e}\0${t}`)}}function Cf(e,t=ci){let n=t.run(e,["worktree","list","--porcelain","-z"]);return n===void 0?[]:vI(n)}function vI(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:Rt(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 QY(e,t,n=ci){return Tc(n.run(e,t))}function Bo(e,t){return hI(t)?t:$o(e,t)}function Rt(e){try{return pI(e)}catch{return $o(e)}}function _c(e,t){return dI("sha256").update(`${e}\0${t}`).digest("hex").slice(0,24)}function Tc(e){return e?.trim()||void 0}function bf(e,t){let n=uI("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"&&mI($o(e)))&&!II(e)?{kind:"not-repository"}:{kind:"error",message:i}}function II(e){if(process.env.GIT_DIR||process.env.GIT_COMMON_DIR)return!0;let t=$o(e);for(;;){try{return fI(yI(t,".git")),!0}catch(r){let i=r.code;if(i!=="ENOENT"&&i!=="ENOTDIR")return!0}let n=gI(t);if(n===t)return!1;t=n}}var wI={"/":"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=DI(i);return{scheme:n,manager:r,packageName:o,version:s,descriptors:c,raw:e}}function vt(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 DI(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||xf(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&&!xf(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=wI[i];o&&t.push({name:r,suffix:o}),n+=1}}return t}function xf(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"?kI(e.name):e.name;return t?e.suffix==="method"?`${t}()`:t:""}function kI(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 ee(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 fn(e){return ue(e)==="namespace"}var PI=/^rust-analyzer\b.*[\s/]impl#\[[^\]]+\]\[[^\]]+\]/;function Ie(e){return PI.test(e)}var TI=new Set(["test","tests","_tests"]);function hr(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&&TI.has(r.name))return!0}return!1}function Rf(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 vf(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 If}from"path";var _I={".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 _I[If(e).toLowerCase()]??null}function $t(e){return If(e).toLowerCase()===".vue"}import{createRequire as FI}from"module";var Ae=FI(import.meta.url),li=null,Fc=!1;function wf(){if(Fc)return null;if(li)return li;try{return li=Ae("tree-sitter"),li}catch{return Fc=!0,null}}function i5(e){if(e==="clojure")return"reader";let t=wf();if(!t)return"unavailable";let n=Df(e);if(!n)return"unavailable";try{return new t().setLanguage(n),"ast"}catch{return yr.add(e),"unavailable"}}var Lc=new Map,yr=new Set;function Df(e){if(yr.has(e))return null;let t=Lc.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 yr.add(e),null}}catch{return yr.add(e),null}return Lc.set(e,n),n}var Nc=new Map;function o5(){li=null,Fc=!1,Lc.clear(),yr.clear(),Nc.clear(),AI.clear()}function LI(e){let t=Nc.get(e);if(t)return t;let n=Df(e);if(!n)return null;let r=wf();if(!r)return null;let i=new r;try{i.setLanguage(n)}catch{return yr.add(e),null}return Nc.set(e,i),i}function NI(e,t){return e.parse(r=>r>=t.length?null:t.slice(r,Math.min(t.length,r+16384)))}function ui(e,t){let n=LI(e);if(!n)return null;try{return NI(n,t)}catch{return null}}var AI=new Map;import{readFileSync as MI}from"fs";import{join as OI}from"path";var jI=j("source-text",{clearGroups:["whole-project","source-file"]}),BI=j("source-lines",{clearGroups:["whole-project","source-file"]});function P(e,t){let n=t.replace(/\\/g,"/");return jI.get(e,n,()=>{let r=OI(e.config.projectRoot,n);try{return MI(r,"utf-8")}catch(i){if($I(i))return"";throw i}})}function $I(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 BI.get(e,n,()=>{let r=P(e,n);return r?r.split(`
87
+ `):[]})}var HI=/^\s*(?:\/\/|#|\/\*+|\*)\s*scip-query[\s:-]*ignore(?:[\s:-]+(dead(?:-code)?|stale|wrapper|passthrough|drift|extract|similar|twin))?\b/i;function di(e){let t=HI.exec(e);return t?t[1]??"":null}function Ho(e,t,n){return Ef(e,t,n).length>0}function Uo(e,t,n,r){let i=r.toLowerCase();return Ef(e,t,n).some(o=>o.toLowerCase()===i)}function Ef(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=di(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 Ac}from"path";import{parse as UI}from"@vue/compiler-sfc";var WI=dn("vue-sfc-units");function br(e,t){let n=Tf(t),r=P(e,n);return WI.get(e,n,r,()=>Mc(e,n,r))}function Tf(e){return e.replace(/\\/g,"/").replace(/^\.\//,"")}function GI(e){let t=e?.toLowerCase();return!t||t==="js"||t==="javascript"||t==="jsx"?"javascript":t==="ts"||t==="typescript"?"typescript":t==="tsx"?"tsx":null}function An(e){return!e||e.body.length===0?0:e.body.split(`
88
+ `).length}function Mc(e,t,n){let r={relativePath:t,template:null,scripts:[],styles:[],customBlocks:[],errors:[]};if(!n)return r;let i;try{i=UI(n,{filename:t})}catch(s){return r.errors.push(Pf(s)),r}r.errors.push(...i.errors.map(Pf));let{descriptor:o}=i;return o.template&&(r.template=Wo(e,t,"template",o.template)),o.script&&r.scripts.push(kf(e,t,o.script,!1)),o.scriptSetup&&r.scripts.push(kf(e,t,o.scriptSetup,!0)),r.styles=o.styles.map(s=>Wo(e,t,"style",s)),r.customBlocks=o.customBlocks.map(s=>Wo(e,t,"custom",s)),r.errors.push(...[r.template,...r.scripts,...r.styles,...r.customBlocks].flatMap(s=>s?.errors??[])),r}function kf(e,t,n,r){let i=Wo(e,t,"script",n);return{...i,kind:"script",setup:r,astLanguage:GI(i.lang)}}function Wo(e,t,n,r){let i=VI(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=zI(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=P(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 zI(e,t){let n=t.split(/[?#]/,1)[0];if(!n||n.startsWith("/")||n.includes("://"))return null;let r=Tf(Ac.normalize(Ac.join(Ac.dirname(e),n)));return r===".."||r.startsWith("../")?null:r}function VI(e){return{...e}}function Pf(e){return e instanceof Error?e.message:String(e)}function Go(e,t,n){let i=Mc(e,t,n).scripts.filter(s=>s.astLanguage&&s.body.length>0),o=i[0]?.astLanguage;return o?{body:i.map(s=>`${`
90
90
  `.repeat(s.startLine)}${s.body}`).join(`
91
- `),startLine:0,language:o}:null}var Tf=Nn("ast-trees",{clearGroups:["whole-project","source-file"]});function q(e,t){if($t(t))return VI(e,t);let n=M(t);if(!n)return null;let r=P(e,t);return r?Tf.get(e,t,r,()=>ui(n,r)):null}function VI(e,t){let n=P(e,t);return n?Tf.get(e,t,n,()=>{let r=Wo(e,t,n);if(!r)return null;let i=`
92
- `.repeat(r.startLine)+r.body;return ui(r.language,i)}):null}function Sr(e,t){let n=qI(e,t);if(!n)return null;let r=Mn(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 Mn(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?Mn(t):null}case"generic_function":{let t=e.childForFieldName("function")??e.namedChild(0);return t?Mn(t):null}case"scoped_identifier":{let t=e.childForFieldName("name")??e.namedChild(e.namedChildCount-1);return t?Mn(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"}),Go("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"}),Go("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"}),Go("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"}),Go("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=ai(["evidence-product-file-read-v1",e.kind,c,r,i]),t.set(l,a))}}return w("evidence-product.file.read",()=>{let c=zm(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){Vm(n,e.kind,r,i,e.serialize(o))},writeBatch(n,r){qm(n,r.map(i=>({kind:e.kind,relativePath:i.relativePath,contentHash:i.contentHash,payload:e.serialize(i.value)})))}}}function On(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=ai(["evidence-product-project-read-v1",e.kind,i,r]),t.set(c,a))}return w("evidence-product.project.read",()=>{let c=Km(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){Jm(n,e.kind,r,i,e.serialize(o))}}}function K(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 Go(e,t){return{scope:"project",kind:e,invalidation:{scope:"project",...t}}}function mi(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 zo(e,t){let n=QI(e,t);if(n)return{name:n.name,startLine:n.definitionNode.startPosition.row,endLine:n.definitionNode.endPosition.row,paramCount:Lf(n.functionNode),params:_f(n.functionNode),paramsEndLine:Ff(n.functionNode),isLiteralPassthrough:Nf(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:Lf(e),params:_f(e),paramsEndLine:Ff(e),isLiteralPassthrough:Nf(e,t)}:null}function Af(e){return e.namedChildren.find(t=>t.type==="parameters"||t.type==="formal_parameters")}function _f(e){let t=Af(e);if(!t)return[];let n=[];for(let r of t.namedChildren){if(mi(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 Ff(e){let t=Af(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 Lf(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)mi(r)||(n+=1);return n}function Nf(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=>!mi(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=>!mi(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 Mf(e,t){return ow(t).has(e.type)}function Of(e,t){return nw.has(t)&&e.type==="string_content"}function Mc(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 jf(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 Bf(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=Mn(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 $f(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 Hf(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"]]),Oc=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 Uf(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=qo(e,a);continue}if(l==='"'){let p=pi(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(jc(l)){a+=1;continue}let u=s,d=a;for(;a<e.length&&!Bc(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(et(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=et(n.text),i=dw.get(n.text);if(i){let s=e.headTokens[1];if(s){let a=et(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||Oc.has(n.text)||Oc.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=et(e.tokens[0]?.text??"");if(n==="defprotocol"){let r=et(e.tokens[1]?.text??"");if(!r)return;for(let i of Vo(e))fi(t,r,"protocol",i,"protocol-method");return}if(n==="defrecord"||n==="deftype"){let r=et(e.tokens[1]?.text??"");if(!r)return;let i=n==="defrecord"?"record":"type",o=n==="defrecord"?"record-method":"type-method";for(let s of Vo(e))fi(t,r,i,s,o);return}if(n==="extend-type"){let r=et(e.tokens[1]?.text??"");if(!r)return;for(let i of Vo(e))fi(t,r,"extension",i,"extension-method");return}if(n==="extend-protocol"){let r=et(e.tokens[1]?.text??"");for(let i of Vo(e)){r&&fi(t,r,"extension",i,"extension-method");let o=hw(e,i.startLine);o&&o!==r&&fi(t,o,"extension",i,"extension-method")}}}function Vo(e){return e.children.filter(gw)}function gw(e){if(e.kind!=="(")return!1;let t=et(e.tokens[0]?.text??"");return!!(t&&!Oc.has(t)&&!t.startsWith(":"))}function fi(e,t,n,r,i){let o=r.tokens[0],s=et(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=et(i.text);o&&!o.startsWith(":")&&(n=o)}return n}function et(e){return e.replace(/^#?['`~@]+/,"").split("/").pop()?.replace(/^\./,"")??""}function yw(e){let t=e.replace(/^#?['`~@]+/,""),n=t.lastIndexOf("/"),r=et(t);if(n<=0)return{leaf:r,text:t};let i=t.slice(0,n);return{leaf:r,qualifier:i,text:t}}function qo(e,t){let n=t;for(;n<e.length&&e[n]!==`
91
+ `),startLine:0,language:o}:null}var _f=Nn("ast-trees",{clearGroups:["whole-project","source-file"]});function q(e,t){if($t(t))return qI(e,t);let n=M(t);if(!n)return null;let r=P(e,t);return r?_f.get(e,t,r,()=>ui(n,r)):null}function qI(e,t){let n=P(e,t);return n?_f.get(e,t,n,()=>{let r=Go(e,t,n);if(!r)return null;let i=`
92
+ `.repeat(r.startLine)+r.body;return ui(r.language,i)}):null}function Sr(e,t){let n=KI(e,t);if(!n)return null;let r=Mn(n);return r?{calleeLeaf:r,memberAccess:JI(n),line:e.startPosition.row}:null}function KI(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 JI(e){switch(e.type){case"field_expression":case"member_expression":case"attribute":return!0;default:return!1}}function Mn(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?Mn(t):null}case"generic_function":{let t=e.childForFieldName("function")??e.namedChild(0);return t?Mn(t):null}case"scoped_identifier":{let t=e.childForFieldName("name")??e.namedChild(e.namedChildCount-1);return t?Mn(t):null}case"super":case"self":case"this":return null;default:return null}}var YI=[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"}),zo("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"}),zo("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"}),zo("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"}),zo("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=ai(["evidence-product-file-read-v1",e.kind,c,r,i]),t.set(l,a))}}return w("evidence-product.file.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:"file",kind:e.kind,available:!0,hit:o,payloadBytes:s}))},write(n,r,i,o){Km(n,e.kind,r,i,e.serialize(o))},writeBatch(n,r){Jm(n,r.map(i=>({kind:e.kind,relativePath:i.relativePath,contentHash:i.contentHash,payload:e.serialize(i.value)})))}}}function On(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=ai(["evidence-product-project-read-v1",e.kind,i,r]),t.set(c,a))}return w("evidence-product.project.read",()=>{let c=Ym(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){Xm(n,e.kind,r,i,e.serialize(o))}}}function K(e){let t=YI.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 zo(e,t){return{scope:"project",kind:e,invalidation:{scope:"project",...t}}}function mi(e){return e.type==="comment"||e.type==="line_comment"||e.type==="block_comment"}var XI=new Set(["function_declaration","method_definition","method_signature","function_signature"]);function Vo(e,t){let n=ZI(e,t);if(n)return{name:n.name,startLine:n.definitionNode.startPosition.row,endLine:n.definitionNode.endPosition.row,paramCount:Nf(n.functionNode),params:Ff(n.functionNode),paramsEndLine:Lf(n.functionNode),isLiteralPassthrough:Af(n.functionNode,t)};if(!QI(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:Nf(e),params:Ff(e),paramsEndLine:Lf(e),isLiteralPassthrough:Af(e,t)}:null}function Mf(e){return e.namedChildren.find(t=>t.type==="parameters"||t.type==="formal_parameters")}function Ff(e){let t=Mf(e);if(!t)return[];let n=[];for(let r of t.namedChildren){if(mi(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 Lf(e){let t=Mf(e);return t?t.endPosition.row:e.startPosition.row}function QI(e,t){return t==="rust"?e==="function_item"||e==="function_signature_item":t==="python"?e==="function_definition":t==="typescript"||t==="tsx"||t==="javascript"?XI.has(e):!1}function ZI(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 Nf(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)mi(r)||(n+=1);return n}function Af(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=>!mi(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=>!mi(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 ew=new Set(["identifier","type_identifier","field_identifier"]),tw=new Set(["identifier"]),nw=new Set(["identifier","property_identifier","type_identifier","shorthand_property_identifier","shorthand_property_identifier_pattern"]),rw=new Set(["rust","python"]),iw=/\{([^{}]*)\}/g,ow=/\b([A-Za-z_][\w]*)\b/g;function Of(e,t){return sw(t).has(e.type)}function jf(e,t){return rw.has(t)&&e.type==="string_content"}function Oc(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 sw(e){return e==="rust"?ew:e==="python"?tw:nw}function Bf(e,t){let n=e.startPosition.row;for(let r of e.text.matchAll(iw)){let i=r[1]??"";for(let o of i.matchAll(ow))o[1]&&t(o[1],n)}}var aw=[/\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],cw=/^#!?\[\s*serde\s*\(/,lw=/^#!?\[\s*schemars\s*\(/,uw=/^#!?\[\s*validate\s*\(/,dw=new Set(["invoke","invokeTauriCommand","listen","once","emit","subscribe","dispatch","sendCommand","callRust"]);function $f(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=Mn(r);if(!i||!dw.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 Hf(e,t){let n=cw.test(e),r=lw.test(e),i=uw.test(e);if(!(!n&&!r&&!i))for(let o of aw){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 Uf(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 mw=new Map([["defn","function"],["defn-","function"],["defmacro","macro"],["defmacro-","macro"],["defmethod","method"]]),jc=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 Wf(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=Ko(e,a);continue}if(l==='"'){let p=pi(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,fw(p,{callables:t,callSites:n,clojureMembers:r,recordIdentifier:c}),o[o.length-1]?.children.push(p)),a+=1;continue}if(Bc(l)){a+=1;continue}let u=s,d=a;for(;a<e.length&&!$c(e[a]);)a+=1;let m=e.slice(d,a);if(!m)continue;let f={text:m,line:u};pw(o[o.length-1],f),c(et(m),u)}return{language:"clojure",callables:t,callSites:n,clojureMembers:r,typeContainerMap:new Map,identifierLineMap:i,identifiersByLine:Sw(i),fileIdentifiers:new Set(i.keys()),rustAttrReferencedNames:new Set,crossLanguageDispatchNames:new Set}}function fw(e,t){if(e.kind!=="("||e.headTokens.length===0)return;let n=e.headTokens[0],r=et(n.text),i=mw.get(n.text);if(i){let s=e.headTokens[1];if(s){let a=et(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(gw(e,t),!r||jc.has(n.text)||jc.has(r)||r.startsWith(":"))return;let o=bw(n.text);t.callSites.push({calleeLeaf:o.leaf,calleeQualifier:o.qualifier,calleeText:o.text,memberAccess:!1,line:n.line})}function pw(e,t){e&&(e.headTokens.length<2&&e.headTokens.push(t),e.tokens.length<200&&e.tokens.push(t))}function gw(e,t){let n=et(e.tokens[0]?.text??"");if(n==="defprotocol"){let r=et(e.tokens[1]?.text??"");if(!r)return;for(let i of qo(e))fi(t,r,"protocol",i,"protocol-method");return}if(n==="defrecord"||n==="deftype"){let r=et(e.tokens[1]?.text??"");if(!r)return;let i=n==="defrecord"?"record":"type",o=n==="defrecord"?"record-method":"type-method";for(let s of qo(e))fi(t,r,i,s,o);return}if(n==="extend-type"){let r=et(e.tokens[1]?.text??"");if(!r)return;for(let i of qo(e))fi(t,r,"extension",i,"extension-method");return}if(n==="extend-protocol"){let r=et(e.tokens[1]?.text??"");for(let i of qo(e)){r&&fi(t,r,"extension",i,"extension-method");let o=yw(e,i.startLine);o&&o!==r&&fi(t,o,"extension",i,"extension-method")}}}function qo(e){return e.children.filter(hw)}function hw(e){if(e.kind!=="(")return!1;let t=et(e.tokens[0]?.text??"");return!!(t&&!jc.has(t)&&!t.startsWith(":"))}function fi(e,t,n,r,i){let o=r.tokens[0],s=et(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 yw(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=et(i.text);o&&!o.startsWith(":")&&(n=o)}return n}function et(e){return e.replace(/^#?['`~@]+/,"").split("/").pop()?.replace(/^\./,"")??""}function bw(e){let t=e.replace(/^#?['`~@]+/,""),n=t.lastIndexOf("/"),r=et(t);if(n<=0)return{leaf:r,text:t};let i=t.slice(0,n);return{leaf:r,qualifier:i,text:t}}function Ko(e,t){let n=t;for(;n<e.length&&e[n]!==`
94
94
  `;)n+=1;return n}function pi(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 jc(e){return e==="'"||e==="`"||e==="~"||e==="@"||e==="^"||e==="#"}function Bc(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 Wf=3,Sw=Nn("source-facts",{clearGroups:["whole-project","source-file"]}),$c=oe({kind:"source-facts",invalidation:K("source-facts"),serialize:Rw,deserialize:vw});function G(e,t){return Hc(e,t).facts}function Hc(e,t){let n=P(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 $t(t)?Wo(e,t,n)?.language??null:M(t)}function xw(e,t,n,r){let i=ce(e,t,r),o=$c.read(e,t,i);if(o&&o.language===n)return{facts:o};if(n==="clojure"){let c=Uf(r);return $c.write(e,t,i,c),{facts:c}}let s=q(e,t);if(!s)return{facts:null,unavailable:{language:n,reason:"parser-unavailable"}};let a=ww(s,n);return $c.write(e,t,i,a),{facts:a}}function Rw(e){let t={version:Wf,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!==Wf||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:Mc(n),fileIdentifiers:new Set(n.keys()),rustAttrReferencedNames:new Set(t.rustAttrReferencedNames),crossLanguageDispatchNames:new Set(t.crossLanguageDispatchNames)}}catch{return null}}function Uc(e,t,n,r){let i=G(e,t);return i?Iw(i,n,r)?.isLiteralPassthrough??!0:!0}function gi(e,t){return t.relativePath.includes(".clj-kondo/hooks/")?!0:G(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=zo(l,t);u&&n.push(u);let d=Sr(l,t);d&&r.push(d),Bf(l,t,o),t==="rust"&&(l.type==="attribute_item"||l.type==="inner_attribute_item")&&$f(l.text,i),Mf(l,t)&&a(l.text,l.startPosition.row),Of(l,t)&&jf(l,a);for(let m of l.children)c(m)};return c(e.rootNode),{language:t,callables:n,callSites:r,clojureMembers:[],typeContainerMap:Hf(e,t),identifierLineMap:s,identifiersByLine:Mc(s),fileIdentifiers:new Set(s.keys()),rustAttrReferencedNames:i,crossLanguageDispatchNames:o}}var Gf=new Set(["rust","typescript","tsx","javascript","python","clojure"]);function Wc(e,t){let n=G(e,t);return!n||!Gf.has(n.language)?null:n.callables.map(r=>({name:r.name,startLine:r.startLine,endLine:r.endLine}))}function pn(e,t){let n=G(e,t);return!n||!Gf.has(n.language)?null:n.callSites}function Gc(e,t){return G(e,t)?.typeContainerMap??new Map}import{ElementTypes as Ew,NodeTypes as zc,parse as kw}from"@vue/compiler-dom";import{parse as rX}from"@vue/compiler-sfc";var Dw=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 Ko(e){return e.length<=2||Dw.has(e)}function Jo(e,t){return e.split(t).filter(Boolean).map(n=>n.charAt(0).toUpperCase()+n.slice(1)).join("")}var Pw=dn("vue-template-facts"),Tw=new Set(["component","keep-alive","slot","suspense","teleport","template","transition","transition-group"]),_w=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"]),Fw=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 Yo(e,t){let n=t.replace(/\\/g,"/"),r=P(e,n);return Pw.get(e,n,r,()=>Nw(n,br(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=kw(t.body,{comments:!1})}catch{return n}let i=new Set,o=s=>{s.trim()&&i.add(s)};return Vf(r.children,t.startLine,n,o),n.structuralTokens=[...i].sort(),n}function Vf(e,t,n,r){for(let i of e)if(i.type===zc.ELEMENT)Aw(i,t,n,r),Vf(i.children,t,n,r);else if(i.type===zc.INTERPOLATION){r("interpolation");let o=Vc(i.content);o&&qf(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:Cr(t,e.loc.start.line),endLine:Cr(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),Fw.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===zc.ATTRIBUTE){let a=e.value?.content??null,c=zf("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=Vc(e.exp),s=zf(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&&qf(o,t,e.loc.start.line,n,r)}function zf(e,t,n,r,i,o){return{kind:e,name:t,value:n,startLine:Cr(r,i),endLine:Cr(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=Vc(e.arg);return t||e.name}function Vc(e){if(!e)return null;let t=("content"in e&&typeof e.content=="string"?e.content:e.loc.source).trim();return t||null}function qf(e,t,n,r,i){for(let o of Bw(e)){let s={name:o,startLine:Cr(t,n),endLine:Cr(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)||Ko(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===Ew.COMPONENT?"component":Tw.has(t)?"builtin":_w.has(t)?"native":/^[A-Z]/.test(t)||t.includes("-")?"component":"native"}function Uw(e){return Jo(e,/[-_:]/)}function Cr(e,t){return e+Math.max(0,t-1)}import{createRequire as eD}from"module";import{existsSync as $n}from"fs";import{basename as Kf,dirname as qe,extname as Ht,join as tt,relative as jn,resolve as we,sep as tD}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
95
+ `&&(i+=1),r+=1,o==='"')break}return{index:r,line:i}}function Bc(e){return e==="'"||e==="`"||e==="~"||e==="@"||e==="^"||e==="#"}function $c(e){return/\s|,/.test(e)||e==="("||e===")"||e==="["||e==="]"||e==="{"||e==="}"||e==='"'||e===";"}function Sw(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 Gf=3,Cw=Nn("source-facts",{clearGroups:["whole-project","source-file"]}),Hc=oe({kind:"source-facts",invalidation:K("source-facts"),serialize:vw,deserialize:Iw});function G(e,t){return Uc(e,t).facts}function Uc(e,t){let n=P(e,t);if(!n)return{facts:null};let r=xw(e,t,n);return r?Cw.get(e,t,n,()=>Rw(e,t,r,n)):{facts:null}}function xw(e,t,n){return $t(t)?Go(e,t,n)?.language??null:M(t)}function Rw(e,t,n,r){let i=ce(e,t,r),o=Hc.read(e,t,i);if(o&&o.language===n)return{facts:o};if(n==="clojure"){let c=Wf(r);return Hc.write(e,t,i,c),{facts:c}}let s=q(e,t);if(!s)return{facts:null,unavailable:{language:n,reason:"parser-unavailable"}};let a=Dw(s,n);return Hc.write(e,t,i,a),{facts:a}}function vw(e){let t={version:Gf,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 Iw(e){try{let t=JSON.parse(e);if(t.version!==Gf||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:Oc(n),fileIdentifiers:new Set(n.keys()),rustAttrReferencedNames:new Set(t.rustAttrReferencedNames),crossLanguageDispatchNames:new Set(t.crossLanguageDispatchNames)}}catch{return null}}function Wc(e,t,n,r){let i=G(e,t);return i?ww(i,n,r)?.isLiteralPassthrough??!0:!0}function gi(e,t){return t.relativePath.includes(".clj-kondo/hooks/")?!0:G(e,t.relativePath)?.callables.find(r=>r.startLine===t.startLine&&r.endLine===t.endLine)?.clojureKind==="macro"}function ww(e,t,n){return e.callables.find(r=>r.startLine===t&&r.endLine===n)??null}function Dw(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=Vo(l,t);u&&n.push(u);let d=Sr(l,t);d&&r.push(d),$f(l,t,o),t==="rust"&&(l.type==="attribute_item"||l.type==="inner_attribute_item")&&Hf(l.text,i),Of(l,t)&&a(l.text,l.startPosition.row),jf(l,t)&&Bf(l,a);for(let m of l.children)c(m)};return c(e.rootNode),{language:t,callables:n,callSites:r,clojureMembers:[],typeContainerMap:Uf(e,t),identifierLineMap:s,identifiersByLine:Oc(s),fileIdentifiers:new Set(s.keys()),rustAttrReferencedNames:i,crossLanguageDispatchNames:o}}var zf=new Set(["rust","typescript","tsx","javascript","python","clojure"]);function Gc(e,t){let n=G(e,t);return!n||!zf.has(n.language)?null:n.callables.map(r=>({name:r.name,startLine:r.startLine,endLine:r.endLine}))}function pn(e,t){let n=G(e,t);return!n||!zf.has(n.language)?null:n.callSites}function zc(e,t){return G(e,t)?.typeContainerMap??new Map}import{ElementTypes as kw,NodeTypes as Vc,parse as Pw}from"@vue/compiler-dom";import{parse as iX}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 Jo(e){return e.length<=2||Ew.has(e)}function Yo(e,t){return e.split(t).filter(Boolean).map(n=>n.charAt(0).toUpperCase()+n.slice(1)).join("")}var Tw=dn("vue-template-facts"),_w=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"]),Lw=new Set(["div","span","template"]),Nw=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 Xo(e,t){let n=t.replace(/\\/g,"/"),r=P(e,n);return Tw.get(e,n,r,()=>Aw(n,br(e,n).template))}function Aw(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 qf(r.children,t.startLine,n,o),n.structuralTokens=[...i].sort(),n}function qf(e,t,n,r){for(let i of e)if(i.type===Vc.ELEMENT)Mw(i,t,n,r),qf(i.children,t,n,r);else if(i.type===Vc.INTERPOLATION){r("interpolation");let o=qc(i.content);o&&Kf(o,t,i.loc.start.line,n,r)}}function Mw(e,t,n,r){let i=Ww(e.tag),o={tag:e.tag,normalized:i,kind:Uw(e),startLine:Cr(t,e.loc.start.line),endLine:Cr(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),Lw.has(e.tag)||r(`native:${e.tag}`));for(let s of e.props)Ow(s,t,n,r)}function Ow(e,t,n,r){if(e.type===Vc.ATTRIBUTE){let a=e.value?.content??null,c=Vf("prop",e.name,a,t,e.loc.start.line,e.loc.end.line);n.props.push(c),r(`prop:${e.name}`);return}let i=Bw(e),o=qc(e.exp),s=Vf(jw(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&&Kf(o,t,e.loc.start.line,n,r)}function Vf(e,t,n,r,i,o){return{kind:e,name:t,value:n,startLine:Cr(r,i),endLine:Cr(r,o)}}function jw(e){switch(e){case"bind":case"model":return"prop";case"on":return"event";case"slot":return"slot";default:return"directive"}}function Bw(e){let t=qc(e.arg);return t||e.name}function qc(e){if(!e)return null;let t=("content"in e&&typeof e.content=="string"?e.content:e.loc.source).trim();return t||null}function Kf(e,t,n,r,i){for(let o of $w(e)){let s={name:o,startLine:Cr(t,n),endLine:Cr(t,n)};r.expressionIdentifiers.push(s),i(`id:${o}`)}}function $w(e){let t=new Set,n=Hw(e),r=/\b[A-Za-z_$][A-Za-z0-9_$]*\b/g,i;for(;i=r.exec(n);){let o=i[0];Nw.has(o)||Jo(o)||/^[A-Z_]+$/.test(o)||t.add(o)}return[...t].sort()}function Hw(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 Uw(e){let t=e.tag;return e.tagType===kw.COMPONENT?"component":_w.has(t)?"builtin":Fw.has(t)?"native":/^[A-Z]/.test(t)||t.includes("-")?"component":"native"}function Ww(e){return Yo(e,/[-_:]/)}function Cr(e,t){return e+Math.max(0,t-1)}import{createRequire as tD}from"module";import{existsSync as $n}from"fs";import{basename as Jf,dirname as qe,extname as Ht,join as tt,relative as jn,resolve as we,sep as nD}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
96
  FROM documents
97
97
  WHERE 1 = 1
98
98
  ${e.pathExclusionsFor("documents")}
99
99
  ${n}
100
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 gn(e){return e.replace(/\\/g,"/").replace(/^\.\//,"")}function te(e){return e.replace(/\\/g,"/")}function Ve(e,t){return gn(e)===gn(t)}function mX(e,t){let n=Gw(e,t);return n===""||!n.startsWith("..")&&!Ww(n)}import{existsSync as Kc,readFileSync as Jc,readdirSync as zw,statSync as Vw}from"fs";import{join as xr,relative as qw}from"path";function Rr(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 Yc(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=xr(e,"pnpm-workspace.yaml");if(!Kc(t))return null;try{return Jw(Jc(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=xr(e,"package.json");if(!Kc(t))return null;try{let n=JSON.parse(Jc(t,"utf8"));return n.workspaces?Array.isArray(n.workspaces)?n.workspaces:n.workspaces.packages??[]:null}catch{return null}}function Yc(e,t){if(!t||t.startsWith("!")||t.includes("node_modules"))return[];if(!t.includes("*")){let s=xr(e,t);return qc(s)?[s]:[]}let n=t.indexOf("*"),r=t.slice(0,n).replace(/\/$/,""),i=t.slice(n+1).replace(/^\//,""),o=xr(e,r||".");return qc(o)?zw(o).map(s=>xr(o,s,i)).filter(qc):[]}function qc(e){try{return Vw(e).isDirectory()}catch{return!1}}function Zw(e,t){let n=xr(t,"package.json");if(!Kc(n))return null;try{let r=JSON.parse(Jc(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 nD=J("indexed-paths",{clearGroups:[]}),rD=J("indexed-path-digest",{clearGroups:[]}),iD=j("tsconfig-alias-config",{clearGroups:["whole-project"]}),oD=j("tsconfig-alias-config-for-dir",{clearGroups:["whole-project"]}),sD=eD(import.meta.url),hi;function aD(){if(hi!==void 0)return hi;try{hi=sD("typescript")}catch{hi=null}return hi}var cD=["tsconfig.json","tsconfig.app.json","tsconfig.node.json","tsconfig.base.json"],lD=J("workspace-packages",{clearGroups:["whole-project"]}),Bn=[".ts",".tsx",".mts",".cts",".js",".jsx",".mjs",".cjs",".vue"],Xo=[".py",".pyi"],Ke=[".java",".scala",".kt",".kts"],Qo=[".rs"],Zo=[".rb"],es=[".c",".h",".cc",".cpp",".cxx",".hpp",".hh",".hxx"],hn=[".cs",".vb"],ts=[".dart"],Hn=[".php"],vr=[".clj",".cljs",".cljc"],uD=new Set(Bn),Xc=new Set(Xo),Jf=new Set(Ke),Qc=new Set(Qo),Zc=new Set(Zo),Yf=new Set(es),Xf=new Set(hn),el=new Set(ts),Qf=new Set(Hn),Zf=new Set(vr),dD=[{extensions:Bn,lookup:uD},{extensions:Xo,lookup:Xc},{extensions:Ke,lookup:Jf},{extensions:Qo,lookup:Qc},{extensions:Zo,lookup:Zc},{extensions:es,lookup:Yf},{extensions:hn,lookup:Xf},{extensions:ts,lookup:el},{extensions:Hn,lookup:Qf},{extensions:vr,lookup:Zf}];function Ut(e,t){return t.has(Ht(e).toLowerCase())}function mD(e){return Ut(e,Xc)}function fD(e){return Ut(e,Jf)}function pD(e){return Ut(e,Qc)}function gD(e){return Ut(e,Zc)}function hD(e){return Ut(e,Yf)}function yD(e){return Ut(e,Xf)}function ep(e){return Ht(e).toLowerCase()===".vb"}function bD(e){return Ut(e,el)}function SD(e){return Ut(e,Qf)}function CD(e){return Ut(e,Zf)}function tl(e){let t=Ht(e).toLowerCase();for(let n of dD)if(n.lookup.has(t))return n.extensions;return Bn}function xD(e){return fD(e)||yD(e)||SD(e)}function Je(e,t,n){return mD(t)?Ir(e,t,n):pD(t)?Wt(e,t,n):gD(t)?ns(e,t,n):hD(t)?rs(e,t,n):xD(t)?be(e,n.replace(/\\/g,"."),tl(t)):bD(t)?is(e,t,n):CD(t)?nl(e,n):RD(e,t,n)}function RD(e,t,n){if(!n.startsWith(".")&&!n.startsWith("/"))return vD(e,t,n)??wD(e,n);let r=qe(tt(e.config.projectRoot,t)),i=we(r,n),o=Gt(e);for(let s of il(i)){let a=te(jn(e.config.projectRoot,s));if(o.has(a)||$n(s))return a}return te(jn(e.config.projectRoot,i))}function vD(e,t,n){let r=_D(e,t);if(!r)return null;let i=Gt(e);for(let o of ID(r,n)){let s=we(r.baseUrl,o);for(let a of il(s)){let c=te(jn(e.config.projectRoot,a));if(i.has(c)||$n(a))return c}}return null}function ID(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 wD(e,t){let n=ED(DD(e),t);if(!n)return null;let r=Gt(e);for(let i of kD(n)){let o=we(e.config.projectRoot,n.pkg.relativeDir,i);for(let s of il(o)){let a=te(jn(e.config.projectRoot,s));if(r.has(a)||$n(s))return a}}return null}function DD(e){return lD.get(e,()=>Rr(e.config.projectRoot))}function ED(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 kD(e){let t=[],n=PD(e.pkg.exports,e.subpath);if(n){let r=TD(n);r&&t.push(r)}return t.push(e.subpath?`src/${e.subpath}`:"src/index"),t}function PD(e,t){if(!e||typeof e!="object")return null;let n=t===""?".":`./${t}`;return tp(e[n])}function tp(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=tp(t[n]);if(r)return r}return null}function TD(e){let t=e.replace(/^\.\//,"");return t.startsWith("dist/")?`src/${t.slice(5)}`:null}function _D(e,t){let n=te(qe(t));return oD.get(e,n,()=>FD(e,n))}function FD(e,t){let n=aD();if(!n)return null;let r=we(e.config.projectRoot),i=we(r,t);for(;i===r||i.startsWith(r+tD);){for(let s of cD){let a=tt(i,s);if(!$n(a))continue;let c=iD.get(e,a,()=>LD(n,a));if(c)return c}let o=qe(i);if(o===i)break;i=o}return null}function LD(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 Ir(e,t,n){let r=Gt(e),i;if(n.startsWith(".")){let o=n.match(/^(\.+)(.*)$/);if(!o)return null;let s=o[1].length,a=o[2].replace(/^\./,""),c=qe(tt(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 ND(i)){let s=te(jn(e.config.projectRoot,o));if(r.has(s)||$n(o))return s}return null}function Wt(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(tt(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,"/")),rl(e,AD(o))}function ns(e,t,n){let r=qe(tt(e.config.projectRoot,t)),i=we(r,n);return rl(e,MD(i))}function rs(e,t,n){let r=qe(tt(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 rl(e,i)}function be(e,t,n){let r=Gt(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=>Kf(u)===`${s}${c}`);if(l)return l}let a=[...r].filter(c=>n.includes(Ht(c).toLowerCase())).filter(c=>c.includes(`/${o}/`)||c.includes(`/${s}/`)).sort((c,l)=>c.localeCompare(l));return a.length===1?a[0]:null}function is(e,t,n){let r=Gt(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=te(c.startsWith("lib/")?c:`lib/${c}`);return r.has(l)?l:null}let i=qe(tt(e.config.projectRoot,t)),o=we(i,n);for(let s of OD(o)){let a=te(jn(e.config.projectRoot,s));if(r.has(a)||$n(s))return a}return null}function nl(e,t){let n=t.replace(/-/g,"_").replace(/\./g,"/"),r=Gt(e);for(let i of vr){let o=`${n}${i}`,s=[...r].find(a=>a.endsWith(o));if(s)return s}for(let i of vr){let o=[...r].find(s=>Kf(s)===`${n.split("/").pop()}${i}`);if(o)return o}return null}function ND(e){let t=Ht(e);return Xc.has(t)?[e]:[`${e}.py`,`${e}.pyi`,tt(e,"__init__.py"),tt(e,"__init__.pyi")]}function rl(e,t){let n=Gt(e);for(let r of t){let i=te(jn(e.config.projectRoot,r));if(n.has(i)||$n(r))return i}return null}function AD(e){let t=Ht(e);return Qc.has(t)?[e]:[`${e}.rs`,tt(e,"mod.rs")]}function MD(e){let t=Ht(e);return Zc.has(t)?[e]:[`${e}.rb`,tt(e,"index.rb")]}function OD(e){let t=Ht(e);return el.has(t)?[e]:[`${e}.dart`,e]}function il(e){let t=Ht(e),n=new Set;if(t){n.add(e);for(let r of Bn)n.add(e.slice(0,-t.length)+r)}else for(let r of Bn)n.add(`${e}${r}`),n.add(tt(e,`index${r}`));return[...n]}function Gt(e){return nD.get(e,()=>new Set(N(e,{includeIgnored:!1}).map(te)))}function ol(e){return rD.get(e,()=>he([...Gt(e)].sort().join(`
102
- `)))}import{readdirSync as jD}from"fs";import{execFileSync as BD}from"child_process";import{extname as os,join as $D}from"path";var HD=[".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"],_X=[".vue"],np=[".tsx",".jsx"],rp=[".vue"],UD=[...np,...rp],WD=new Set(np),GD=new Set(rp),ip=new Set(HD.map(e=>e.toLowerCase())),zD=[...ip].sort().join(","),op=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):ip,s=i?[...o].sort().join(","):zD,a=`${n?"1":"0"}|${r?"1":"0"}|${s}`;return VD.get(e,a,()=>{let c=new Set;if(n)for(let l of N(e,{includeIgnored:!1}))o.has(os(l).toLowerCase())&&c.add(l);if(r)for(let l of qD(e.config.projectRoot,o))e.isIgnored(l)||n&&c.has(l)||c.add(l);return[...c].sort()})}function ss(e,t={}){let n=!1,r=!1;for(let i of $e(e,{extensions:UD})){if(t.scope&&!i.includes(t.scope))continue;let o=os(i).toLowerCase();if(n||=WD.has(o),r||=GD.has(o),n&&r)break}return{react:n,vue:r}}var VD=j("source-files",{clearGroups:[]});function qD(e,t){return KD(e,t)??YD(e,t)}function KD(e,t){try{let n=BD("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&&(JD(o)||t.has(os(o).toLowerCase())&&r.add(o))}return r}catch{return null}}function JD(e){return e.split("/").some(t=>op.has(t))}function YD(e,t){let n=new Set,r=i=>{let o=i?$D(e,i):e,s;try{s=jD(o,{withFileTypes:!0})}catch{return}for(let a of s)if(!op.has(a.name)){if(a.isDirectory()){r(i?`${i}/${a.name}`:a.name);continue}t.has(os(a.name).toLowerCase())&&n.add(i?`${i}/${a.name}`:a.name)}};return r(""),n}var XD=new Set(["ref","shallowRef","reactive","computed","watch","watchEffect"]),QD=new Set(["onBeforeMount","onMounted","onBeforeUpdate","onUpdated","onBeforeUnmount","onUnmounted","onActivated","onDeactivated","onErrorCaptured"]),ZD=new Set(["axios","fetch","runRequest","useAsyncData","useFetch","useResource"]),eE=new Set(["defineEmits","defineExpose","defineModel","defineOptions","defineProps","withDefaults"]),tE=new Set(["catch","for","function","if","return","switch","while"]);function cs(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+=An(n),n.external&&(t.externalLineCount+=An(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(...oE(n));let r=ui(n.astLanguage,n.body);r?rE(n,r.rootNode,t):iE(n,t)}return nE(t),t.externalScriptPaths=ap(t.externalScriptPaths),t}function nE(e){e.composables=wr(e,"composable"),e.stores=wr(e,"store"),e.reactivity=wr(e,"reactivity"),e.lifecycle=wr(e,"lifecycle"),e.requests=wr(e,"request"),e.macros=wr(e,"macro")}function wr(e,t){return ap(e.calls.filter(n=>n.categories.includes(t)).map(n=>n.name))}function rE(e,t,n){let r=new Set,i=new Set,o=s=>{let a=zo(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=Sr(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:sp(c.calleeLeaf),setup:e.setup}))}for(let l of s.children)o(l)};o(t)}function iE(e,t){for(let n of e.body.matchAll(/\b([A-Za-z_$][\w$]*)\s*\(/g)){let r=n[1];!r||tE.has(r)||t.calls.push({name:r,sourcePath:e.sourcePath,line:e.startLine+as(e.body,n.index??0),categories:sp(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+as(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+as(e.body,n.index??0);t.functions.push({name:r,sourcePath:e.sourcePath,startLine:i,endLine:i,setup:e.setup})}}function oE(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+as(e.body,n.index??0);for(let s of sE(r))t.push({local:s,source:i,sourcePath:e.sourcePath,line:o,setup:e.setup})}return t}function sE(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 sp(e){let t=["call"];return/^use[A-Z0-9_]/.test(e)&&t.push("composable"),/^use[A-Z0-9_].*Store$/.test(e)&&t.push("store"),XD.has(e)&&t.push("reactivity"),QD.has(e)&&t.push("lifecycle"),ZD.has(e)&&t.push("request"),eE.has(e)&&t.push("macro"),t}function as(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 ap(e){return[...new Set(e)].sort()}var aE=new Set(["in","key","of"]),cE=new Set(["computed","defineEmits","defineProps","reactive","ref","watch","watchEffect"]),lE=dn("vue-component-behavior-profiles");function cp(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=>sl(e,i)).filter(i=>(t.minTemplateTokens===void 0||i.templateTokens.size>=t.minTemplateTokens)&&(t.minBehaviorTokens===void 0||i.behaviorTokens.size>=t.minBehaviorTokens))}function sl(e,t){let n=t.replace(/\\/g,"/"),r=P(e,n),i=lE.get(e,n,r,()=>uE(e,n,r));return mE(i)}function uE(e,t,n){let r=br(e,t),i=Yo(e,t),o=cs(r),s=gE(i),a=i.expressionIdentifiers.map(y=>y.name).filter(y=>!s.includes(y)).filter((y,h,C)=>C.indexOf(y)===h).sort(),c=i.componentTags.map(y=>y.normalized).filter((y,h,C)=>C.indexOf(y)===h).sort(),l=n?n.split(`
104
- `).length:0,u=An(r.template),d=o.lineCount,m=r.styles.reduce((y,h)=>y+An(h),0),f=r.customBlocks.reduce((y,h)=>y+An(h),0),{lines:p,paths:g}=dE(e,t,o);return{file:t,sfc:r,templateFacts:i,scriptFacts:o,templateTokens:new Set(i.structuralTokens),behaviorTokens:pE(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 dE(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=P(e,a);return s+(c?c.split(`
105
- `).length:0)},0),paths:i}}function mE(e){let t=fE(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 fE(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 pE(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(cE.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 gE(e){let t=new Set;for(let n of e.directives)if(n.name==="for"&&n.value)for(let r of hE(n.value))t.add(r);for(let n of e.slots)if(n.value)for(let r of lp(n.value))t.add(r);return[...t].sort()}function hE(e){let t=/^(.*?)\s+(?:in|of)\s+/.exec(e.trim());return t?lp(t[1]??""):[]}function lp(e){let t=[];for(let n of e.matchAll(/\b[A-Za-z_$][\w$]*\b/g)){let r=n[0];aE.has(r)||t.push(r)}return t}import{extname as yE}from"path";function It(e){return typeof e=="object"&&e!==null}function Me(e){return Array.isArray(e)&&e.every(t=>typeof t=="string")?e:null}var bE=[".tsx",".jsx"],up=new Set(["useActionState","useCallback","useContext","useDebugValue","useDeferredValue","useEffect","useId","useImperativeHandle","useInsertionEffect","useLayoutEffect","useMemo","useOptimistic","useReducer","useRef","useState","useSyncExternalStore","useTransition"]),SE=new Set(["useEffect","useInsertionEffect","useLayoutEffect"]),CE=new Set(["useActionState","useOptimistic","useReducer","useRef","useState"]),xE=new Set(["useLocation","useNavigate","useParams","useSearchParams","useTranslation"]),RE=new Set(["axios","fetch","gql","graphql","mutate","query","request","useMutation","useQuery","useSuspenseQuery"]),vE=new Set(["add","apply","cancel","change","clear","close","create","delete","fetch","filter","handle","load","open","refresh","remove","render","reset","save","select","submit","toggle","update"]),IE=new Set(["aria-hidden","className","clipRule","d","fill","fillRule","height","role","stroke","strokeLinecap","strokeLinejoin","strokeWidth","style","viewBox","width","xmlns"]),wE=dn("react-component-behavior-profiles"),dp=oe({kind:"react-component-behavior-profiles",invalidation:K("react-component-behavior-profiles"),serialize:PE,deserialize:TE});function gp(e,t={}){let n=$e(e,{extensions:bE}).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=>cl(e,i)).filter(i=>(t.minJsxTokens===void 0||i.jsxTokens.size>=t.minJsxTokens)&&(t.minBehaviorTokens===void 0||i.behaviorTokens.size>=t.minBehaviorTokens))}function cl(e,t){let n=t.replace(/\\/g,"/"),r=P(e,n);return wE.get(e,n,r,()=>DE(e,n,r)).map(kE)}function DE(e,t,n){let r=ce(e,t,n),i=dp.read(e,t,r);if(i)return i;let o=EE(e,t);return dp.write(e,t,r,o),o}function EE(e,t){let n=FE(t);if(!n)return[];let r=q(e,t);if(!r)return[];let i=Ce(e,t).length;return LE(r.rootNode,n).filter(s=>s.kind==="hook"||ll(s.bodyNode)).map(s=>{let a=$E(s.bodyNode),c=zE(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:zt(a.componentNames),nativeTags:zt(a.nativeTags),propNames:zt(a.propNames),eventNames:zt(a.eventNames),hookNames:zt(c.hookNames),requestNames:zt(c.requestNames),stateNames:zt(c.stateNames),effectNames:zt(c.effectNames),handlerNames:zt(c.handlerNames)}})}function kE(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 PE(e){return JSON.stringify(e.map(t=>({...t,jsxTokens:[...t.jsxTokens],behaviorTokens:[...t.behaviorTokens]})))}function TE(e){try{let t=JSON.parse(e);if(!Array.isArray(t))return null;let n=[];for(let r of t){let i=_E(r);if(!i)return null;n.push(i)}return n}catch{return null}}function _E(e){if(!It(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:C}=e;if(typeof t!="string"||typeof n!="string"||r!=="component"&&r!=="hook"||!ls(i)||!ls(o)||!ls(s)||!ls(a))return null;let x={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(C)};return Object.values(x).some(S=>S===null)?null:{file:t,name:n,kind:r,startLine:i,endLine:o,loc:s,fileLines:a,jsxTokens:new Set(x.jsxTokens),behaviorTokens:new Set(x.behaviorTokens),componentNames:x.componentNames,nativeTags:x.nativeTags,propNames:x.propNames,eventNames:x.eventNames,hookNames:x.hookNames,requestNames:x.requestNames,stateNames:x.stateNames,effectNames:x.effectNames,handlerNames:x.handlerNames}}function ls(e){return typeof e=="number"&&Number.isFinite(e)}function FE(e){let t=yE(e).toLowerCase();return t!==".tsx"&&t!==".jsx"?null:M(e)}function LE(e,t){let n=[],r=new Set,i=o=>{let s=NE(o);if(s&&(!jE(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 NE(e){if(e.type==="class_declaration"){let o=al(e);if(!o||!/^[A-Z]/.test(o))return null;let s=AE(e);return!s||!ME(e)&&!ll(s)?null:{name:o,kind:"component",node:e,bodyNode:s}}if(e.type==="function_declaration"){let o=al(e);return!o||!mp(o)?null:{name:o,kind:fp(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=yi(t);if(!r||!n||!mp(r))return null;let i=OE(n);return i?{name:r,kind:fp(r),node:e,bodyNode:i}:null}function AE(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 ME(e){return/\b(?:React\.)?(?:Pure)?Component\b/.test(e.text)}function mp(e){return/^[A-Z]/.test(e)||/^use[A-Z0-9_]/.test(e)}function fp(e){return/^use[A-Z0-9_]/.test(e)?"hook":"component"}function OE(e){if(e.type==="arrow_function"||e.type==="function_expression")return e;if(e.type!=="call_expression")return null;let t=BE(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 jE(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 al(e){return yi(e.childForFieldName("name")??e.namedChild(0))}function BE(e){let t=e.childForFieldName("function")??e.namedChild(0);return t?t.text.split(".").pop()??t.text:null}function ll(e){return e.type.startsWith("jsx_")?!0:e.namedChildren.some(ll)}function $E(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"?HE(r,t):r.type==="jsx_element"&&r.text.trimStart().startsWith("<>")?t.tokens.add("jsx:fragment"):r.type==="jsx_expression"?UE(r,t):r.type==="jsx_fragment"&&t.tokens.add("jsx:fragment");for(let i of r.children)n(i)};return n(e),t}function HE(e,t){let n=WE(e),r=!1;if(n){let i=pp(n),o=i==="Fragment"||i==="React.Fragment";r=YE(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=GE(i);if(!o)continue;let s=pp(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 IE.has(s)||(t.propNames.add(s),t.tokens.add(`${r?"prop":"native-prop"}:${s}`))}else i.type==="jsx_spread_attribute"&&t.tokens.add(hp(i))}function UE(e,t){let n=e.text;/^\{\s*\.\.\./.test(n)&&t.tokens.add(hp(e)),yp(e)&&t.tokens.add("jsx:conditional"),(n.includes(".map(")||n.includes(".flatMap("))&&t.tokens.add("jsx:list");for(let r of XE(n))Ko(r)||t.tokens.add(`binding:${r}`)}function hp(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 yp(e){return e.type==="ternary_expression"||e.type==="conditional_expression"?!0:e.namedChildren.some(yp)}function WE(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 GE(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 zE(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=Sr(i,t);o&&VE(o.calleeLeaf,n)}else if(i.type==="variable_declarator")KE(i,n);else if(i.type==="function_declaration"){let o=al(i);o&&bp(o,n)}for(let o of i.namedChildren)r(o)};return r(e),n}function VE(e,t){/^use[A-Z0-9_]/.test(e)&&(t.hookNames.add(e),!up.has(e)&&!xE.has(e)&&t.tokens.add(`hook:${e}`)),up.has(e)&&t.tokens.add(`react-hook:${e}`),SE.has(e)&&(t.effectNames.add(e),t.tokens.add(`effect:${e}`)),CE.has(e)&&t.tokens.add(`state-hook:${e}`),qE(e)&&(t.requestNames.add(e),t.tokens.add(`request:${e}`))}function qE(e){if(RE.has(e))return!0;let t=/^use([A-Z0-9_].*)$/.exec(e)?.[1];return t?/(Query|Mutation|Fetch|Resource)$/.test(t):!1}function KE(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=>yi(a)),s=yi(o);s&&(t.stateNames.add(s),t.tokens.add(`state:${s}`))}let i=yi(n);i&&bp(i,t)}function bp(e,t){let n=JE(e);!n||!vE.has(n)||(t.handlerNames.add(e),t.tokens.add(`handler:${e}`),t.tokens.add(`handler-verb:${n}`))}function JE(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 YE(e){return/^[A-Z]/.test(e)||e.includes(".")}function pp(e){return e.replace(/^this\./,"").replace(/\$/g,".")}function yi(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 XE(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 zt(e){return[...e].sort()}function nt(e){return{capability:(t,n)=>QE(t,n),reactProfiles:(t={})=>gp(e,t),reactProfilesForFile:t=>cl(e,t),vueProfiles:(t={})=>cp(e,t),vueProfileForFile:t=>sl(e,t),vueTemplateFacts:t=>Yo(e,t),vueScriptFacts:t=>cs(br(e,t))}}function QE(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 Un(e,t,n={}){let r=G(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 xp}from"path";function $(e){return e.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}function rt(e){return e.replace(/'''[\s\S]*?'''/g,yn).replace(/"""[\s\S]*?"""/g,yn).replace(/#.*$/gm,yn).replace(/\/\/.*$/gm,yn).replace(/\/\*[\s\S]*?\*\//g,yn).replace(/`(?:\\[\s\S]|[^`])*`/g,yn).replace(/'(?:\\.|[^'\\\r\n])*'/g,yn).replace(/"(?:\\.|[^"\\\r\n])*"/g,yn)}function Si(e){return Cp(e,{maskStrings:!1})}function Sp(e){return Cp(e,{maskStrings:!0})}function Cp(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+=ul(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+=ul(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?ul(e,r,a):e.slice(r,a),r=a;continue}n+=o,r+=1}return n}function ul(e,t,n){let r="";for(let i=t;i<n;i+=1)r+=e[i]===`
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 Gw,relative as zw}from"path";function gn(e){return e.replace(/\\/g,"/").replace(/^\.\//,"")}function te(e){return e.replace(/\\/g,"/")}function Ve(e,t){return gn(e)===gn(t)}function fX(e,t){let n=zw(e,t);return n===""||!n.startsWith("..")&&!Gw(n)}import{existsSync as Jc,readFileSync as Yc,readdirSync as Vw,statSync as qw}from"fs";import{join as xr,relative as Kw}from"path";function Rr(e){let t=Jw(e)??Zw(e);if(!t||t.length===0)return[];let n=[],r=new Set;for(let i of t)for(let o of Xc(e,i)){if(r.has(o))continue;r.add(o);let s=eD(e,o);s&&n.push(s)}return n}function Jw(e){let t=xr(e,"pnpm-workspace.yaml");if(!Jc(t))return null;try{return Yw(Yc(t,"utf8"))}catch{return null}}function Yw(e){let t=[],n=!1;for(let r of e.split(/\r?\n/)){let i=Xw(r);if(!n){/^packages\s*:\s*$/.test(i.trim())&&(n=!0);continue}let o=/^\s+-\s*(.+)$/.exec(i);if(o){let s=Qw(o[1].trim());s&&t.push(s);continue}if(i.trim()!=="")break}return t}function Xw(e){let t=e.indexOf("#");return t===-1?e:e.slice(0,t)}function Qw(e){return e.startsWith('"')&&e.endsWith('"')||e.startsWith("'")&&e.endsWith("'")?e.slice(1,-1):e}function Zw(e){let t=xr(e,"package.json");if(!Jc(t))return null;try{let n=JSON.parse(Yc(t,"utf8"));return n.workspaces?Array.isArray(n.workspaces)?n.workspaces:n.workspaces.packages??[]:null}catch{return null}}function Xc(e,t){if(!t||t.startsWith("!")||t.includes("node_modules"))return[];if(!t.includes("*")){let s=xr(e,t);return Kc(s)?[s]:[]}let n=t.indexOf("*"),r=t.slice(0,n).replace(/\/$/,""),i=t.slice(n+1).replace(/^\//,""),o=xr(e,r||".");return Kc(o)?Vw(o).map(s=>xr(o,s,i)).filter(Kc):[]}function Kc(e){try{return qw(e).isDirectory()}catch{return!1}}function eD(e,t){let n=xr(t,"package.json");if(!Jc(n))return null;try{let r=JSON.parse(Yc(n,"utf8"));return typeof r.name!="string"||r.name.length===0?null:{name:r.name,relativeDir:Kw(e,t).replace(/\\/g,"/"),exports:r.exports}}catch{return null}}var rD=J("indexed-paths",{clearGroups:[]}),iD=J("indexed-path-digest",{clearGroups:[]}),oD=j("tsconfig-alias-config",{clearGroups:["whole-project"]}),sD=j("tsconfig-alias-config-for-dir",{clearGroups:["whole-project"]}),aD=tD(import.meta.url),hi;function cD(){if(hi!==void 0)return hi;try{hi=aD("typescript")}catch{hi=null}return hi}var lD=["tsconfig.json","tsconfig.app.json","tsconfig.node.json","tsconfig.base.json"],uD=J("workspace-packages",{clearGroups:["whole-project"]}),Bn=[".ts",".tsx",".mts",".cts",".js",".jsx",".mjs",".cjs",".vue"],Qo=[".py",".pyi"],Ke=[".java",".scala",".kt",".kts"],Zo=[".rs"],es=[".rb"],ts=[".c",".h",".cc",".cpp",".cxx",".hpp",".hh",".hxx"],hn=[".cs",".vb"],ns=[".dart"],Hn=[".php"],vr=[".clj",".cljs",".cljc"],dD=new Set(Bn),Qc=new Set(Qo),Yf=new Set(Ke),Zc=new Set(Zo),el=new Set(es),Xf=new Set(ts),Qf=new Set(hn),tl=new Set(ns),Zf=new Set(Hn),ep=new Set(vr),mD=[{extensions:Bn,lookup:dD},{extensions:Qo,lookup:Qc},{extensions:Ke,lookup:Yf},{extensions:Zo,lookup:Zc},{extensions:es,lookup:el},{extensions:ts,lookup:Xf},{extensions:hn,lookup:Qf},{extensions:ns,lookup:tl},{extensions:Hn,lookup:Zf},{extensions:vr,lookup:ep}];function Ut(e,t){return t.has(Ht(e).toLowerCase())}function fD(e){return Ut(e,Qc)}function pD(e){return Ut(e,Yf)}function gD(e){return Ut(e,Zc)}function hD(e){return Ut(e,el)}function yD(e){return Ut(e,Xf)}function bD(e){return Ut(e,Qf)}function tp(e){return Ht(e).toLowerCase()===".vb"}function SD(e){return Ut(e,tl)}function CD(e){return Ut(e,Zf)}function xD(e){return Ut(e,ep)}function nl(e){let t=Ht(e).toLowerCase();for(let n of mD)if(n.lookup.has(t))return n.extensions;return Bn}function RD(e){return pD(e)||bD(e)||CD(e)}function Je(e,t,n){return fD(t)?Ir(e,t,n):gD(t)?Wt(e,t,n):hD(t)?rs(e,t,n):yD(t)?is(e,t,n):RD(t)?be(e,n.replace(/\\/g,"."),nl(t)):SD(t)?os(e,t,n):xD(t)?rl(e,n):vD(e,t,n)}function vD(e,t,n){if(!n.startsWith(".")&&!n.startsWith("/"))return ID(e,t,n)??DD(e,n);let r=qe(tt(e.config.projectRoot,t)),i=we(r,n),o=Gt(e);for(let s of ol(i)){let a=te(jn(e.config.projectRoot,s));if(o.has(a)||$n(s))return a}return te(jn(e.config.projectRoot,i))}function ID(e,t,n){let r=FD(e,t);if(!r)return null;let i=Gt(e);for(let o of wD(r,n)){let s=we(r.baseUrl,o);for(let a of ol(s)){let c=te(jn(e.config.projectRoot,a));if(i.has(c)||$n(a))return c}}return null}function wD(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 DD(e,t){let n=kD(ED(e),t);if(!n)return null;let r=Gt(e);for(let i of PD(n)){let o=we(e.config.projectRoot,n.pkg.relativeDir,i);for(let s of ol(o)){let a=te(jn(e.config.projectRoot,s));if(r.has(a)||$n(s))return a}}return null}function ED(e){return uD.get(e,()=>Rr(e.config.projectRoot))}function kD(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 PD(e){let t=[],n=TD(e.pkg.exports,e.subpath);if(n){let r=_D(n);r&&t.push(r)}return t.push(e.subpath?`src/${e.subpath}`:"src/index"),t}function TD(e,t){if(!e||typeof e!="object")return null;let n=t===""?".":`./${t}`;return np(e[n])}function np(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=np(t[n]);if(r)return r}return null}function _D(e){let t=e.replace(/^\.\//,"");return t.startsWith("dist/")?`src/${t.slice(5)}`:null}function FD(e,t){let n=te(qe(t));return sD.get(e,n,()=>LD(e,n))}function LD(e,t){let n=cD();if(!n)return null;let r=we(e.config.projectRoot),i=we(r,t);for(;i===r||i.startsWith(r+nD);){for(let s of lD){let a=tt(i,s);if(!$n(a))continue;let c=oD.get(e,a,()=>ND(n,a));if(c)return c}let o=qe(i);if(o===i)break;i=o}return null}function ND(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 Ir(e,t,n){let r=Gt(e),i;if(n.startsWith(".")){let o=n.match(/^(\.+)(.*)$/);if(!o)return null;let s=o[1].length,a=o[2].replace(/^\./,""),c=qe(tt(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 AD(i)){let s=te(jn(e.config.projectRoot,o));if(r.has(s)||$n(o))return s}return null}function Wt(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(tt(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,"/")),il(e,MD(o))}function rs(e,t,n){let r=qe(tt(e.config.projectRoot,t)),i=we(r,n);return il(e,OD(i))}function is(e,t,n){let r=qe(tt(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 il(e,i)}function be(e,t,n){let r=Gt(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=>Jf(u)===`${s}${c}`);if(l)return l}let a=[...r].filter(c=>n.includes(Ht(c).toLowerCase())).filter(c=>c.includes(`/${o}/`)||c.includes(`/${s}/`)).sort((c,l)=>c.localeCompare(l));return a.length===1?a[0]:null}function os(e,t,n){let r=Gt(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=te(c.startsWith("lib/")?c:`lib/${c}`);return r.has(l)?l:null}let i=qe(tt(e.config.projectRoot,t)),o=we(i,n);for(let s of jD(o)){let a=te(jn(e.config.projectRoot,s));if(r.has(a)||$n(s))return a}return null}function rl(e,t){let n=t.replace(/-/g,"_").replace(/\./g,"/"),r=Gt(e);for(let i of vr){let o=`${n}${i}`,s=[...r].find(a=>a.endsWith(o));if(s)return s}for(let i of vr){let o=[...r].find(s=>Jf(s)===`${n.split("/").pop()}${i}`);if(o)return o}return null}function AD(e){let t=Ht(e);return Qc.has(t)?[e]:[`${e}.py`,`${e}.pyi`,tt(e,"__init__.py"),tt(e,"__init__.pyi")]}function il(e,t){let n=Gt(e);for(let r of t){let i=te(jn(e.config.projectRoot,r));if(n.has(i)||$n(r))return i}return null}function MD(e){let t=Ht(e);return Zc.has(t)?[e]:[`${e}.rs`,tt(e,"mod.rs")]}function OD(e){let t=Ht(e);return el.has(t)?[e]:[`${e}.rb`,tt(e,"index.rb")]}function jD(e){let t=Ht(e);return tl.has(t)?[e]:[`${e}.dart`,e]}function ol(e){let t=Ht(e),n=new Set;if(t){n.add(e);for(let r of Bn)n.add(e.slice(0,-t.length)+r)}else for(let r of Bn)n.add(`${e}${r}`),n.add(tt(e,`index${r}`));return[...n]}function Gt(e){return rD.get(e,()=>new Set(N(e,{includeIgnored:!1}).map(te)))}function sl(e){return iD.get(e,()=>he([...Gt(e)].sort().join(`
102
+ `)))}import{readdirSync as BD}from"fs";import{execFileSync as $D}from"child_process";import{extname as ss,join as HD}from"path";var UD=[".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"],FX=[".vue"],rp=[".tsx",".jsx"],ip=[".vue"],WD=[...rp,...ip],GD=new Set(rp),zD=new Set(ip),op=new Set(UD.map(e=>e.toLowerCase())),VD=[...op].sort().join(","),sp=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):op,s=i?[...o].sort().join(","):VD,a=`${n?"1":"0"}|${r?"1":"0"}|${s}`;return qD.get(e,a,()=>{let c=new Set;if(n)for(let l of N(e,{includeIgnored:!1}))o.has(ss(l).toLowerCase())&&c.add(l);if(r)for(let l of KD(e.config.projectRoot,o))e.isIgnored(l)||n&&c.has(l)||c.add(l);return[...c].sort()})}function as(e,t={}){let n=!1,r=!1;for(let i of $e(e,{extensions:WD})){if(t.scope&&!i.includes(t.scope))continue;let o=ss(i).toLowerCase();if(n||=GD.has(o),r||=zD.has(o),n&&r)break}return{react:n,vue:r}}var qD=j("source-files",{clearGroups:[]});function KD(e,t){return JD(e,t)??XD(e,t)}function JD(e,t){try{let n=$D("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&&(YD(o)||t.has(ss(o).toLowerCase())&&r.add(o))}return r}catch{return null}}function YD(e){return e.split("/").some(t=>sp.has(t))}function XD(e,t){let n=new Set,r=i=>{let o=i?HD(e,i):e,s;try{s=BD(o,{withFileTypes:!0})}catch{return}for(let a of s)if(!sp.has(a.name)){if(a.isDirectory()){r(i?`${i}/${a.name}`:a.name);continue}t.has(ss(a.name).toLowerCase())&&n.add(i?`${i}/${a.name}`:a.name)}};return r(""),n}var QD=new Set(["ref","shallowRef","reactive","computed","watch","watchEffect"]),ZD=new Set(["onBeforeMount","onMounted","onBeforeUpdate","onUpdated","onBeforeUnmount","onUnmounted","onActivated","onDeactivated","onErrorCaptured"]),eE=new Set(["axios","fetch","runRequest","useAsyncData","useFetch","useResource"]),tE=new Set(["defineEmits","defineExpose","defineModel","defineOptions","defineProps","withDefaults"]),nE=new Set(["catch","for","function","if","return","switch","while"]);function ls(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+=An(n),n.external&&(t.externalLineCount+=An(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(...sE(n));let r=ui(n.astLanguage,n.body);r?iE(n,r.rootNode,t):oE(n,t)}return rE(t),t.externalScriptPaths=cp(t.externalScriptPaths),t}function rE(e){e.composables=wr(e,"composable"),e.stores=wr(e,"store"),e.reactivity=wr(e,"reactivity"),e.lifecycle=wr(e,"lifecycle"),e.requests=wr(e,"request"),e.macros=wr(e,"macro")}function wr(e,t){return cp(e.calls.filter(n=>n.categories.includes(t)).map(n=>n.name))}function iE(e,t,n){let r=new Set,i=new Set,o=s=>{let a=Vo(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=Sr(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:ap(c.calleeLeaf),setup:e.setup}))}for(let l of s.children)o(l)};o(t)}function oE(e,t){for(let n of e.body.matchAll(/\b([A-Za-z_$][\w$]*)\s*\(/g)){let r=n[1];!r||nE.has(r)||t.calls.push({name:r,sourcePath:e.sourcePath,line:e.startLine+cs(e.body,n.index??0),categories:ap(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+cs(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+cs(e.body,n.index??0);t.functions.push({name:r,sourcePath:e.sourcePath,startLine:i,endLine:i,setup:e.setup})}}function sE(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+cs(e.body,n.index??0);for(let s of aE(r))t.push({local:s,source:i,sourcePath:e.sourcePath,line:o,setup:e.setup})}return t}function aE(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 ap(e){let t=["call"];return/^use[A-Z0-9_]/.test(e)&&t.push("composable"),/^use[A-Z0-9_].*Store$/.test(e)&&t.push("store"),QD.has(e)&&t.push("reactivity"),ZD.has(e)&&t.push("lifecycle"),eE.has(e)&&t.push("request"),tE.has(e)&&t.push("macro"),t}function cs(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 cp(e){return[...new Set(e)].sort()}var cE=new Set(["in","key","of"]),lE=new Set(["computed","defineEmits","defineProps","reactive","ref","watch","watchEffect"]),uE=dn("vue-component-behavior-profiles");function lp(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=>al(e,i)).filter(i=>(t.minTemplateTokens===void 0||i.templateTokens.size>=t.minTemplateTokens)&&(t.minBehaviorTokens===void 0||i.behaviorTokens.size>=t.minBehaviorTokens))}function al(e,t){let n=t.replace(/\\/g,"/"),r=P(e,n),i=uE.get(e,n,r,()=>dE(e,n,r));return fE(i)}function dE(e,t,n){let r=br(e,t),i=Xo(e,t),o=ls(r),s=hE(i),a=i.expressionIdentifiers.map(y=>y.name).filter(y=>!s.includes(y)).filter((y,h,C)=>C.indexOf(y)===h).sort(),c=i.componentTags.map(y=>y.normalized).filter((y,h,C)=>C.indexOf(y)===h).sort(),l=n?n.split(`
104
+ `).length:0,u=An(r.template),d=o.lineCount,m=r.styles.reduce((y,h)=>y+An(h),0),f=r.customBlocks.reduce((y,h)=>y+An(h),0),{lines:p,paths:g}=mE(e,t,o);return{file:t,sfc:r,templateFacts:i,scriptFacts:o,templateTokens:new Set(i.structuralTokens),behaviorTokens:gE(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 mE(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=P(e,a);return s+(c?c.split(`
105
+ `).length:0)},0),paths:i}}function fE(e){let t=pE(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 pE(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 gE(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(lE.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 hE(e){let t=new Set;for(let n of e.directives)if(n.name==="for"&&n.value)for(let r of yE(n.value))t.add(r);for(let n of e.slots)if(n.value)for(let r of up(n.value))t.add(r);return[...t].sort()}function yE(e){let t=/^(.*?)\s+(?:in|of)\s+/.exec(e.trim());return t?up(t[1]??""):[]}function up(e){let t=[];for(let n of e.matchAll(/\b[A-Za-z_$][\w$]*\b/g)){let r=n[0];cE.has(r)||t.push(r)}return t}import{extname as bE}from"path";function It(e){return typeof e=="object"&&e!==null}function Me(e){return Array.isArray(e)&&e.every(t=>typeof t=="string")?e:null}var SE=[".tsx",".jsx"],dp=new Set(["useActionState","useCallback","useContext","useDebugValue","useDeferredValue","useEffect","useId","useImperativeHandle","useInsertionEffect","useLayoutEffect","useMemo","useOptimistic","useReducer","useRef","useState","useSyncExternalStore","useTransition"]),CE=new Set(["useEffect","useInsertionEffect","useLayoutEffect"]),xE=new Set(["useActionState","useOptimistic","useReducer","useRef","useState"]),RE=new Set(["useLocation","useNavigate","useParams","useSearchParams","useTranslation"]),vE=new Set(["axios","fetch","gql","graphql","mutate","query","request","useMutation","useQuery","useSuspenseQuery"]),IE=new Set(["add","apply","cancel","change","clear","close","create","delete","fetch","filter","handle","load","open","refresh","remove","render","reset","save","select","submit","toggle","update"]),wE=new Set(["aria-hidden","className","clipRule","d","fill","fillRule","height","role","stroke","strokeLinecap","strokeLinejoin","strokeWidth","style","viewBox","width","xmlns"]),DE=dn("react-component-behavior-profiles"),mp=oe({kind:"react-component-behavior-profiles",invalidation:K("react-component-behavior-profiles"),serialize:TE,deserialize:_E});function hp(e,t={}){let n=$e(e,{extensions:SE}).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=>ll(e,i)).filter(i=>(t.minJsxTokens===void 0||i.jsxTokens.size>=t.minJsxTokens)&&(t.minBehaviorTokens===void 0||i.behaviorTokens.size>=t.minBehaviorTokens))}function ll(e,t){let n=t.replace(/\\/g,"/"),r=P(e,n);return DE.get(e,n,r,()=>EE(e,n,r)).map(PE)}function EE(e,t,n){let r=ce(e,t,n),i=mp.read(e,t,r);if(i)return i;let o=kE(e,t);return mp.write(e,t,r,o),o}function kE(e,t){let n=LE(t);if(!n)return[];let r=q(e,t);if(!r)return[];let i=Ce(e,t).length;return NE(r.rootNode,n).filter(s=>s.kind==="hook"||ul(s.bodyNode)).map(s=>{let a=HE(s.bodyNode),c=VE(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:zt(a.componentNames),nativeTags:zt(a.nativeTags),propNames:zt(a.propNames),eventNames:zt(a.eventNames),hookNames:zt(c.hookNames),requestNames:zt(c.requestNames),stateNames:zt(c.stateNames),effectNames:zt(c.effectNames),handlerNames:zt(c.handlerNames)}})}function PE(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 TE(e){return JSON.stringify(e.map(t=>({...t,jsxTokens:[...t.jsxTokens],behaviorTokens:[...t.behaviorTokens]})))}function _E(e){try{let t=JSON.parse(e);if(!Array.isArray(t))return null;let n=[];for(let r of t){let i=FE(r);if(!i)return null;n.push(i)}return n}catch{return null}}function FE(e){if(!It(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:C}=e;if(typeof t!="string"||typeof n!="string"||r!=="component"&&r!=="hook"||!us(i)||!us(o)||!us(s)||!us(a))return null;let x={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(C)};return Object.values(x).some(S=>S===null)?null:{file:t,name:n,kind:r,startLine:i,endLine:o,loc:s,fileLines:a,jsxTokens:new Set(x.jsxTokens),behaviorTokens:new Set(x.behaviorTokens),componentNames:x.componentNames,nativeTags:x.nativeTags,propNames:x.propNames,eventNames:x.eventNames,hookNames:x.hookNames,requestNames:x.requestNames,stateNames:x.stateNames,effectNames:x.effectNames,handlerNames:x.handlerNames}}function us(e){return typeof e=="number"&&Number.isFinite(e)}function LE(e){let t=bE(e).toLowerCase();return t!==".tsx"&&t!==".jsx"?null:M(e)}function NE(e,t){let n=[],r=new Set,i=o=>{let s=AE(o);if(s&&(!BE(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 AE(e){if(e.type==="class_declaration"){let o=cl(e);if(!o||!/^[A-Z]/.test(o))return null;let s=ME(e);return!s||!OE(e)&&!ul(s)?null:{name:o,kind:"component",node:e,bodyNode:s}}if(e.type==="function_declaration"){let o=cl(e);return!o||!fp(o)?null:{name:o,kind:pp(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=yi(t);if(!r||!n||!fp(r))return null;let i=jE(n);return i?{name:r,kind:pp(r),node:e,bodyNode:i}:null}function ME(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 OE(e){return/\b(?:React\.)?(?:Pure)?Component\b/.test(e.text)}function fp(e){return/^[A-Z]/.test(e)||/^use[A-Z0-9_]/.test(e)}function pp(e){return/^use[A-Z0-9_]/.test(e)?"hook":"component"}function jE(e){if(e.type==="arrow_function"||e.type==="function_expression")return e;if(e.type!=="call_expression")return null;let t=$E(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 BE(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 cl(e){return yi(e.childForFieldName("name")??e.namedChild(0))}function $E(e){let t=e.childForFieldName("function")??e.namedChild(0);return t?t.text.split(".").pop()??t.text:null}function ul(e){return e.type.startsWith("jsx_")?!0:e.namedChildren.some(ul)}function HE(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"?UE(r,t):r.type==="jsx_element"&&r.text.trimStart().startsWith("<>")?t.tokens.add("jsx:fragment"):r.type==="jsx_expression"?WE(r,t):r.type==="jsx_fragment"&&t.tokens.add("jsx:fragment");for(let i of r.children)n(i)};return n(e),t}function UE(e,t){let n=GE(e),r=!1;if(n){let i=gp(n),o=i==="Fragment"||i==="React.Fragment";r=XE(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=zE(i);if(!o)continue;let s=gp(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 wE.has(s)||(t.propNames.add(s),t.tokens.add(`${r?"prop":"native-prop"}:${s}`))}else i.type==="jsx_spread_attribute"&&t.tokens.add(yp(i))}function WE(e,t){let n=e.text;/^\{\s*\.\.\./.test(n)&&t.tokens.add(yp(e)),bp(e)&&t.tokens.add("jsx:conditional"),(n.includes(".map(")||n.includes(".flatMap("))&&t.tokens.add("jsx:list");for(let r of QE(n))Jo(r)||t.tokens.add(`binding:${r}`)}function yp(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 bp(e){return e.type==="ternary_expression"||e.type==="conditional_expression"?!0:e.namedChildren.some(bp)}function GE(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 zE(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 VE(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=Sr(i,t);o&&qE(o.calleeLeaf,n)}else if(i.type==="variable_declarator")JE(i,n);else if(i.type==="function_declaration"){let o=cl(i);o&&Sp(o,n)}for(let o of i.namedChildren)r(o)};return r(e),n}function qE(e,t){/^use[A-Z0-9_]/.test(e)&&(t.hookNames.add(e),!dp.has(e)&&!RE.has(e)&&t.tokens.add(`hook:${e}`)),dp.has(e)&&t.tokens.add(`react-hook:${e}`),CE.has(e)&&(t.effectNames.add(e),t.tokens.add(`effect:${e}`)),xE.has(e)&&t.tokens.add(`state-hook:${e}`),KE(e)&&(t.requestNames.add(e),t.tokens.add(`request:${e}`))}function KE(e){if(vE.has(e))return!0;let t=/^use([A-Z0-9_].*)$/.exec(e)?.[1];return t?/(Query|Mutation|Fetch|Resource)$/.test(t):!1}function JE(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=>yi(a)),s=yi(o);s&&(t.stateNames.add(s),t.tokens.add(`state:${s}`))}let i=yi(n);i&&Sp(i,t)}function Sp(e,t){let n=YE(e);!n||!IE.has(n)||(t.handlerNames.add(e),t.tokens.add(`handler:${e}`),t.tokens.add(`handler-verb:${n}`))}function YE(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 XE(e){return/^[A-Z]/.test(e)||e.includes(".")}function gp(e){return e.replace(/^this\./,"").replace(/\$/g,".")}function yi(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 QE(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 zt(e){return[...e].sort()}function nt(e){return{capability:(t,n)=>ZE(t,n),reactProfiles:(t={})=>hp(e,t),reactProfilesForFile:t=>ll(e,t),vueProfiles:(t={})=>lp(e,t),vueProfileForFile:t=>al(e,t),vueTemplateFacts:t=>Xo(e,t),vueScriptFacts:t=>ls(br(e,t))}}function ZE(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 Un(e,t,n={}){let r=G(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 Rp}from"path";function $(e){return e.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}function rt(e){return e.replace(/'''[\s\S]*?'''/g,yn).replace(/"""[\s\S]*?"""/g,yn).replace(/#.*$/gm,yn).replace(/\/\/.*$/gm,yn).replace(/\/\*[\s\S]*?\*\//g,yn).replace(/`(?:\\[\s\S]|[^`])*`/g,yn).replace(/'(?:\\.|[^'\\\r\n])*'/g,yn).replace(/"(?:\\.|[^"\\\r\n])*"/g,yn)}function Si(e){return xp(e,{maskStrings:!1})}function Cp(e){return xp(e,{maskStrings:!0})}function xp(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+=dl(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+=dl(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?dl(e,r,a):e.slice(r,a),r=a;continue}n+=o,r+=1}return n}function dl(e,t,n){let r="";for(let i=t;i<n;i+=1)r+=e[i]===`
108
108
  `?`
109
- `:" ";return r}function yn(e){return e.replace(/[^\r\n]/g," ")}var wQ=Nn("stripped-lines",{clearGroups:["whole-project","source-file"]});un({name:"stripped-source-singleton",groups:["whole-project","source-file"],clearAll:()=>{us=null,bi=""},clearFile:()=>{us=null,bi=""}});var us=null,bi="";function ZE(e){return us===e||(us=e,bi=rt(e)),bi}function bn(e,t,n){let r=ZE(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 Dr(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 Ci(e){let t=0;for(let n of e)n==="("&&(t+=1),n===")"&&(t-=1);return t}var ek=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&&ek.has(i.type)&&n.add(i.text);for(let a of i.children)r(a,s)};return r(e.rootNode,!1),n}function ht(e,t,n,r,i,o,s){return{importedName:i,localName:o,sourcePath:s??be(e,r,tl(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 Vt(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 Wn(e,t){return{importedName:e,localName:null,sourcePath:t,kind:"side-effect",used:!0,usedMembers:[]}}function Gn(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 it(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=bn(e,i.index,i.index+o.length);for(let a of n(i,s))r.push(a)}return r}function ot(e,t,n,r){let i=q(e,t);if(i){let o=n(i);if(o)return o}return r()}function ds(e,t,n,r){let i=q(e,t),o=M(t),s=o?n[o]:void 0;return i&&s?s(i):r()}function Rp(e,t,n){return ot(e,t,r=>nk(e,t,r),()=>tk(e,t,n))}function tk(e,t,n){return it(n,/^[ \t]*#include\s+[<"]([^">]+)[">]\s*$/gm,(r,i)=>{let o=r[1]?.trim();if(!o)return[];let s=xp(o).replace(/\.[^.]+$/,"");return[Vt(o,s,rs(e,t,o),He(i,s))]})}function nk(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=xp(s).replace(/\.[^.]+$/,"");i.push(pe(s,a,rs(e,t,s),r))}return i}var rk=new Set([":require",":require-macros",":use"]),fl=String.raw`A-Za-z0-9_$*+!?.<>=-`;function Ip(e,t,n){let r=pk(n);if(!r)return[];let i=fk(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=st(s.children[0]);if(a){if(rk.has(a)){for(let c of sk(s.children.slice(1)))o.push(...ok(e,c,i));continue}if(a===":import")for(let c of ck(s.children.slice(1)))o.push(c)}}return o}function ik(e){return e.type==="list"&&st(e.children[0])==="ns"}function ok(e,t,n){let r=nl(e,t.namespace),i=t.alias??t.namespace,o=uk(n,i),s=[{importedName:t.namespace,localName:i,sourcePath:r,kind:"namespace",used:t.refers.length>0||t.referAll||o.length>0||dk(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:mk(n,a),usedMembers:[]});return s}function sk(e){return e.flatMap(t=>ms(t,null))}function ms(e,t){if(e.type==="atom")return e.text.startsWith(":")?[]:[{namespace:ml(t,e.text),alias:null,refers:[],referAll:!1}];if(e.type==="vector")return e.children.length>0&&st(e.children[0])===null?e.children.flatMap(n=>ms(n,t)):ak(e,t);if(e.type==="list"&&e.children.length>0){let n=st(e.children[0]);return n?!n||n.startsWith(":")?[]:e.children.slice(1).flatMap(r=>ms(r,ml(t,n))):e.children.flatMap(r=>ms(r,t))}return[]}function ak(e,t){let n=st(e.children[0]);if(!n||n.startsWith(":"))return[];let r={namespace:ml(t,n),alias:null,refers:[],referAll:!1};for(let i=1;i<e.children.length;i+=1){let o=st(e.children[i]);if(!o?.startsWith(":"))continue;let s=e.children[i+1];if((o===":as"||o===":as-alias")&&s){r.alias=st(s),i+=1;continue}o===":refer"&&s&&(st(s)===":all"?r.referAll=!0:(s.type==="vector"||s.type==="list")&&r.refers.push(...s.children.map(st).filter(lk)),i+=1)}return[r]}function ck(e){let t=[];for(let n of e){if(n.type==="atom"){let i=n.text.split(".").pop()??n.text;t.push(Vt(i,i,null,!0));continue}if(n.type!=="vector")continue;let r=st(n.children[0]);if(r)for(let i of n.children.slice(1)){let o=st(i);o&&t.push(Vt(`${r}.${o}`,o,null,!0))}}return t}function ml(e,t){return e?`${e}.${t}`:t}function st(e){return e?.type==="atom"?e.text:null}function lk(e){return!!(e&&!e.startsWith(":"))}function uk(e,t){let n=new Set,r=new RegExp(`${pl()}${$(t)}\\s*/\\s*([${fl}]+)`,"g");for(let i of e.matchAll(r)){let o=i[1];o&&n.add(o)}return[...n]}function dk(e,t){return new RegExp(`${pl()}${$(t)}\\s*/`,"m").test(e)}function mk(e,t){return new RegExp(`${pl()}${$(t)}(?![${fl}])`,"m").test(e)}function pl(){return`(?<![${fl}])`}function fk(e,t,n){let r="",i=0;for(;i<e.length;){if(i>=t&&i<n){r+=e[i]===`
109
+ `:" ";return r}function yn(e){return e.replace(/[^\r\n]/g," ")}var DQ=Nn("stripped-lines",{clearGroups:["whole-project","source-file"]});un({name:"stripped-source-singleton",groups:["whole-project","source-file"],clearAll:()=>{ds=null,bi=""},clearFile:()=>{ds=null,bi=""}});var ds=null,bi="";function ek(e){return ds===e||(ds=e,bi=rt(e)),bi}function bn(e,t,n){let r=ek(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 Dr(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 Ci(e){let t=0;for(let n of e)n==="("&&(t+=1),n===")"&&(t-=1);return t}var tk=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&&tk.has(i.type)&&n.add(i.text);for(let a of i.children)r(a,s)};return r(e.rootNode,!1),n}function ht(e,t,n,r,i,o,s){return{importedName:i,localName:o,sourcePath:s??be(e,r,nl(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 Vt(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 Wn(e,t){return{importedName:e,localName:null,sourcePath:t,kind:"side-effect",used:!0,usedMembers:[]}}function Gn(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 it(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=bn(e,i.index,i.index+o.length);for(let a of n(i,s))r.push(a)}return r}function ot(e,t,n,r){let i=q(e,t);if(i){let o=n(i);if(o)return o}return r()}function ms(e,t,n,r){let i=q(e,t),o=M(t),s=o?n[o]:void 0;return i&&s?s(i):r()}function vp(e,t,n){return ot(e,t,r=>rk(e,t,r),()=>nk(e,t,n))}function nk(e,t,n){return it(n,/^[ \t]*#include\s+[<"]([^">]+)[">]\s*$/gm,(r,i)=>{let o=r[1]?.trim();if(!o)return[];let s=Rp(o).replace(/\.[^.]+$/,"");return[Vt(o,s,is(e,t,o),He(i,s))]})}function rk(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=Rp(s).replace(/\.[^.]+$/,"");i.push(pe(s,a,is(e,t,s),r))}return i}var ik=new Set([":require",":require-macros",":use"]),pl=String.raw`A-Za-z0-9_$*+!?.<>=-`;function wp(e,t,n){let r=gk(n);if(!r)return[];let i=pk(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=st(s.children[0]);if(a){if(ik.has(a)){for(let c of ak(s.children.slice(1)))o.push(...sk(e,c,i));continue}if(a===":import")for(let c of lk(s.children.slice(1)))o.push(c)}}return o}function ok(e){return e.type==="list"&&st(e.children[0])==="ns"}function sk(e,t,n){let r=rl(e,t.namespace),i=t.alias??t.namespace,o=dk(n,i),s=[{importedName:t.namespace,localName:i,sourcePath:r,kind:"namespace",used:t.refers.length>0||t.referAll||o.length>0||mk(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:fk(n,a),usedMembers:[]});return s}function ak(e){return e.flatMap(t=>fs(t,null))}function fs(e,t){if(e.type==="atom")return e.text.startsWith(":")?[]:[{namespace:fl(t,e.text),alias:null,refers:[],referAll:!1}];if(e.type==="vector")return e.children.length>0&&st(e.children[0])===null?e.children.flatMap(n=>fs(n,t)):ck(e,t);if(e.type==="list"&&e.children.length>0){let n=st(e.children[0]);return n?!n||n.startsWith(":")?[]:e.children.slice(1).flatMap(r=>fs(r,fl(t,n))):e.children.flatMap(r=>fs(r,t))}return[]}function ck(e,t){let n=st(e.children[0]);if(!n||n.startsWith(":"))return[];let r={namespace:fl(t,n),alias:null,refers:[],referAll:!1};for(let i=1;i<e.children.length;i+=1){let o=st(e.children[i]);if(!o?.startsWith(":"))continue;let s=e.children[i+1];if((o===":as"||o===":as-alias")&&s){r.alias=st(s),i+=1;continue}o===":refer"&&s&&(st(s)===":all"?r.referAll=!0:(s.type==="vector"||s.type==="list")&&r.refers.push(...s.children.map(st).filter(uk)),i+=1)}return[r]}function lk(e){let t=[];for(let n of e){if(n.type==="atom"){let i=n.text.split(".").pop()??n.text;t.push(Vt(i,i,null,!0));continue}if(n.type!=="vector")continue;let r=st(n.children[0]);if(r)for(let i of n.children.slice(1)){let o=st(i);o&&t.push(Vt(`${r}.${o}`,o,null,!0))}}return t}function fl(e,t){return e?`${e}.${t}`:t}function st(e){return e?.type==="atom"?e.text:null}function uk(e){return!!(e&&!e.startsWith(":"))}function dk(e,t){let n=new Set,r=new RegExp(`${gl()}${$(t)}\\s*/\\s*([${pl}]+)`,"g");for(let i of e.matchAll(r)){let o=i[1];o&&n.add(o)}return[...n]}function mk(e,t){return new RegExp(`${gl()}${$(t)}\\s*/`,"m").test(e)}function fk(e,t){return new RegExp(`${gl()}${$(t)}(?![${pl}])`,"m").test(e)}function gl(){return`(?<![${pl}])`}function pk(e,t,n){let r="",i=0;for(;i<e.length;){if(i>=t&&i<n){r+=e[i]===`
110
110
  `?`
111
- `:" ",i+=1;continue}let o=e[i];if(o===";"){let s=qo(e,i);r+=vp(e.slice(i,s)),i=s;continue}if(o==='"'){let s=pi(e,i,0).index;r+=vp(e.slice(i,s)),i=s;continue}r+=o,i+=1}return r}function pk(e){let t=0;for(;t<e.length&&(t=gl(e,t),!(t>=e.length));){let n=fs(e,t);if(!n){t+=1;continue}if(ik(n.form))return n.form;t=n.index}return null}function fs(e,t){let n=gl(e,t);if(e.startsWith("#?@",n)||e.startsWith("#?",n))return gk(e,n);if(e.startsWith("#_",n)){let i=fs(e,n+2);return i?{form:{type:"atom",text:"",start:n,end:i.index},index:i.index}:null}for(;jc(e[n]);)n+=1;let r=e[n];return r?r==="("?dl(e,n,"list",")"):r==="["?dl(e,n,"vector","]"):r==="{"?dl(e,n,"map","}"):r==='"'?{form:{type:"atom",text:"",start:n,end:pi(e,n,0).index},index:pi(e,n,0).index}:yk(e,n):null}function gk(e,t){let n=e.startsWith("#?@",t)?3:2,r=fs(e,t+n);return r?{form:{type:"list",children:r.form.type==="list"||r.form.type==="vector"||r.form.type==="map"?hk(r.form.children):[],start:t,end:r.index},index:r.index}:null}function hk(e){let t=[];for(let n=0;n<e.length;n+=2){let r=st(e[n]),i=e[n+1];r?.startsWith(":")&&i&&t.push(i)}return t}function dl(e,t,n,r){let i=[],o=t+1;for(;o<e.length;){if(o=gl(e,o),e[o]===r)return{form:{type:n,children:i,start:t,end:o+1},index:o+1};let s=fs(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 yk(e,t){let n=t;for(;n<e.length&&!Bc(e[n]);)n+=1;return{form:{type:"atom",text:e.slice(t,n),start:t,end:n},index:n}}function gl(e,t){let n=t;for(;n<e.length;){let r=e[n];if(/\s|,/.test(r)){n+=1;continue}if(r===";"){n=qo(e,n);continue}break}return n}function vp(e){return e.replace(/[^\r\n]/g," ")}function wp(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=bn(n,i.index,i.index+a.length);r.push({importedName:o,localName:s,sourcePath:is(e,t,o),kind:s?"namespace":"side-effect",used:s?He(c,s):!0,usedMembers:s?Dr(c,s):[]})}return r}function Dp(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:is(e,t,o)})}return r}function Ep(e,t,n){return ds(e,t,{csharp:r=>Sk(e,t,r),vb:r=>bk(e,t,r)},()=>{let r=ep(t)?/^[ \t]*Imports\s+(.+?)\s*$/gm:/^[ \t]*using\s+(.+?)\s*;$/gm;return it(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[ht(e,t,o,u,d,m,be(e,u,hn))]})})}function bk(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,hn),r,c?"namespace":"named"))}return i}function Sk(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,hn),r,a?"namespace":"named"))}return i}var Ck=j("vue-non-script-identifiers",{clearGroups:["whole-project","source-file"]});function kp(e,t){return Ck.get(e,t,()=>{let n=new Set,r=P(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 hl(e,t,n){return ot(e,t,r=>Rk(e,t,r),()=>xk(e,t,n))}function xk(e,t,n){return Lk(n).flatMap(r=>Nk(e,t,r.clause,r.specifier,r.start,r.end,n))}function Rk(e,t,n){let r=vk(e,t,n),i=[];for(let o of n.rootNode.descendantsOfType("import_statement"))i.push(...Ik(e,t,n,o,r));return i}function vk(e,t,n){let r=Se(n,new Set(["import_statement"]));if($t(t))for(let i of kp(e,t))r.add(i);return r}function Ik(e,t,n,r,i){let o=Pk(r);if(!o)return[];let s=Je(e,t,o),a=Ye(r,"import_clause");return a?wk(n,a,s,i,Tk(r.text)):[Wn("*",s)]}function wk(e,t,n,r,i){let o=[];for(let s of t.namedChildren)if(s.type==="identifier")o.push(Dk(s.text,n,r,i));else if(s.type==="namespace_import"){let a=Ek(e,s,n,r,i);a&&o.push(a)}else s.type==="named_imports"&&o.push(...kk(s,n,r,i));return o}function Dk(e,t,n,r){return pe("default",e,t,n,"default",{isTypeOnly:r})}function Ek(e,t,n,r,i){let s=Ye(t,"identifier")?.text??"";if(!s)return null;let a=Fk(e,s);return Gn("*",n,{localName:s,usedMembers:a,isTypeOnly:i,used:a.length>0||r.has(s)})}function kk(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||_k(o.text)}))}return i}function Pk(e){let t=Ye(e,"string");if(!t)return null;let n=Ye(t,"string_fragment");return n?n.text:null}function Tk(e){return/^\s*import\s+type\b/.test(e)}function _k(e){return/^\s*type\b/.test(e.trim())}function Fk(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 Lk(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 Nk(e,t,n,r,i,o,s){let a=Je(e,t,r),c=bn(s,i,o);return n?Ak(n).map(u=>({...u,sourcePath:a})).map(u=>{if(u.kind==="namespace"){let d=Dr(c,u.localName);return Gn(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"?Wn(u.importedName,u.sourcePath):Vt(u.importedName,u.localName??"",u.sourcePath,u.localName?He(c,u.localName):!1,u.kind,[],{isTypeOnly:u.isTypeOnly})}):[Wn("*",a)]}function Ak(e){let t=e.trim(),n=/^type\b/.test(t),r=t.replace(/^type\s+/,""),[i,o]=Mk(r),s=[];return i&&s.push(...Pp(i,n)),o&&s.push(...Pp(o,n)),s}function Pp(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 Mk(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 yl(e,t,n){let r=q(e,t);return r?Uk(e,t,r):Ok(e,t,n)}function Ok(e,t,n){return[...jk(e,t,n),...Bk(e,t,n),...$k(e,t,n)]}function jk(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=>Hk(d.trim())).filter(d=>!!d),l=Er(n,o.index),u=Er(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 Bk(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=Er(n,o.index),c=Er(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 $k(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=Er(n,o.index),c=Er(n,o.index+o[0].length-1);r.push({kind:"star",sourcePath:Je(e,t,s),names:[],startLine:a,endLine:c})}return r}function Hk(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 Er(e,t){let n=0;for(let r=0;r<t&&r<e.length;r++)e.charCodeAt(r)===10&&n++;return n}function Uk(e,t,n){let r=[];for(let i of n.rootNode.descendantsOfType("export_statement")){let o=Wk(e,t,i);if(o===void 0)continue;let s=i.startPosition.row,a=i.endPosition.row,c=Gk(i,o,s,a);r.push(c)}return r}function Wk(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 Gk(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 Tp(e,t,n){return ds(e,t,{java:r=>zk(e,t,r),kotlin:r=>Vk(e,t,r),scala:r=>qk(e,t,r)},()=>it(n,/^[ \t]*import\s+(?:static\s+)?(.+?)\s*;?$/gm,(r,i)=>{let o=r[1]?.trim();return o?Kk(e,t,o,i):[]}))}function zk(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(Gn("*",be(e,l,Ke)));continue}let u=l.split(".").pop()??l;i.push(pe(u,u,be(e,l,Ke),r))}return i}function Vk(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(Gn("*",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 qk(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(Gn("*",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 Kk(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[ht(e,t,r,m,u,d)]})}return[ht(e,t,r,n,n.split(".").pop()??n,n.split(".").pop()??n)]}function Fp(e,t,n){return ot(e,t,r=>Jk(e,t,r),()=>it(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[ht(e,t,i,u,d,m,be(e,u.replace(/\\/g,"."),Hn))]}):[]}))}function Jk(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,"."),Hn),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}=_p(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}=_p(c,"");l&&o(d,l,u)}}return i}function _p(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 Np(e,t,n){return ot(e,t,r=>Yk(e,t,r),()=>Qk(n).flatMap(r=>eP(e,t,r,n)))}function Yk(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=Lp(s);if(!a)continue;let c=Ir(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=Xk(s);if(a===null)continue;let c=Ir(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=Lp(u);d&&i.push({importedName:d.qualifiedName,localName:d.localName,sourcePath:c,kind:"named",used:r.has(d.localName),usedMembers:[]})}}return i}function Lp(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 Xk(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 Qk(e){let t=e.split(`
111
+ `:" ",i+=1;continue}let o=e[i];if(o===";"){let s=Ko(e,i);r+=Ip(e.slice(i,s)),i=s;continue}if(o==='"'){let s=pi(e,i,0).index;r+=Ip(e.slice(i,s)),i=s;continue}r+=o,i+=1}return r}function gk(e){let t=0;for(;t<e.length&&(t=hl(e,t),!(t>=e.length));){let n=ps(e,t);if(!n){t+=1;continue}if(ok(n.form))return n.form;t=n.index}return null}function ps(e,t){let n=hl(e,t);if(e.startsWith("#?@",n)||e.startsWith("#?",n))return hk(e,n);if(e.startsWith("#_",n)){let i=ps(e,n+2);return i?{form:{type:"atom",text:"",start:n,end:i.index},index:i.index}:null}for(;Bc(e[n]);)n+=1;let r=e[n];return r?r==="("?ml(e,n,"list",")"):r==="["?ml(e,n,"vector","]"):r==="{"?ml(e,n,"map","}"):r==='"'?{form:{type:"atom",text:"",start:n,end:pi(e,n,0).index},index:pi(e,n,0).index}:bk(e,n):null}function hk(e,t){let n=e.startsWith("#?@",t)?3:2,r=ps(e,t+n);return r?{form:{type:"list",children:r.form.type==="list"||r.form.type==="vector"||r.form.type==="map"?yk(r.form.children):[],start:t,end:r.index},index:r.index}:null}function yk(e){let t=[];for(let n=0;n<e.length;n+=2){let r=st(e[n]),i=e[n+1];r?.startsWith(":")&&i&&t.push(i)}return t}function ml(e,t,n,r){let i=[],o=t+1;for(;o<e.length;){if(o=hl(e,o),e[o]===r)return{form:{type:n,children:i,start:t,end:o+1},index:o+1};let s=ps(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 bk(e,t){let n=t;for(;n<e.length&&!$c(e[n]);)n+=1;return{form:{type:"atom",text:e.slice(t,n),start:t,end:n},index:n}}function hl(e,t){let n=t;for(;n<e.length;){let r=e[n];if(/\s|,/.test(r)){n+=1;continue}if(r===";"){n=Ko(e,n);continue}break}return n}function Ip(e){return e.replace(/[^\r\n]/g," ")}function Dp(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=bn(n,i.index,i.index+a.length);r.push({importedName:o,localName:s,sourcePath:os(e,t,o),kind:s?"namespace":"side-effect",used:s?He(c,s):!0,usedMembers:s?Dr(c,s):[]})}return r}function Ep(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:os(e,t,o)})}return r}function kp(e,t,n){return ms(e,t,{csharp:r=>Ck(e,t,r),vb:r=>Sk(e,t,r)},()=>{let r=tp(t)?/^[ \t]*Imports\s+(.+?)\s*$/gm:/^[ \t]*using\s+(.+?)\s*;$/gm;return it(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[ht(e,t,o,u,d,m,be(e,u,hn))]})})}function Sk(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,hn),r,c?"namespace":"named"))}return i}function Ck(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,hn),r,a?"namespace":"named"))}return i}var xk=j("vue-non-script-identifiers",{clearGroups:["whole-project","source-file"]});function Pp(e,t){return xk.get(e,t,()=>{let n=new Set,r=P(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 yl(e,t,n){return ot(e,t,r=>vk(e,t,r),()=>Rk(e,t,n))}function Rk(e,t,n){return Nk(n).flatMap(r=>Ak(e,t,r.clause,r.specifier,r.start,r.end,n))}function vk(e,t,n){let r=Ik(e,t,n),i=[];for(let o of n.rootNode.descendantsOfType("import_statement"))i.push(...wk(e,t,n,o,r));return i}function Ik(e,t,n){let r=Se(n,new Set(["import_statement"]));if($t(t))for(let i of Pp(e,t))r.add(i);return r}function wk(e,t,n,r,i){let o=Tk(r);if(!o)return[];let s=Je(e,t,o),a=Ye(r,"import_clause");return a?Dk(n,a,s,i,_k(r.text)):[Wn("*",s)]}function Dk(e,t,n,r,i){let o=[];for(let s of t.namedChildren)if(s.type==="identifier")o.push(Ek(s.text,n,r,i));else if(s.type==="namespace_import"){let a=kk(e,s,n,r,i);a&&o.push(a)}else s.type==="named_imports"&&o.push(...Pk(s,n,r,i));return o}function Ek(e,t,n,r){return pe("default",e,t,n,"default",{isTypeOnly:r})}function kk(e,t,n,r,i){let s=Ye(t,"identifier")?.text??"";if(!s)return null;let a=Lk(e,s);return Gn("*",n,{localName:s,usedMembers:a,isTypeOnly:i,used:a.length>0||r.has(s)})}function Pk(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||Fk(o.text)}))}return i}function Tk(e){let t=Ye(e,"string");if(!t)return null;let n=Ye(t,"string_fragment");return n?n.text:null}function _k(e){return/^\s*import\s+type\b/.test(e)}function Fk(e){return/^\s*type\b/.test(e.trim())}function Lk(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 Nk(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 Ak(e,t,n,r,i,o,s){let a=Je(e,t,r),c=bn(s,i,o);return n?Mk(n).map(u=>({...u,sourcePath:a})).map(u=>{if(u.kind==="namespace"){let d=Dr(c,u.localName);return Gn(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"?Wn(u.importedName,u.sourcePath):Vt(u.importedName,u.localName??"",u.sourcePath,u.localName?He(c,u.localName):!1,u.kind,[],{isTypeOnly:u.isTypeOnly})}):[Wn("*",a)]}function Mk(e){let t=e.trim(),n=/^type\b/.test(t),r=t.replace(/^type\s+/,""),[i,o]=Ok(r),s=[];return i&&s.push(...Tp(i,n)),o&&s.push(...Tp(o,n)),s}function Tp(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 Ok(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 bl(e,t,n){let r=q(e,t);return r?Wk(e,t,r):jk(e,t,n)}function jk(e,t,n){return[...Bk(e,t,n),...$k(e,t,n),...Hk(e,t,n)]}function Bk(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=>Uk(d.trim())).filter(d=>!!d),l=Er(n,o.index),u=Er(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 $k(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=Er(n,o.index),c=Er(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 Hk(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=Er(n,o.index),c=Er(n,o.index+o[0].length-1);r.push({kind:"star",sourcePath:Je(e,t,s),names:[],startLine:a,endLine:c})}return r}function Uk(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 Er(e,t){let n=0;for(let r=0;r<t&&r<e.length;r++)e.charCodeAt(r)===10&&n++;return n}function Wk(e,t,n){let r=[];for(let i of n.rootNode.descendantsOfType("export_statement")){let o=Gk(e,t,i);if(o===void 0)continue;let s=i.startPosition.row,a=i.endPosition.row,c=zk(i,o,s,a);r.push(c)}return r}function Gk(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 zk(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 _p(e,t,n){return ms(e,t,{java:r=>Vk(e,t,r),kotlin:r=>qk(e,t,r),scala:r=>Kk(e,t,r)},()=>it(n,/^[ \t]*import\s+(?:static\s+)?(.+?)\s*;?$/gm,(r,i)=>{let o=r[1]?.trim();return o?Jk(e,t,o,i):[]}))}function Vk(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(Gn("*",be(e,l,Ke)));continue}let u=l.split(".").pop()??l;i.push(pe(u,u,be(e,l,Ke),r))}return i}function qk(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(Gn("*",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 Kk(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(Gn("*",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 Jk(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[ht(e,t,r,m,u,d)]})}return[ht(e,t,r,n,n.split(".").pop()??n,n.split(".").pop()??n)]}function Lp(e,t,n){return ot(e,t,r=>Yk(e,t,r),()=>it(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[ht(e,t,i,u,d,m,be(e,u.replace(/\\/g,"."),Hn))]}):[]}))}function Yk(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,"."),Hn),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}=Fp(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}=Fp(c,"");l&&o(d,l,u)}}return i}function Fp(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 Ap(e,t,n){return ot(e,t,r=>Xk(e,t,r),()=>Zk(n).flatMap(r=>tP(e,t,r,n)))}function Xk(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=Np(s);if(!a)continue;let c=Ir(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=Qk(s);if(a===null)continue;let c=Ir(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=Np(u);d&&i.push({importedName:d.qualifiedName,localName:d.localName,sourcePath:c,kind:"named",used:r.has(d.localName),usedMembers:[]})}}return i}function Np(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 Qk(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 Zk(e){let t=e.split(`
112
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=Ci(o);for(;i+1<t.length&&(u>0||c.trimEnd().endsWith("\\"));){i++;let m=t[i];c+=`
113
- ${m}`,l+=1+m.length,u+=Ci(m),r+=m.length+1}let d=Zk(c);d&&n.push({...d,start:a,end:l})}return n}function Zk(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 eP(e,t,n,r){let i=bn(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=Ir(e,t,m),g=Dr(i,f);return[{importedName:m,localName:f,sourcePath:p,kind:"namespace",used:He(i,f)||g.length>0,usedMembers:g}]});let s=n.module?Ir(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 tP}from"path";function Ap(e,t,n){return ot(e,t,r=>rP(e,t,r),()=>nP(e,t,n))}function nP(e,t,n){return it(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"?ns(e,t,s):null;if(a){let c=Mp(s);return[Vt(c,c,a,He(i,c))]}return[Wn(s,a)]})}function rP(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"?ns(e,t,d):null;if(m){let f=Mp(d);i.push(pe(f,f,m,r))}else i.push(Wn(d,m))}return i}function Mp(e){return Jo(tP(e).replace(/\.[^.]+$/,""),/_/)}function Op(e,t,n){return ot(e,t,r=>iP(e,t,r),()=>it(n,/^[ \t]*use\s+(.+?)\s*;$/gm,(r,i)=>{let o=r[1]?.trim();return o?oP(e,t,o,i):[]}))}function iP(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 xi(s,"")){if(!a.importedName||a.importedName==="*")continue;let c=Wt(e,t,a.qualifiedName)??Wt(e,t,a.qualifiedName.split("::").slice(0,-1).join("::"));i.push(pe(a.importedName,a.localName,c,r))}}return i}function xi(e,t){switch(e.type){case"identifier":case"super":case"crate":{let n=e.text;return[{qualifiedName:kr(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:kr(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=kr(t,n.text),o=[];for(let s of r.namedChildren)o.push(...xi(s,i));return o}case"use_list":{let n=[];for(let r of e.namedChildren)n.push(...xi(r,t));return n}case"use_as_clause":{let n=e.namedChild(0),r=e.namedChild(1);if(!n||!r)return[];let i=xi(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:kr(t,`${r}::*`),importedName:"*",localName:"*"}]}default:return[]}}function kr(e,t){return e?t?`${e}::${t}`:e:t}function oP(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 x=u.split("::").filter(Boolean).pop();return x?[ht(e,t,r,u,x,x)]:[]}let[p,g]=f.split(/\s+as\s+/),y=p?.trim();if(!y)return[];let h=(g??y.split("::").pop()??y).trim(),C=`${u}::${y}`.replace(/::::/g,"::");return[ht(e,t,r,C,y.split("::").pop()??y,h,Wt(e,t,u))]})}let[o,s]=i.split(/\s+as\s+/),a=o?.trim()??i,c=(s??a.split("::").pop()??a).trim(),l=Wt(e,t,a)??Wt(e,t,a.split("::").slice(0,-1).join("::"));return[ht(e,t,r,a,a.split("::").pop()??a,c,l)]}function jp(e,t,n){let r=q(e,t);if(r)return sP(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(...cP(e,t,s))}return i}function sP(e,t,n){let r=[];for(let i of n.rootNode.descendantsOfType("use_declaration")){if(!aP(i))continue;let o=i.namedChildren.find(s=>s.type!=="visibility_modifier");if(o)for(let s of xi(o,""))s.importedName&&r.push(bl(e,t,s.qualifiedName))}return r}function aP(e){for(let t of e.children)if(t.type==="visibility_modifier"&&t.text.startsWith("pub"))return!0;return!1}function cP(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[bl(e,t,l)]})}return[bl(e,t,r)]}function bl(e,t,n){return{specifier:n,sourcePath:Wt(e,t,n)??Wt(e,t,n.split("::").slice(0,-1).join("::"))}}function Sn({language:e,extensions:t,imports:n,parseImports:r}){return{language:e,extensions:t,capabilities:{imports:n},parseImports:r}}function Bp(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 lP={language:"javascript",extensions:Bn,capabilities:{imports:"ast-with-regex-fallback",reExports:"ast-with-regex-fallback"},parseImports:hl,parseReExports:yl},uP=Sn({language:"python",extensions:Xo,imports:"ast-with-regex-fallback",parseImports:Np}),dP=Sn({language:"jvm",extensions:Ke,imports:"ast-dispatch-with-regex-fallback",parseImports:Tp}),mP={language:"rust",extensions:Qo,capabilities:{imports:"ast-with-regex-fallback",exports:"ast-with-regex-fallback"},parseImports:Op,parseExports:jp},fP=Sn({language:"ruby",extensions:Zo,imports:"ast-with-regex-fallback",parseImports:Ap}),pP=Sn({language:"c/cpp",extensions:es,imports:"ast-with-regex-fallback",parseImports:Rp}),gP=Sn({language:"dotnet",extensions:hn,imports:"ast-dispatch-with-regex-fallback",parseImports:Ep}),hP={language:"dart",extensions:ts,capabilities:{imports:"regex-only",exports:"regex-only"},parseImports:wp,parseExports:Dp},yP=Sn({language:"php",extensions:Hn,imports:"ast-with-regex-fallback",parseImports:Fp}),bP=Sn({language:"clojure",extensions:vr,imports:"regex-only",parseImports:Ip}),$p=[lP,uP,dP,mP,fP,pP,gP,hP,yP,bP];function ps(e){return Bp($p,e)}function W4(e){return $p.find(n=>n.language===e)?.capabilities??null}var Sl={clearGroups:["whole-project","source-file"]},SP=j("source-imports",Sl),CP=j("source-exports",Sl),xP=j("source-reexports",Sl),Hp=oe({kind:"source-imports",invalidation:K("source-imports"),serialize:RP,deserialize:vP}),Up=oe({kind:"source-reexports",invalidation:K("source-reexports"),serialize:IP,deserialize:wP});function qt(e,t){let n=te(t);return xP.get(e,n,()=>{let r=ps(n);if(!r?.parseReExports)return[];let i=P(e,n);if(!i)return[];let o=ce(e,n,i),s=ol(e),a=Up.read(e,n,o);if(a?.resolutionFingerprint===s)return a.reExports;let c=r.parseReExports(e,n,i);return Up.write(e,n,o,{resolutionFingerprint:s,reExports:c}),c})}function re(e,t){let n=te(t);return SP.get(e,n,()=>{let r=ps(n);if(!r)return[];let i=P(e,n);if(!i)return[];let o=ce(e,n,i),s=ol(e),a=Hp.read(e,n,o);if(a?.resolutionFingerprint===s)return a.imports;let c=r.parseImports(e,n,i);return Hp.write(e,n,o,{resolutionFingerprint:s,imports:c}),c})}function gs(e,t){let n=te(t);return CP.get(e,n,()=>{let r=ps(n);if(!r?.parseExports)return[];let i=P(e,n);return i?r.parseExports(e,n,i):[]})}function RP(e){return JSON.stringify(e)}function vP(e){try{let t=JSON.parse(e);return!It(t)||typeof t.resolutionFingerprint!="string"||!Array.isArray(t.imports)?null:{resolutionFingerprint:t.resolutionFingerprint,imports:t.imports}}catch{return null}}function IP(e){return JSON.stringify(e)}function wP(e){try{let t=JSON.parse(e);return!It(t)||typeof t.resolutionFingerprint!="string"||!Array.isArray(t.reExports)?null:{resolutionFingerprint:t.resolutionFingerprint,reExports:t.reExports}}catch{return null}}function at(e){return{forFile(t,n){return Wp(e,t,n)},forFiles(t,n){let r=new Map;for(let i of t)r.set(i,Wp(e,i,n));return r}}}function Wp(e,t,n){let r={file:t},i=n.facts||n.identifiers;if(n.text&&(r.text=P(e,t)),n.lines&&(r.lines=Ce(e,t)),n.ast&&(r.ast=q(e,t)),n.imports&&(r.imports=re(e,t)),n.reexports&&(r.reexports=qt(e,t)),i){let o=Hc(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 zn(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
113
+ ${m}`,l+=1+m.length,u+=Ci(m),r+=m.length+1}let d=eP(c);d&&n.push({...d,start:a,end:l})}return n}function eP(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 tP(e,t,n,r){let i=bn(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=Ir(e,t,m),g=Dr(i,f);return[{importedName:m,localName:f,sourcePath:p,kind:"namespace",used:He(i,f)||g.length>0,usedMembers:g}]});let s=n.module?Ir(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 nP}from"path";function Mp(e,t,n){return ot(e,t,r=>iP(e,t,r),()=>rP(e,t,n))}function rP(e,t,n){return it(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"?rs(e,t,s):null;if(a){let c=Op(s);return[Vt(c,c,a,He(i,c))]}return[Wn(s,a)]})}function iP(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"?rs(e,t,d):null;if(m){let f=Op(d);i.push(pe(f,f,m,r))}else i.push(Wn(d,m))}return i}function Op(e){return Yo(nP(e).replace(/\.[^.]+$/,""),/_/)}function jp(e,t,n){return ot(e,t,r=>oP(e,t,r),()=>it(n,/^[ \t]*use\s+(.+?)\s*;$/gm,(r,i)=>{let o=r[1]?.trim();return o?sP(e,t,o,i):[]}))}function oP(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 xi(s,"")){if(!a.importedName||a.importedName==="*")continue;let c=Wt(e,t,a.qualifiedName)??Wt(e,t,a.qualifiedName.split("::").slice(0,-1).join("::"));i.push(pe(a.importedName,a.localName,c,r))}}return i}function xi(e,t){switch(e.type){case"identifier":case"super":case"crate":{let n=e.text;return[{qualifiedName:kr(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:kr(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=kr(t,n.text),o=[];for(let s of r.namedChildren)o.push(...xi(s,i));return o}case"use_list":{let n=[];for(let r of e.namedChildren)n.push(...xi(r,t));return n}case"use_as_clause":{let n=e.namedChild(0),r=e.namedChild(1);if(!n||!r)return[];let i=xi(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:kr(t,`${r}::*`),importedName:"*",localName:"*"}]}default:return[]}}function kr(e,t){return e?t?`${e}::${t}`:e:t}function sP(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 x=u.split("::").filter(Boolean).pop();return x?[ht(e,t,r,u,x,x)]:[]}let[p,g]=f.split(/\s+as\s+/),y=p?.trim();if(!y)return[];let h=(g??y.split("::").pop()??y).trim(),C=`${u}::${y}`.replace(/::::/g,"::");return[ht(e,t,r,C,y.split("::").pop()??y,h,Wt(e,t,u))]})}let[o,s]=i.split(/\s+as\s+/),a=o?.trim()??i,c=(s??a.split("::").pop()??a).trim(),l=Wt(e,t,a)??Wt(e,t,a.split("::").slice(0,-1).join("::"));return[ht(e,t,r,a,a.split("::").pop()??a,c,l)]}function Bp(e,t,n){let r=q(e,t);if(r)return aP(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(...lP(e,t,s))}return i}function aP(e,t,n){let r=[];for(let i of n.rootNode.descendantsOfType("use_declaration")){if(!cP(i))continue;let o=i.namedChildren.find(s=>s.type!=="visibility_modifier");if(o)for(let s of xi(o,""))s.importedName&&r.push(Sl(e,t,s.qualifiedName))}return r}function cP(e){for(let t of e.children)if(t.type==="visibility_modifier"&&t.text.startsWith("pub"))return!0;return!1}function lP(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[Sl(e,t,l)]})}return[Sl(e,t,r)]}function Sl(e,t,n){return{specifier:n,sourcePath:Wt(e,t,n)??Wt(e,t,n.split("::").slice(0,-1).join("::"))}}function Sn({language:e,extensions:t,imports:n,parseImports:r}){return{language:e,extensions:t,capabilities:{imports:n},parseImports:r}}function $p(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 uP={language:"javascript",extensions:Bn,capabilities:{imports:"ast-with-regex-fallback",reExports:"ast-with-regex-fallback"},parseImports:yl,parseReExports:bl},dP=Sn({language:"python",extensions:Qo,imports:"ast-with-regex-fallback",parseImports:Ap}),mP=Sn({language:"jvm",extensions:Ke,imports:"ast-dispatch-with-regex-fallback",parseImports:_p}),fP={language:"rust",extensions:Zo,capabilities:{imports:"ast-with-regex-fallback",exports:"ast-with-regex-fallback"},parseImports:jp,parseExports:Bp},pP=Sn({language:"ruby",extensions:es,imports:"ast-with-regex-fallback",parseImports:Mp}),gP=Sn({language:"c/cpp",extensions:ts,imports:"ast-with-regex-fallback",parseImports:vp}),hP=Sn({language:"dotnet",extensions:hn,imports:"ast-dispatch-with-regex-fallback",parseImports:kp}),yP={language:"dart",extensions:ns,capabilities:{imports:"regex-only",exports:"regex-only"},parseImports:Dp,parseExports:Ep},bP=Sn({language:"php",extensions:Hn,imports:"ast-with-regex-fallback",parseImports:Lp}),SP=Sn({language:"clojure",extensions:vr,imports:"regex-only",parseImports:wp}),Hp=[uP,dP,mP,fP,pP,gP,hP,yP,bP,SP];function gs(e){return $p(Hp,e)}function G4(e){return Hp.find(n=>n.language===e)?.capabilities??null}var Cl={clearGroups:["whole-project","source-file"]},CP=j("source-imports",Cl),xP=j("source-exports",Cl),RP=j("source-reexports",Cl),Up=oe({kind:"source-imports",invalidation:K("source-imports"),serialize:vP,deserialize:IP}),Wp=oe({kind:"source-reexports",invalidation:K("source-reexports"),serialize:wP,deserialize:DP});function qt(e,t){let n=te(t);return RP.get(e,n,()=>{let r=gs(n);if(!r?.parseReExports)return[];let i=P(e,n);if(!i)return[];let o=ce(e,n,i),s=sl(e),a=Wp.read(e,n,o);if(a?.resolutionFingerprint===s)return a.reExports;let c=r.parseReExports(e,n,i);return Wp.write(e,n,o,{resolutionFingerprint:s,reExports:c}),c})}function re(e,t){let n=te(t);return CP.get(e,n,()=>{let r=gs(n);if(!r)return[];let i=P(e,n);if(!i)return[];let o=ce(e,n,i),s=sl(e),a=Up.read(e,n,o);if(a?.resolutionFingerprint===s)return a.imports;let c=r.parseImports(e,n,i);return Up.write(e,n,o,{resolutionFingerprint:s,imports:c}),c})}function hs(e,t){let n=te(t);return xP.get(e,n,()=>{let r=gs(n);if(!r?.parseExports)return[];let i=P(e,n);return i?r.parseExports(e,n,i):[]})}function vP(e){return JSON.stringify(e)}function IP(e){try{let t=JSON.parse(e);return!It(t)||typeof t.resolutionFingerprint!="string"||!Array.isArray(t.imports)?null:{resolutionFingerprint:t.resolutionFingerprint,imports:t.imports}}catch{return null}}function wP(e){return JSON.stringify(e)}function DP(e){try{let t=JSON.parse(e);return!It(t)||typeof t.resolutionFingerprint!="string"||!Array.isArray(t.reExports)?null:{resolutionFingerprint:t.resolutionFingerprint,reExports:t.reExports}}catch{return null}}function at(e){return{forFile(t,n){return Gp(e,t,n)},forFiles(t,n){let r=new Map;for(let i of t)r.set(i,Gp(e,i,n));return r}}}function Gp(e,t,n){let r={file:t},i=n.facts||n.identifiers;if(n.text&&(r.text=P(e,t)),n.lines&&(r.lines=Ce(e,t)),n.ast&&(r.ast=q(e,t)),n.imports&&(r.imports=re(e,t)),n.reexports&&(r.reexports=qt(e,t)),i){let o=Uc(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 zn(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
114
  FROM global_symbols gs
115
115
  JOIN defn_enclosing_ranges der ON gs.id = der.symbol_id
116
116
  JOIN documents d ON der.document_id = d.id
117
117
  WHERE ${t.where}
118
118
  ${e.pathExclusionsFor("d")}
119
- ${zp(t.orderBy)}
120
- ${Vp(t.limit)}`,...t.params??[])}function Pr(e,t){return e.all(`SELECT
119
+ ${Vp(t.orderBy)}
120
+ ${qp(t.limit)}`,...t.params??[])}function Pr(e,t){return e.all(`SELECT
121
121
  gs.id,
122
122
  gs.symbol,
123
123
  c.document_id,
@@ -136,8 +136,8 @@ ${m}`,l+=1+m.length,u+=Ci(m),r+=m.length+1}let d=Zk(c);d&&n.push({...d,start:a,e
136
136
  AND ${t.where}
137
137
  ${e.pathExclusionsFor("d")}
138
138
  GROUP BY gs.id, gs.symbol, c.document_id, d.relative_path, gs.display_name, gs.documentation
139
- ${zp(t.orderBy)}
140
- ${Vp(t.limit)}`,...t.params??[])}function zp(e){return e?`ORDER BY ${e}`:""}function Vp(e){return typeof e=="number"?`LIMIT ${e}`:""}function Kt(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 Jt(e){if(!e)return null;let t=Gp(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(Gp(r)??r).replace(/\n/g," ")}function Gp(e){return/^```(?:\w+)?\s*\n?([\s\S]*?)\n?```/.exec(e.trimStart())?.[1]?.trim()||null}function DP(e,t={}){if(vt(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 Cn(e,t,n={}){let r=new Map;for(let o of t)e.length>0&&!DP(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 EP=j("file-definitions",{clearGroups:["definition-catalog"]}),kP=j("file-function-like-definitions",{clearGroups:["definition-catalog"]}),qp=new WeakMap;function Q(e,t,n={}){return n.includeClassMemberFallbacks?Cl(e,t,void 0,{includeClassMemberFallbacks:!0}):EP.get(e,t,()=>{let r=Xp(e,t);if(r)return r;let i=Cl(e,t),o=Te(e),s=at(e).forFile(t,{text:!0}).text;return o&&s&&Yp.write(e,t,ce(e,t,s),{projectFingerprint:o,definitions:i.map(a=>({...a}))}),i})}function PP(e,t){return kP.get(e,t,()=>{let n=Xp(e,t);return n?n.filter(r=>r.isFunctionLike):Cl(e,t,r=>r.isFunctionLike)})}var Yp=oe({kind:"file-definitions",invalidation:K("file-definitions"),serialize:TP,deserialize:_P});function Xp(e,t){let n=Te(e);if(!n)return null;let r=at(e).forFile(t,{text:!0}).text;if(!r)return null;let i=Yp.read(e,t,ce(e,t,r));return i?FP(i,n,t):null}function TP(e){return JSON.stringify(e)}function _P(e){try{let t=JSON.parse(e);return!It(t)||typeof t.projectFingerprint!="string"||!Array.isArray(t.definitions)?null:{projectFingerprint:t.projectFingerprint,definitions:t.definitions}}catch{return null}}function FP(e,t,n){if(e.projectFingerprint!==t)return null;let r=[];for(let i of e.definitions){let o=LP(i,n);if(!o)return null;r.push(o)}return r}function LP(e,t){return!It(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 Cl(e,t,n,r={}){let i=Cn(NP(e,t),AP(e,t),{sort:!0,includeClassMemberFallbacks:r.includeClassMemberFallbacks}).map(Qp);return n&&(i=i.filter(n)),tg(e,t,i)}function NP(e,t){return e.all(`SELECT
139
+ ${Vp(t.orderBy)}
140
+ ${qp(t.limit)}`,...t.params??[])}function Vp(e){return e?`ORDER BY ${e}`:""}function qp(e){return typeof e=="number"?`LIMIT ${e}`:""}function Kt(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 Jt(e){if(!e)return null;let t=zp(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(zp(r)??r).replace(/\n/g," ")}function zp(e){return/^```(?:\w+)?\s*\n?([\s\S]*?)\n?```/.exec(e.trimStart())?.[1]?.trim()||null}function EP(e,t={}){if(vt(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 Cn(e,t,n={}){let r=new Map;for(let o of t)e.length>0&&!EP(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 kP=j("file-definitions",{clearGroups:["definition-catalog"]}),PP=j("file-function-like-definitions",{clearGroups:["definition-catalog"]}),Kp=new WeakMap;function Q(e,t,n={}){return n.includeClassMemberFallbacks?xl(e,t,void 0,{includeClassMemberFallbacks:!0}):kP.get(e,t,()=>{let r=Qp(e,t);if(r)return r;let i=xl(e,t),o=Te(e),s=at(e).forFile(t,{text:!0}).text;return o&&s&&Xp.write(e,t,ce(e,t,s),{projectFingerprint:o,definitions:i.map(a=>({...a}))}),i})}function TP(e,t){return PP.get(e,t,()=>{let n=Qp(e,t);return n?n.filter(r=>r.isFunctionLike):xl(e,t,r=>r.isFunctionLike)})}var Xp=oe({kind:"file-definitions",invalidation:K("file-definitions"),serialize:_P,deserialize:FP});function Qp(e,t){let n=Te(e);if(!n)return null;let r=at(e).forFile(t,{text:!0}).text;if(!r)return null;let i=Xp.read(e,t,ce(e,t,r));return i?LP(i,n,t):null}function _P(e){return JSON.stringify(e)}function FP(e){try{let t=JSON.parse(e);return!It(t)||typeof t.projectFingerprint!="string"||!Array.isArray(t.definitions)?null:{projectFingerprint:t.projectFingerprint,definitions:t.definitions}}catch{return null}}function LP(e,t,n){if(e.projectFingerprint!==t)return null;let r=[];for(let i of e.definitions){let o=NP(i,n);if(!o)return null;r.push(o)}return r}function NP(e,t){return!It(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 xl(e,t,n,r={}){let i=Cn(AP(e,t),MP(e,t),{sort:!0,includeClassMemberFallbacks:r.includeClassMemberFallbacks}).map(Zp);return n&&(i=i.filter(n)),ng(e,t,i)}function AP(e,t){return e.all(`SELECT
141
141
  gs.id,
142
142
  gs.symbol,
143
143
  der.document_id,
@@ -155,7 +155,7 @@ ${m}`,l+=1+m.length,u+=Ci(m),r+=m.length+1}let d=Zk(c);d&&n.push({...d,start:a,e
155
155
  JOIN documents d ON der.document_id = d.id
156
156
  WHERE d.relative_path = ?
157
157
  ${e.symbolNoiseFor("gs")}
158
- ORDER BY der.start_line, der.end_line`,t)}function AP(e,t){return e.all(`SELECT
158
+ ORDER BY der.start_line, der.end_line`,t)}function MP(e,t){return e.all(`SELECT
159
159
  gs.id,
160
160
  gs.symbol,
161
161
  c.document_id,
@@ -176,7 +176,7 @@ ${m}`,l+=1+m.length,u+=Ci(m),r+=m.length+1}let d=Zk(c);d&&n.push({...d,start:a,e
176
176
  AND m.role = 1
177
177
  ${e.symbolNoiseFor("gs")}
178
178
  GROUP BY gs.id, gs.symbol, c.document_id, d.relative_path
179
- ORDER BY start_line, end_line`,t)}function Qp(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:vt(e.symbol),isFunctionLike:ee(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 xl(e,t.scope)}function xl(e,t){return N(e,{scope:t,includeIgnored:!1}).flatMap(n=>Q(e,n)).filter(n=>!e.isIgnored(n.relativePath))}function Zp(e,t){return N(e,{scope:t,includeIgnored:!1}).flatMap(n=>PP(e,n)).filter(n=>!e.isIgnored(n.relativePath))}function Ri(e,t){let n=Kp(MP(e,t.scope,t.sqlPrefilter)),r=Kp(OP(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=Cn(n.get(s)??[],r.get(s)??[],{sort:!0}).filter(c=>t.symbolMatches(c.symbol));a.length!==0&&o.push(...tg(e,s,a.map(Qp)))}return o}function MP(e,t,n){let r=t?"AND d.relative_path LIKE ?":"",i=n?`AND ${eg("gs",n)}`:"",o=t?[`%${t}%`]:[];return e.all(`SELECT
179
+ ORDER BY start_line, end_line`,t)}function Zp(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:vt(e.symbol),isFunctionLike:ee(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 Rl(e,t.scope)}function Rl(e,t){return N(e,{scope:t,includeIgnored:!1}).flatMap(n=>Q(e,n)).filter(n=>!e.isIgnored(n.relativePath))}function eg(e,t){return N(e,{scope:t,includeIgnored:!1}).flatMap(n=>TP(e,n)).filter(n=>!e.isIgnored(n.relativePath))}function Ri(e,t){let n=Jp(OP(e,t.scope,t.sqlPrefilter)),r=Jp(jP(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=Cn(n.get(s)??[],r.get(s)??[],{sort:!0}).filter(c=>t.symbolMatches(c.symbol));a.length!==0&&o.push(...ng(e,s,a.map(Zp)))}return o}function OP(e,t,n){let r=t?"AND d.relative_path LIKE ?":"",i=n?`AND ${tg("gs",n)}`:"",o=t?[`%${t}%`]:[];return e.all(`SELECT
180
180
  gs.id,
181
181
  gs.symbol,
182
182
  der.document_id,
@@ -197,7 +197,7 @@ ${m}`,l+=1+m.length,u+=Ci(m),r+=m.length+1}let d=Zk(c);d&&n.push({...d,start:a,e
197
197
  ${r}
198
198
  ${i}
199
199
  ${e.symbolNoiseFor("gs")}
200
- ORDER BY d.relative_path, der.start_line, der.end_line`,...o)}function OP(e,t,n){let r=t?"AND d.relative_path LIKE ?":"",i=n?`AND ${eg("gs",n)}`:"",o=t?[`%${t}%`]:[];return e.all(`SELECT
200
+ ORDER BY d.relative_path, der.start_line, der.end_line`,...o)}function jP(e,t,n){let r=t?"AND d.relative_path LIKE ?":"",i=n?`AND ${tg("gs",n)}`:"",o=t?[`%${t}%`]:[];return e.all(`SELECT
201
201
  gs.id,
202
202
  gs.symbol,
203
203
  c.document_id,
@@ -220,8 +220,8 @@ ${m}`,l+=1+m.length,u+=Ci(m),r+=m.length+1}let d=Zk(c);d&&n.push({...d,start:a,e
220
220
  ${i}
221
221
  ${e.symbolNoiseFor("gs")}
222
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 jP(e){return`(${e}.symbol LIKE '%().' OR ${e}.symbol LIKE '%()')`}function eg(e,t){return t==="callable"?jP(e):BP(e)}function BP(e){return`(${e}.symbol LIKE '%.' OR ${e}.symbol LIKE '%()')`}function Kp(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 hs(e,t,n={}){if(t.length===0)return[];let r=t.flatMap(i=>Q(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:Kt(Jt(i.documentation)),relativePath:i.relativePath,enclosingSymbol:i.enclosingSymbol}))}function Rl(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 wt(e,t){let n=qp.get(e);return n||(n=Rl(e),qp.set(e,n)),n.get(t)??null}function ys(e,t){let n=Q(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 tg(e,t,n){let r=at(e).forFile(t,{text:!0}).text,i=Wc(e,t);return i?zP(n,i,r):r?$P(n,r):n}function $P(e,t){let n=t.split(/\r?\n/),r=HP(e,n),i=UP(e,r),o=WP(i,n);return GP(e,o)}function HP(e,t){let n=e.some(i=>bs(i.symbol))?QP(t):null,r=new Map;for(let i of e)r.set(i.symbolId,XP(t,n,i));return r}function UP(e,t){return e.filter(n=>bs(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 WP(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:ZP(t,i.definition,i.startLine,s)})}return n}function GP(e,t){return e.map(n=>{let r=t.get(n.symbolId);return r?{...n,startLine:r.startLine,endLine:r.endLine}:n})}function zP(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(!YP(i)||!i.leaf)return Jp(i,n);let o=r.get(i.leaf);if(!o||o.length===0)return Jp(i,n);let s=n?VP(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 VP(e,t,n){let r=qP(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=KP(i,s.startLine);if(a&&o.test(a))return s}return null}function qP(e){return e.match(/\/impl#\[([^\]]+)\]/)?.[1]??null}function KP(e,t){for(let n=t;n>=0;n-=1){let r=e[n]?.trim()??"";if(r){if(/^impl\b/.test(r))return JP(e,n,t);if(/^(?:struct|enum|trait|mod)\b/.test(r))return null}}return null}function JP(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 YP(e){return bs(e.symbol)?!0:ue(e.symbol)==="term"&&vt(e.symbol)===null}function Jp(e,t){if(!t||!e.leaf||ue(e.symbol)!=="term"||vt(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 XP(e,t,n){if(!bs(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 QP(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 ZP(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 bs(e){return e.includes("().")}function Ss(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 Ii(e,t).match}function Ii(e,t){return tT.get(e,t,()=>{let n=rg(e,t.trim()).filter(o=>!e.isIgnored(o.relative_path));if(n.length>0)return vi(e,n);let r=cT(e,t);if(r&&!e.isIgnored(r.relative_path))return vi(e,[r]);let i=nT(e,t);return i.length>0?vi(e,i):sT(e,t)})}function nT(e,t){let n=xs(t),r=vl(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=Cn([],[...iT(e,t,n),...oT(e,t,n)]).filter(o=>!e.isIgnored(o.relative_path)).filter(o=>Tr(o,r)>1);return i.sort((o,s)=>Tr(s,r)-Tr(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 zn(e,{where:"d.relative_path LIKE ? AND (gs.display_name = ? OR gs.symbol LIKE ?)",params:[t,n,`%/${n}.%`]})}function oT(e,t,n){return Pr(e,{where:"d.relative_path LIKE ? AND (gs.display_name = ? OR gs.symbol LIKE ?)",params:[t,n,`%/${n}.%`]})}function sT(e,t){let n=xs(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 vi(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)),vi(e,s.map(a=>a.row))}function vi(e,t){let n=t.map(i=>ys(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 zn(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 Pr(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 wi(e,t){let n=rg(e,t).find(r=>!e.isIgnored(r.relative_path));return n?ys(e,n):null}function rg(e,t){let n=zn(e,{where:"gs.symbol = ?",params:[t],orderBy:"d.relative_path, der.start_line"}),r=n.length>0?[]:Pr(e,{where:"gs.symbol = ?",params:[t],orderBy:"d.relative_path, start_line"});return Cn(n,r)}function Cs(e,t){if("symbol"in t&&"relativePath"in t)return t;let n=dT(e,t.symbolId)[0];return n?ys(e,n):null}function dT(e,t){let n=zn(e,{where:"gs.id = ?",params:[t],orderBy:"der.start_line, der.end_line"}),r=Pr(e,{where:"gs.id = ?",params:[t],orderBy:"start_line, end_line"});return Cn(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=zn(e,{where:i,params:r,limit:200}),s=Pr(e,{where:i,params:r,limit:200});return Cn(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(),C=e.relative_path.toLowerCase(),x=/[/:.]/.test(n),S=vl(n),b=S?.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),(C===a||C===c)&&(v+=925),(C.endsWith(`/${c}`)||C.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),C.includes(c)&&(v+=140),h.includes(c)&&(v+=110),r.every(R=>{let E=R.toLowerCase();return p.includes(E)||g.includes(E)||C.includes(E)||h.includes(E)})&&(v+=100+r.length*15),S&&C.includes(S.path.toLowerCase())&&(v+=360,b&&(y===b||`${y}()`===b||`${y}()`==`${b}()`)&&(v+=700),le(e.symbol)&&(v+=180)),ee(e.symbol)&&y===l&&(v+=60),!x&&fn(e.symbol)&&(v-=160),v-=Math.min(50,Math.max(0,e.end_line-e.start_line)),v}function vl(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 xs(e){return e.trim().replace(/\(\)$/,"").replace(/\(.*$/,"")}function pT(e){let t=xs(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||Tr(o,n)>1||o.relative_path===r});return i.length===0?[]:(i.sort((o,s)=>Tr(s,n)-Tr(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 Tr(e,t){let n=vl(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)?vt(e.symbol)===null?5:4:vt(e.symbol)===null?3:2:0}function w8(e,t,n=5){let r=ng(t);if(!r)return[];let i=zn(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(ng(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 ng(e){return xs(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 Rs(e,t,n,r={}){if(!n)return[];let i=P(e,t);return i?i.indexOf(n)===-1?[]:(Yt(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 ig(e,t){let n=G(e,t);return n?n.fileIdentifiers:bT.get(e,t,()=>new Set(Yt(e,t).keys()))}var ST=j("file-ident-lines",{clearGroups:["whole-project","source-file"]});function Yt(e,t){let n=G(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 og(e,t){let n=G(e,t);return n?n.identifiersByLine:CT.get(e,t,()=>{let r=Yt(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=P(e,t);if(!i)return n;let o=rt(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 sg(e,t){return vs(e,t,n=>{let r=n?`AND m.symbol_id IN (${n.map(()=>"?").join(",")})`:"";return e.all(`SELECT
223
+ ORDER BY d.relative_path, start_line, end_line`,...o)}function BP(e){return`(${e}.symbol LIKE '%().' OR ${e}.symbol LIKE '%()')`}function tg(e,t){return t==="callable"?BP(e):$P(e)}function $P(e){return`(${e}.symbol LIKE '%.' OR ${e}.symbol LIKE '%()')`}function Jp(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 ys(e,t,n={}){if(t.length===0)return[];let r=t.flatMap(i=>Q(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:Kt(Jt(i.documentation)),relativePath:i.relativePath,enclosingSymbol:i.enclosingSymbol}))}function vl(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 wt(e,t){let n=Kp.get(e);return n||(n=vl(e),Kp.set(e,n)),n.get(t)??null}function bs(e,t){let n=Q(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 ng(e,t,n){let r=at(e).forFile(t,{text:!0}).text,i=Gc(e,t);return i?VP(n,i,r):r?HP(n,r):n}function HP(e,t){let n=t.split(/\r?\n/),r=UP(e,n),i=WP(e,r),o=GP(i,n);return zP(e,o)}function UP(e,t){let n=e.some(i=>Ss(i.symbol))?ZP(t):null,r=new Map;for(let i of e)r.set(i.symbolId,QP(t,n,i));return r}function WP(e,t){return e.filter(n=>Ss(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 GP(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:eT(t,i.definition,i.startLine,s)})}return n}function zP(e,t){return e.map(n=>{let r=t.get(n.symbolId);return r?{...n,startLine:r.startLine,endLine:r.endLine}:n})}function VP(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(!XP(i)||!i.leaf)return Yp(i,n);let o=r.get(i.leaf);if(!o||o.length===0)return Yp(i,n);let s=n?qP(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 qP(e,t,n){let r=KP(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=JP(i,s.startLine);if(a&&o.test(a))return s}return null}function KP(e){return e.match(/\/impl#\[([^\]]+)\]/)?.[1]??null}function JP(e,t){for(let n=t;n>=0;n-=1){let r=e[n]?.trim()??"";if(r){if(/^impl\b/.test(r))return YP(e,n,t);if(/^(?:struct|enum|trait|mod)\b/.test(r))return null}}return null}function YP(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 XP(e){return Ss(e.symbol)?!0:ue(e.symbol)==="term"&&vt(e.symbol)===null}function Yp(e,t){if(!t||!e.leaf||ue(e.symbol)!=="term"||vt(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 QP(e,t,n){if(!Ss(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 ZP(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 eT(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=tT(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 tT(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 Ss(e){return e.includes("().")}function Cs(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 nT=j("symbol-resolution",{clearGroups:[]});function B(e,t){return Ii(e,t).match}function Ii(e,t){return nT.get(e,t,()=>{let n=ig(e,t.trim()).filter(o=>!e.isIgnored(o.relative_path));if(n.length>0)return vi(e,n);let r=lT(e,t);if(r&&!e.isIgnored(r.relative_path))return vi(e,[r]);let i=rT(e,t);return i.length>0?vi(e,i):aT(e,t)})}function rT(e,t){let n=Rs(t),r=Il(n);if(!r)return[];let i=`%${r.path}%`,o=r.leaf;return iT(e,i,o,n)}function iT(e,t,n,r){let i=Cn([],[...oT(e,t,n),...sT(e,t,n)]).filter(o=>!e.isIgnored(o.relative_path)).filter(o=>Tr(o,r)>1);return i.sort((o,s)=>Tr(s,r)-Tr(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 oT(e,t,n){return zn(e,{where:"d.relative_path LIKE ? AND (gs.display_name = ? OR gs.symbol LIKE ?)",params:[t,n,`%/${n}.%`]})}function sT(e,t,n){return Pr(e,{where:"d.relative_path LIKE ? AND (gs.display_name = ? OR gs.symbol LIKE ?)",params:[t,n,`%/${n}.%`]})}function aT(e,t){let n=Rs(t),r=gT(t),i=fT(e,r),o=hT(i,t,n).filter(a=>!e.isIgnored(a.relative_path));if(o.length>0)return vi(e,o);let s=[];for(let a of i){if(e.isIgnored(a.relative_path))continue;let c=pT(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)),vi(e,s.map(a=>a.row))}function vi(e,t){let n=t.map(i=>bs(e,i)),r=n[0]??null;return{match:r,candidates:r?cT(n,r):[],total:n.length}}function cT(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 lT(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 uT(e,r,s,a)??dT(e,r,s,a)}function uT(e,t,n,r){return zn(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 dT(e,t,n,r){return Pr(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 wi(e,t){let n=ig(e,t).find(r=>!e.isIgnored(r.relative_path));return n?bs(e,n):null}function ig(e,t){let n=zn(e,{where:"gs.symbol = ?",params:[t],orderBy:"d.relative_path, der.start_line"}),r=n.length>0?[]:Pr(e,{where:"gs.symbol = ?",params:[t],orderBy:"d.relative_path, start_line"});return Cn(n,r)}function xs(e,t){if("symbol"in t&&"relativePath"in t)return t;let n=mT(e,t.symbolId)[0];return n?bs(e,n):null}function mT(e,t){let n=zn(e,{where:"gs.id = ?",params:[t],orderBy:"der.start_line, der.end_line"}),r=Pr(e,{where:"gs.id = ?",params:[t],orderBy:"start_line, end_line"});return Cn(n,r)}function fT(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=zn(e,{where:i,params:r,limit:200}),s=Pr(e,{where:i,params:r,limit:200});return Cn(o,s)}function pT(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(),C=e.relative_path.toLowerCase(),x=/[/:.]/.test(n),S=Il(n),b=S?.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),(C===a||C===c)&&(v+=925),(C.endsWith(`/${c}`)||C.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),C.includes(c)&&(v+=140),h.includes(c)&&(v+=110),r.every(R=>{let E=R.toLowerCase();return p.includes(E)||g.includes(E)||C.includes(E)||h.includes(E)})&&(v+=100+r.length*15),S&&C.includes(S.path.toLowerCase())&&(v+=360,b&&(y===b||`${y}()`===b||`${y}()`==`${b}()`)&&(v+=700),le(e.symbol)&&(v+=180)),ee(e.symbol)&&y===l&&(v+=60),!x&&fn(e.symbol)&&(v-=160),v-=Math.min(50,Math.max(0,e.end_line-e.start_line)),v}function Il(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 Rs(e){return e.trim().replace(/\(\)$/,"").replace(/\(.*$/,"")}function gT(e){let t=Rs(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 hT(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||Tr(o,n)>1||o.relative_path===r});return i.length===0?[]:(i.sort((o,s)=>Tr(s,n)-Tr(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 Tr(e,t){let n=Il(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)?vt(e.symbol)===null?5:4:vt(e.symbol)===null?3:2:0}function D8(e,t,n=5){let r=rg(t);if(!r)return[];let i=zn(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=>yT(rg(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 rg(e){return Rs(e).toLowerCase().replace(/[^a-z0-9_]+/g,"")}function yT(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 vs(e,t,n,r={}){if(!n)return[];let i=P(e,t);return i?i.indexOf(n)===-1?[]:(Yt(e,t).get(n)??[]).filter(s=>!bT(s,r)):[]}function bT(e,t){return typeof t.excludeStartLine=="number"&&typeof t.excludeEndLine=="number"&&e>=t.excludeStartLine&&e<=t.excludeEndLine}var ST=j("file-identifiers",{clearGroups:["whole-project","source-file"]});function og(e,t){let n=G(e,t);return n?n.fileIdentifiers:ST.get(e,t,()=>new Set(Yt(e,t).keys()))}var CT=j("file-ident-lines",{clearGroups:["whole-project","source-file"]});function Yt(e,t){let n=G(e,t);return n?n.identifierLineMap:CT.get(e,t,()=>RT(e,t))}var xT=j("file-idents-by-line",{clearGroups:["whole-project","source-file"]});function sg(e,t){let n=G(e,t);return n?n.identifiersByLine:xT.get(e,t,()=>{let r=Yt(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 RT(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=P(e,t);if(!i)return n;let o=rt(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 ag(e,t){return Is(e,t,n=>{let r=n?`AND m.symbol_id IN (${n.map(()=>"?").join(",")})`:"";return e.all(`SELECT
225
225
  m.symbol_id,
226
226
  d.relative_path,
227
227
  COUNT(*) AS ref_count
@@ -231,16 +231,16 @@ ${m}`,l+=1+m.length,u+=Ci(m),r+=m.length+1}let d=Zk(c);d&&n.push({...d,start:a,e
231
231
  WHERE m.role != 1
232
232
  ${r}
233
233
  ${e.pathExclusionsFor("d")}
234
- GROUP BY m.symbol_id, d.relative_path`,...n??[])})}function ag(e,t){return vs(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
234
+ GROUP BY m.symbol_id, d.relative_path`,...n??[])})}function cg(e,t){return Is(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
235
  FROM mentions m
236
236
  JOIN chunks c ON m.chunk_id = c.id
237
237
  JOIN documents d ON c.document_id = d.id
238
238
  WHERE m.role != 1
239
239
  ${r}
240
- ${e.pathExclusionsFor("d")}`,...n??[])}).filter(n=>n.symbol_id!==null)}function cg(e,t){return vs(e,t,n=>{let r=n?`AND m.symbol_id IN (${n.map(()=>"?").join(",")})`:"";return e.all(`SELECT DISTINCT m.symbol_id
240
+ ${e.pathExclusionsFor("d")}`,...n??[])}).filter(n=>n.symbol_id!==null)}function lg(e,t){return Is(e,t,n=>{let r=n?`AND m.symbol_id IN (${n.map(()=>"?").join(",")})`:"";return e.all(`SELECT DISTINCT m.symbol_id
241
241
  FROM mentions m
242
242
  WHERE m.role != 1
243
- ${r}`,...n??[])}).filter(n=>n.symbol_id!==null)}function _r(e,t){return vs(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,
243
+ ${r}`,...n??[])}).filter(n=>n.symbol_id!==null)}function _r(e,t){return Is(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
244
  c.start_line AS chunk_start, c.end_line AS chunk_end
245
245
  FROM mentions m
246
246
  JOIN chunks c ON m.chunk_id = c.id
@@ -248,7 +248,7 @@ ${m}`,l+=1+m.length,u+=Ci(m),r+=m.length+1}let d=Zk(c);d&&n.push({...d,start:a,e
248
248
  WHERE m.role != 1
249
249
  ${r}
250
250
  ${e.pathExclusionsFor("d")}
251
- ORDER BY d.relative_path, c.start_line`,...n??[])})}function vs(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 Is(e,t){let n=lg(e);return n?t.filter(r=>lg(r.file)===n):t}function ws(e,t,n,r){let i=n.find(o=>o.file===t);if(i)return i;if(r){let o=new Set(re(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 lg(e){let t=M(e);return t?t==="typescript"||t==="tsx"||t==="javascript"?"javascript-family":t:null}var RT=J("global-leaf-index",{clearGroups:["whole-project"]});function Xt(e){return RT.get(e,()=>{let t=e.all(`SELECT gs.id, gs.symbol,
251
+ ORDER BY d.relative_path, c.start_line`,...n??[])})}function Is(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 ws(e,t){let n=ug(e);return n?t.filter(r=>ug(r.file)===n):t}function Ds(e,t,n,r){let i=n.find(o=>o.file===t);if(i)return i;if(r){let o=new Set(re(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 ug(e){let t=M(e);return t?t==="typescript"||t==="tsx"||t==="javascript"?"javascript-family":t:null}var vT=J("global-leaf-index",{clearGroups:["whole-project"]});function Xt(e){return vT.get(e,()=>{let t=e.all(`SELECT gs.id, gs.symbol,
252
252
  COALESCE(der_doc.relative_path, mention_doc.relative_path) AS relative_path
253
253
  FROM global_symbols gs
254
254
  LEFT JOIN defn_enclosing_ranges der ON der.symbol_id = gs.id
@@ -262,7 +262,7 @@ ${m}`,l+=1+m.length,u+=Ci(m),r+=m.length+1}let d=Zk(c);d&&n.push({...d,start:a,e
262
262
  GROUP BY m.symbol_id
263
263
  ) mention_doc ON mention_doc.symbol_id = gs.id
264
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 ug=/[A-Za-z_$][A-Za-z0-9_$]*/g,dg=/^[A-Za-z_$][A-Za-z0-9_$]*$/,vT=512;function Di(e){let t=[],n=!1;for(let r of e)r&&(n=!0,dg.test(r)||t.push(r));return{candidateNames:e,hasUsableCandidate:n,nonIdentifierNames:t}}function Ds(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(dg.test(i)){if(wT(i).test(e))return!0;continue}if(e.includes(i))return!0}return!1}ug.lastIndex=0;let r;for(;(r=ug.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 DT=j("source-import-paths-by-local-name",{clearGroups:["whole-project","source-file"]});function Es(e,t){let n=gn(t);return DT.get(e,n,()=>ET(e,n))}function ET(e,t){let n=new Map;for(let r of re(e,t)){if(!r.sourcePath)continue;let i=r.localName??r.importedName;if(i&&mg(n,i,r.sourcePath),r.kind==="namespace")for(let o of r.usedMembers)mg(n,o,r.sourcePath)}return n}function mg(e,t,n){let r=e.get(t);r||(r=new Set,e.set(t,r)),r.add(n)}function Fr(e,t,n){let r=Xt(e).get(n);if(!r||r.length===0)return[];if(r.length===1)return[Ei(r[0])];let i=r.filter(c=>c.file===t);if(i.length>0)return i.map(Ei);let o=Es(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(Ei)}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(Ei)}return[]}function fg(e,t,n){let r=Fr(e,t,n);if(r.length>0)return r;let i=Xt(e).get(n);return!i||i.length===0?[]:i.map(Ei)}function pg(e,t,n={}){let r=Cs(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 ks(e,a)}}let o=new Map;for(let s of $e(e)){let a=P(e,s);if(!a||a.indexOf(i)===-1||s!==r.relativePath&&!Fr(e,s,i).some(u=>u.symbolId===r.symbolId))continue;let c=Rs(e,s,i,s===r.relativePath?{excludeStartLine:r.startLine,excludeEndLine:r.endLine}:{});c.length>0&&o.set(s,c)}return ks(e,o)}function gg(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)||!Ds(P(e,c),s))continue;let l=ig(e,c);if(l.size!==0){for(let u of l)if(r.has(u))for(let d of Fr(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 Ei(e){return{symbolId:e.symbolId,symbol:e.symbol,relativePath:e.file}}function ks(e,t){let n=[],r=new Set;for(let[i,o]of t){let s=Q(e,i);for(let a of o){let c=wt(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?ks(e,PT(e,n.match,n.identifier)):[]}function Dt(e,t,n={}){return kT(e,t,n).map(r=>({file:r.file,line:r.line,enclosingSymbol:r.enclosingSymbol}))}function kT(e,t,n={}){let r=pg(e,t,{semantic:n.semantic,semanticEvidence:n.semanticEvidence}),i=r.length>0?hg(r,"source-attribution"):hg(ki(e,t),"scip-reference-chunk");return n.includeIgnored===!0?i:i.filter(o=>!e.isIgnored(o.file))}function hg(e,t){return e.map(n=>({...n,provenance:t}))}function PT(e,t,n){let r=new Map;for(let[i,o]of TT(e,t.symbolId))r.set(i,_T(e,i,o,t,n));return r}function TT(e,t){let n=new Map;for(let r of _r(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 _T(e,t,n,r,i){let o=t===r.relativePath?{excludeStartLine:r.startLine,excludeEndLine:r.endLine}:{},s=i?Rs(e,t,i,o):[];return n.flatMap(a=>FT(s,a))}function FT(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=Cs(e,t);return n?{match:n,identifier:T(n.symbol)||null}:null}var yg=On({kind:"file-dependency-graph",invalidation:K("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 w("file-dep-graph.product",()=>{if(a){let h=yg.read(e,o,a);if(h){d=!0;let C=BT(h);return c=h.sourceFileCount,l=h.sourceEdgeCount,m=h.scipEdgeCount,f=C.size,u=h.sourceDependencyFingerprint,C}}let p=w("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,C)=>GT(e,g,s,h,C);w("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&&yg.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 re(e,s))a.sourcePath&&o.push({fromFile:s,toFile:a.sourcePath});if(r==="imports-and-reexports")for(let a of qt(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
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 dg=/[A-Za-z_$][A-Za-z0-9_$]*/g,mg=/^[A-Za-z_$][A-Za-z0-9_$]*$/,IT=512;function Di(e){let t=[],n=!1;for(let r of e)r&&(n=!0,mg.test(r)||t.push(r));return{candidateNames:e,hasUsableCandidate:n,nonIdentifierNames:t}}function Es(e,t){let n=wT(t)?t:Di(t);if(n.candidateNames.size===0||!n.hasUsableCandidate)return!0;if(n.candidateNames.size<=IT){for(let i of n.candidateNames)if(i){if(mg.test(i)){if(DT(i).test(e))return!0;continue}if(e.includes(i))return!0}return!1}dg.lastIndex=0;let r;for(;(r=dg.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 wT(e){return"candidateNames"in e}function DT(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 ks(e,t){let n=gn(t);return ET.get(e,n,()=>kT(e,n))}function kT(e,t){let n=new Map;for(let r of re(e,t)){if(!r.sourcePath)continue;let i=r.localName??r.importedName;if(i&&fg(n,i,r.sourcePath),r.kind==="namespace")for(let o of r.usedMembers)fg(n,o,r.sourcePath)}return n}function fg(e,t,n){let r=e.get(t);r||(r=new Set,e.set(t,r)),r.add(n)}function Fr(e,t,n){let r=Xt(e).get(n);if(!r||r.length===0)return[];if(r.length===1)return[Ei(r[0])];let i=r.filter(c=>c.file===t);if(i.length>0)return i.map(Ei);let o=ks(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(Ei)}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(Ei)}return[]}function pg(e,t,n){let r=Fr(e,t,n);if(r.length>0)return r;let i=Xt(e).get(n);return!i||i.length===0?[]:i.map(Ei)}function gg(e,t,n={}){let r=xs(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 Ps(e,a)}}let o=new Map;for(let s of $e(e)){let a=P(e,s);if(!a||a.indexOf(i)===-1||s!==r.relativePath&&!Fr(e,s,i).some(u=>u.symbolId===r.symbolId))continue;let c=vs(e,s,i,s===r.relativePath?{excludeStartLine:r.startLine,excludeEndLine:r.endLine}:{});c.length>0&&o.set(s,c)}return Ps(e,o)}function hg(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)||!Es(P(e,c),s))continue;let l=og(e,c);if(l.size!==0){for(let u of l)if(r.has(u))for(let d of Fr(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 Ei(e){return{symbolId:e.symbolId,symbol:e.symbol,relativePath:e.file}}function Ps(e,t){let n=[],r=new Set;for(let[i,o]of t){let s=Q(e,i);for(let a of o){let c=wt(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=NT(e,t);return n?Ps(e,TT(e,n.match,n.identifier)):[]}function Dt(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=gg(e,t,{semantic:n.semantic,semanticEvidence:n.semanticEvidence}),i=r.length>0?yg(r,"source-attribution"):yg(ki(e,t),"scip-reference-chunk");return n.includeIgnored===!0?i:i.filter(o=>!e.isIgnored(o.file))}function yg(e,t){return e.map(n=>({...n,provenance:t}))}function TT(e,t,n){let r=new Map;for(let[i,o]of _T(e,t.symbolId))r.set(i,FT(e,i,o,t,n));return r}function _T(e,t){let n=new Map;for(let r of _r(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?vs(e,t,i,o):[];return n.flatMap(a=>LT(s,a))}function LT(e,t){let n=e.filter(r=>r>=t.start_line&&r<=t.end_line);return n.length>0?n:[t.start_line]}function NT(e,t){let n=xs(e,t);return n?{match:n,identifier:T(n.symbol)||null}:null}var bg=On({kind:"file-dependency-graph",invalidation:K("file-dependency-graph"),serialize:e=>JSON.stringify(e),deserialize:HT}),AT=j("file-dep-graph",{clearGroups:["whole-project"]});function ie(e,t,n={}){let r=n.scipEdges??"all-references",i=n.sourceEdges??"imports-only",o=jT(t,r,i);return AT.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 w("file-dep-graph.product",()=>{if(a){let h=bg.read(e,o,a);if(h){d=!0;let C=$T(h);return c=h.sourceFileCount,l=h.sourceEdgeCount,m=h.scipEdgeCount,f=C.size,u=h.sourceDependencyFingerprint,C}}let p=w("file-dep-graph.source-imports",()=>{let h=MT(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,C)=>zT(e,g,s,h,C);w("file-dep-graph.scip-edges",()=>{for(let h of GT(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&&bg.write(e,o,a,{sourceDependencyFingerprint:p.fingerprint,sourceFileCount:p.files.length,sourceEdgeCount:p.edges.length,scipEdgeCount:m,graph:BT(g)}),g},()=>({scope:t??null,available:a!==null,hit:d,files:c,sourceEdges:l,sourceEdgeMode:i,scipEdges:m,graphFiles:f,sourceDependencyFingerprint:u}))})}function MT(e,t,n,r){let i=[],o=[];for(let s of t)if(!(n&&!s.includes(n))){i.push(s);for(let a of re(e,s))a.sourcePath&&o.push({fromFile:s,toFile:a.sourcePath});if(r==="imports-and-reexports")for(let a of qt(e,s))a.sourcePath&&o.push({fromFile:s,toFile:a.sourcePath})}return{files:i,edges:o,fingerprint:OT(i,o)}}function OT(e,t){let n=t.map(r=>`${r.fromFile}\0${r.toFile}`).sort();return he(JSON.stringify({files:e,edges:n}))}function jT(e,t,n){return`edge-mode-v3:${t}:${n}:${e??"<all>"}`}function BT(e){return[...e].map(([t,n])=>[t,[...n]])}function $T(e){return new Map(e.graph.map(([t,n])=>[t,new Set(n)]))}function HT(e){let t=JSON.parse(e);return UT(t)?t:null}function UT(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(WT)}function WT(e){return Array.isArray(e)&&e.length===2&&typeof e[0]=="string"&&Array.isArray(e[1])&&e[1].every(t=>typeof t=="string")}function GT(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
266
  d1.relative_path AS from_file,
267
267
  d2.relative_path AS to_file
268
268
  FROM mentions m
@@ -280,15 +280,15 @@ ${m}`,l+=1+m.length,u+=Ci(m),r+=m.length+1}let d=Zk(c);d&&n.push({...d,start:a,e
280
280
  WHERE d1.id != d2.id
281
281
  ${o}
282
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 Ps(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 bg(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(Q(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 Sg(e,t){let r=re(e,t).map(i=>ZT(t,i));return{usage:r,positions:e_(e,t,r)}}function Cg(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 e_(e,t,n){let r=q(e,t);if(!r)return[];let i=t_(r.rootNode),o=new Map;for(let a of i){let c=o.get(wl(a.importedName,a.localName));c?c.push(a.position):o.set(wl(a.importedName,a.localName),[a.position])}let s=[];return n.forEach((a,c)=>{let l=o.get(wl(a.importedName,a.localName??a.importedName))?.shift();l&&s.push({...l,id:String(c),file:t})}),s}function t_(e){let t=[];for(let n of e.descendantsOfType("use_declaration")){let r=n.namedChildren.find(i=>i.type!=="visibility_modifier");r&&t.push(...Ts(r,""))}return t.filter(n=>n.importedName!=="*")}function Ts(e,t){switch(e.type){case"identifier":case"super":case"self":case"crate":return[{importedName:e.text,localName:e.text,position:Il(e,e.text)}];case"scoped_identifier":{let n=e.text.split("::").pop()??e.text;return[{importedName:n,localName:n,position:Il(e,n)}]}case"scoped_use_list":{let n=e.namedChild(0),r=e.namedChild(1);if(!n||!r)return[];let i=kr(t,n.text);return r.namedChildren.flatMap(o=>Ts(o,i))}case"use_list":return e.namedChildren.flatMap(n=>Ts(n,t));case"use_as_clause":{let n=e.namedChild(0),r=e.namedChild(1);return!n||!r?[]:Ts(n,t).map(i=>({...i,localName:r.text}))}case"use_wildcard":{let n=e.namedChild(0),r="*";return[{importedName:r,localName:r,position:Il(n??e,r)}]}default:return[]}}function Il(e,t){let n=Math.max(0,e.text.lastIndexOf(t));return{id:"",file:"",line:e.startPosition.row,column:e.startPosition.column+n+n_(t)}}function n_(e){return Math.max(0,Math.min(e.length-1,1))}function wl(e,t){return`${e}\0${t}`}import{spawnSync as Wl}from"child_process";import{existsSync as Gl}from"fs";import{fileURLToPath as wF}from"url";function xn(e){if(!e)return;let t=Number(e);return Number.isInteger(t)&&t>0?t:void 0}import{execFileSync as wg}from"child_process";import{existsSync as El,readFileSync as c_}from"fs";import{createRequire as l_}from"module";import{platform as Dg}from"os";import{dirname as Ig,join as _s}from"path";import{execFileSync as xg,spawnSync as r_}from"child_process";import{platform as i_}from"os";var Rg=i_()==="win32";function DZ(e,t=r_){try{return t(e,["--version"],{stdio:"ignore",timeout:1e4}).status===0}catch{return!1}}function Dl(e){let t=Rg?"where":"which";try{return xg(t,[e],{stdio:"pipe"}),!0}catch{return!1}}var o_=/\.(?:c|m)?js$/i,s_=/\.(?:exe|com)$/i;function EZ(e,t){return o_.test(e)?{binary:process.execPath,args:[e,...t]}:{binary:e,args:[...t]}}function a_(e,t){return xg(e,t,{stdio:["ignore","pipe","ignore"],encoding:"utf8"})}function vg(e,t={}){let n=t.isWindows??Rg,r=t.lookup??a_,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=>s_.test(s))??null:o[0]??null}var u_=l_(import.meta.url),Eg={language:"rust",indexerBinary:"rust-analyzer",installUrl:"https://github.com/rust-lang/rust-analyzer"};function kl(e){return[e.indexerBinary,...e.binaryAliases??[]]}function d_(e){let t=kl(e);return t.length===1?t[0]:t.join(" or ")}function Pl(e){for(let t of kl(e))if(Dg()==="win32"){let n=vg(t);if(n)return n}else if(Dl(t))return t;return f_(e)}function AZ(e){return Pl(e)!==null||m_(e)}function m_(e){return kg(e)!==null}function f_(e){let t=kg(e);if(!t)return null;let r=JSON.parse(c_(t,"utf8")).bin;if(!r)return null;if(typeof r=="string")return _s(Ig(t),r);for(let i of kl(e)){let o=r[i];if(o)return _s(Ig(t),o)}return null}function kg(e){if(!e.bundledNpmPackage)return null;try{return u_.resolve(`${e.bundledNpmPackage}/package.json`)}catch{return null}}function p_(e,t){for(let n of e.projectLocalBinaries??[]){let r=_s(t,n);if(El(r))return r}return null}function g_(e,t){return p_(e,t)??Pl(e)}function MZ(e,t=process.env,n=e.indexerBinary){if(e.indexerBinary!=="scip-dotnet"||Tl(n,t))return t;let r=Tg(n,t);return r?{...t,DOTNET_ROOT:r}:t}function Pg(e,t){let n=d_(e),r=t?g_(e,t):Pl(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=h_(r);return{language:e.language,binaryLabel:n,installed:!0,runnable:i.runnable,resolvedBinary:r,installUrl:e.installUrl,note:i.note}}function h_(e){if(Tl(e,process.env))return{runnable:!0};let t=Tg(e,process.env);if(t)return{runnable:!0,note:`using .NET 9 runtime from ${t}`};let n=_g(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 Tg(e,t){for(let n of _g(t))if(Tl(e,{...t,DOTNET_ROOT:n}))return n;return null}function _g(e){let t=[],n=e.DOTNET_ROOT;if(n&&El(n)&&t.push(n),Dg()==="darwin"&&Dl("brew"))try{let r=wg("brew",["--prefix","dotnet@9"],{stdio:"pipe",env:e}).toString().trim(),i=_s(r,"libexec");El(i)&&!t.includes(i)&&t.push(i)}catch{}return t}function Tl(e,t){try{return wg(e,["--version"],{stdio:"pipe",env:t}),!0}catch{return!1}}function Fs(e){let t=Pg(Eg,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 uF,mkdtempSync as ch,readFileSync as lh,rmSync as Ol}from"fs";import{tmpdir as $l}from"os";import{join as jl}from"path";import{fileURLToPath as Ni,pathToFileURL as dF}from"url";import{SHARE_ENV as mF,Worker as fF}from"worker_threads";function ct(e){try{return process.kill(e,0),!0}catch(t){return typeof t=="object"&&t!==null&&"code"in t&&t.code==="EPERM"}}function Rn(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 Vn(e,t,n){let r=xn(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 X_}from"child_process";import{createHash as Q_,randomUUID as Z_}from"crypto";import{existsSync as th,mkdirSync as Yg,readFileSync as Os,realpathSync as eF,rmSync as Al}from"fs";import{tmpdir as tF}from"os";import{resolve as Et}from"path";import{mkdirSync as y_,renameSync as b_,writeFileSync as S_}from"fs";import{dirname as C_}from"path";function _e(e,t,n={}){y_(C_(e),{recursive:!0});let r=`${e}.${process.pid}.${Date.now()}.tmp`,i=JSON.stringify(t,null,n.spacing);S_(r,n.trailingNewline?`${i}
284
- `:i),b_(r,e)}import{execFileSync as P_}from"child_process";import{existsSync as x_,readFileSync as R_}from"fs";import{deserializeSCIP as v_,SymbolRole as I_}from"@c4312/scip";import{existsSync as qZ,readFileSync as KZ}from"fs";import{relative as YZ,resolve as XZ,sep as QZ}from"path";import{fileURLToPath as e3,pathToFileURL as t3}from"url";function Ls(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 _l=new WeakMap,w_="SCIP_RUST_SCIP_OCCURRENCE_REFERENCE_MODE";function Fg(e,t){let n=new Map,r=Ns(),i=t.filter(s=>Ag(s,r));if(i.length===0)return n;let o=Mg(e);if(!o)return n;for(let s of i){let a=Ng(o,s);a!==null&&n.set(s.symbolId,a)}return n}function Lg(e,t){if(!Ag(t,Ns()))return null;let n=Mg(e);return n?Ng(n,t):null}function Ng(e,t){return e.referencesBySymbol.get(t.symbol)??[]}function Ag(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:!D_(r)}function D_(e){for(let t=0;t<e.descriptors.length-1;t+=1)if(e.descriptors[t]?.suffix==="type")return!0;return!1}function Mg(e){if(_l.has(e))return _l.get(e)??null;let t=E_(e);return _l.set(e,t),t}function E_(e){if(!x_(e.config.indexPath))return null;try{let t=v_(R_(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&I_.Definition)!==0)continue;let s=k_(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,Ls(i));return{referencesBySymbol:n}}catch{return null}}function k_(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 Ns(){return process.env[w_]==="all"?"all":"safe"}var Og=new Map;function Fl(e){let n=Fs(e).resolvedBinary??null;return{engine:"rust-analyzer",resolvedBinary:n,version:n?T_(e,n):"unavailable"}}function qn(e){return{...Fl(e),scipOccurrenceReferenceMode:Ns()}}function T_(e,t){let n=`${e}\0${t}`,r=Og.get(n);if(r)return r;let i;try{i=P_(t,["--version"],{cwd:e,encoding:"utf8",stdio:["ignore","pipe","ignore"],timeout:2e3}).trim()}catch{i="unknown"}return Og.set(n,i),i}import{createHash as K_}from"crypto";import{execFileSync as N_}from"child_process";import{createHash as zg}from"crypto";import{lstatSync as A_,readdirSync as M_,readFileSync as O_,readlinkSync as j_,realpathSync as Vg}from"fs";import{isAbsolute as B_,join as qg,relative as $_,sep as H_}from"path";function Ll(e,t){let n=e.split("/").at(-1)??e;if(Wg.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=>(Gg[i]??[]).includes(r))?"source":"other"}function Hg(e,t,n){let r=e.split("/").at(-1)??e;if(n?.includes(e)||n?.includes(r)||Wg.has(r))return!0;let i=e.includes(".")?`.${e.split(".").at(-1).toLowerCase()}`:"";return(Gg[t]??[]).includes(i)}function Ug(e){if(typeof e!="object"||e===null)return null;let t=e;return typeof t.version!="number"||!jg(t.languages)||typeof t.pnpmWorkspaces!="boolean"||typeof t.typescriptProjectMode!="string"||!jg(t.typescriptProjects)||t.clojureConfigPath!==void 0&&typeof t.clojureConfigPath!="string"||!Array.isArray(t.files)||!t.files.every(__)?null:t}function m3(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=Ll(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"),(Bg(e?.files??[])||Bg(t.files))&&s.add("duplicate-input-path"),[...e?.files??[],...t.files].some(F_)&&s.add("unreadable-input"),{version:1,changes:o,projectIdentityChanged:e?!L_(e,t):!0,uncertainty:[...s].sort()}}function jg(e){return Array.isArray(e)&&e.every(t=>typeof t=="string")}function Bg(e){return new Set(e.map(t=>t.path)).size!==e.length}function __(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 L_(e,t){return $g(e.languages,t.languages)&&e.pnpmWorkspaces===t.pnpmWorkspaces&&e.typescriptProjectMode===t.typescriptProjectMode&&$g(e.typescriptProjects,t.typescriptProjects)&&e.clojureConfigPath===t.clojureConfigPath}function $g(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 Wg=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"]),Gg={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 U_(e){return[...new Set((e??[]).map(t=>t.trim()).filter(Boolean))].sort((t,n)=>t.localeCompare(n))}function W_(e){return(z_(e)??V_(e)).filter(t=>t&&!Kg(t)).sort()}function Nl(e,t={}){let n=W_(e).filter(i=>!t.language||Hg(i,t.language,t.markerFiles)).filter(i=>!t.includePath||t.includePath(i)),r=Vg(e);return n.map(i=>{let o=qg(e,i);try{if(A_(o).isSymbolicLink()){let a=Vg(o),c=$_(r,a);if(c===".."||c.startsWith(`..${H_}`)||B_(c))throw new Error("external symlink");let l=j_(o);return{path:i,size:Buffer.byteLength(l),hash:zg("sha256").update("symlink\0").update(l).digest("hex")}}let s=O_(o);return{path:i,size:s.byteLength,hash:zg("sha256").update(s).digest("hex")}}catch{return{path:i,size:-1,hash:"unreadable"}}})}function Pi(e,t,n){return{version:2,languages:[...t].sort(),pnpmWorkspaces:n.typescriptProjectMode!=="workspace"&&n.pnpmWorkspaces===!0,typescriptProjectMode:n.typescriptProjectMode??"single",typescriptProjects:U_(n.typescriptProjects),clojureConfigPath:G_(n.clojureConfigPath),files:Nl(e)}}function G_(e){return e?.trim()||void 0}function z_(e){try{return N_("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 V_(e){let t=[],n=[""];for(;n.length>0;){let r=n.pop(),i=r?qg(e,r):e,o;try{o=M_(i,{withFileTypes:!0})}catch{continue}for(let s of o){let a=r?`${r}/${s.name}`:s.name;if(s.isDirectory()){Kg(a)||n.push(a);continue}t.push(a)}}return t}function Kg(e){let t=e.split("/");return e==="meta.json"||t.some(n=>q_.has(n))||e.endsWith(".db")||e.endsWith(".db-wal")||e.endsWith(".db-shm")||e.endsWith(".scip")}var q_=new Set([".git","node_modules",".scipquery-cache",".scipquery-generations",".stryker-tmp","dist","build","coverage",".next",".nuxt","target"]);var J_=new Set(["Cargo.lock","Cargo.toml","rust-project.json","rust-toolchain","rust-toolchain.toml"]);function Jg(e){let t=Nl(e,{includePath:Y_});return K_("sha256").update(JSON.stringify(t)).digest("hex")}function Y_(e){let t=e.replaceAll("\\","/"),n=t.split("/").at(-1)??t;return t.endsWith(".rs")||J_.has(n)?!0:t===".cargo/config"||t===".cargo/config.toml"||t.endsWith("/.cargo/config")||t.endsWith("/.cargo/config.toml")}var nh=2,nF=5e3,rF=5e3,rh=10,iF=3e4;function Xg(e,t,n,r=ah){let i=r.engineIdentity(e),o={protocolVersion:nh,projectRoot:r.canonicalProjectRoot(e),projectFingerprint:r.projectFingerprint(e),engine:{engine:i.engine,resolvedBinary:i.resolvedBinary,version:i.version},workerFingerprint:r.fileFingerprint(t),environment:ih(r.environment())};return{key:Ms(As(o)),...o}}function Ti(e,t,n){return e.protocolVersion===nh&&(t-e.heartbeatAtMs<=nF||e.busyUntilMs!==void 0&&t<=e.busyUntilMs)&&n(e.pid)}function Ml(e,t,n){let r;try{r=Ms(Os(t))}catch{r="missing"}let i=Ms(As({projectRoot:Et(e),serverPath:Et(t),serverFingerprint:r})).slice(0,20);return Et(n,`scip-query-rust-session-${i}`)}function Qg(e){let t=e===void 0?Number.NaN:Number(e);return Number.isInteger(t)&&t>=0?t:0}function ih(e){return Object.fromEntries(Object.entries(e).filter(([t])=>sh(t)).sort(([t],[n])=>t.localeCompare(n)).map(([t,n])=>[t,n??null]))}function oh(e,t){let n=t.runtime??lF,r=t.identityRuntime??ah,i=Ml(e,t.serverPath,t.tempRoot??tF()),o=!1,s=(a,c)=>{if(o)throw new Error("Durable Rust semantic session was already disposed.");return sF(i,t.serverPath,t.semanticWorkerPath,a,c,n)};return{requestSemantic(a,c){let l=Xg(e,t.semanticWorkerPath,a,r),u=n.now()+Math.max(1,c-1e3);return s({kind:"semantic",identityKey:l.key,workerEnvironment:eh(),request:{...a,readinessDeadlineMs:u,referenceRetryTimeoutMs:oF(process.env.SCIP_RUST_SEMANTIC_REFERENCE_RETRY_TIMEOUT_MS,a.referenceRetryTimeoutMs),settleDelayMs:process.env.SCIP_RUST_SEMANTIC_SETTLE_MS===void 0?a.settleDelayMs:Qg(process.env.SCIP_RUST_SEMANTIC_SETTLE_MS)},timeoutMs:c},c)},requestImportDefinitions(a,c){let l=Xg(e,t.semanticWorkerPath,a,r),u=n.now()+Math.max(1,c-1e3);return s({kind:"import-definitions",identityKey:l.key,workerEnvironment:eh(),request:{...a,readinessDeadlineMs:u,settleDelayMs:process.env.SCIP_RUST_SEMANTIC_SETTLE_MS===void 0?a.settleDelayMs:Qg(process.env.SCIP_RUST_SEMANTIC_SETTLE_MS)},timeoutMs:c},c)},shutdown(){o=!0}}}function oF(e,t){return t!==void 0?t:e===void 0?iF:void 0}function sF(e,t,n,r,i,o){let s=o.randomId(),a=o.now(),c=Et(e,"requests"),l=Et(e,"responses"),u=Et(c,`${s}.json`),d=Et(l,`${s}.json`);Yg(c,{recursive:!0}),Yg(l,{recursive:!0}),_e(u,{id:s,request:r});let m=o.now()+i;try{for(Zg(e,t,n,m,o);o.now()<=m;){if(th(d)){let p=aF(Os(d,"utf8"));if(!p.ok)throw new Error(p.error);return U()&&mn({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||!Ti(f,o.now(),o.isProcessAlive))&&Zg(e,t,n,m,o),o.sleep(rh)}throw new Error(`Durable Rust semantic session timed out after ${(i/1e3).toFixed(0)}s.`)}finally{Al(u,{force:!0}),Al(d,{force:!0})}}function Zg(e,t,n,r,i){let o=_i(e);if(o&&Ti(o,i.now(),i.isProcessAlive))return;Al(Et(e,"server.json"),{force:!0}),i.spawnServer(t,e,n);let s=Math.min(r,i.now()+rF);for(;i.now()<=s;){let a=_i(e);if(a&&Ti(a,i.now(),i.isProcessAlive))return;i.sleep(rh)}throw new Error("Durable Rust semantic session helper did not become ready within 5s.")}function _i(e){try{let t=JSON.parse(Os(Et(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 aF(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 eh(){return Object.fromEntries(Object.entries(process.env).filter(([e])=>cF(e)).sort(([e],[t])=>e.localeCompare(t)).map(([e,t])=>[e,t??null]))}function sh(e){return e==="HOME"||e==="PATH"||e.startsWith("CARGO_")||e.startsWith("RA_")||e.startsWith("RUST")}function cF(e){return sh(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 ah={canonicalProjectRoot(e){try{return eF(e)}catch{return Et(e)}},projectFingerprint(e){return Jg(e)},engineIdentity:Fl,fileFingerprint(e){return Ms(Os(e))},environment(){return ih(process.env)}},lF={now:Date.now,randomId:Z_,isProcessAlive:ct,spawnServer(e,t,n){if(!th(e))throw new Error(`Durable Rust semantic session helper was not found at ${e}. Run npm run build first.`);X_(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 As(e){return Array.isArray(e)?`[${e.map(As).join(",")}]`:e&&typeof e=="object"?`{${Object.entries(e).sort(([t],[n])=>t.localeCompare(n)).map(([t,n])=>`${JSON.stringify(t)}:${As(n)}`).join(",")}}`:JSON.stringify(e)}function Ms(e){return Q_("sha256").update(e).digest("hex")}var uh=15e3,dh=8,fh=5e3,pF=64,gF=96,Hl=class{constructor(t,n,r={}){this.projectRoot=t;this.status=n;this.opts=r;this.requester=r.requester??bF(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:Fi(t)};try{let r=this.requestSession(n.resolvedBinary,t,{includeReferences:!0});return{available:r.available,resolvedBinary:n.resolvedBinary,reason:r.reason,references:Rn(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:Fi(t)}}}calleesForDefinitions(t){let n=this.status(this.projectRoot);if(!n.available||!n.resolvedBinary)return{available:!1,resolvedBinary:n.resolvedBinary,reason:n.reason,callees:Li(t)};try{let r=this.requestSession(n.resolvedBinary,t,{includeReferences:!1,includeCallees:!0});return{available:r.available,resolvedBinary:n.resolvedBinary,reason:r.reason,callees:Bl(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:Li(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:Fi(t),callees:Li(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:Rn(t,new Map(o.references),new Set(o.incompleteReferenceSymbolIds??[])),callees:Bl(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:mh(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:vF(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:mh(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=js(process.env.SCIP_RUST_SEMANTIC_REQUEST_TIMEOUT_MS,uh),o=Bs(process.env.SCIP_RUST_SEMANTIC_REFERENCE_RETRY_TIMEOUT_MS,0),s=js(process.env.SCIP_RUST_SEMANTIC_CONCURRENCY,dh),a=Bs(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=Ai(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=IF(m);return w("rust.semantic.session.request",()=>this.requester.requestSemantic(m,Vn(f,Ul(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:Fi(n)}:this.opts.fallbackReferenceResolver?.referencesForDefinitions(n),s=r.length===0?{available:!0,callees:Li(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:Rn(n,o.references),callees:Bl(r,s.callees)}:{available:!1,resolvedBinary:t.resolvedBinary,reason:i instanceof Error?i.message:String(i),references:Fi(n),callees:Li(r)}}requestImportDefinitions(t,n,r){let i=js(process.env.SCIP_RUST_SEMANTIC_REQUEST_TIMEOUT_MS,uh),o=js(process.env.SCIP_RUST_SEMANTIC_CONCURRENCY,dh),s=Bs(process.env.SCIP_RUST_SEMANTIC_DIAGNOSTICS_TIMEOUT_MS,Math.min(i,1e4)),a=Bs(process.env.SCIP_RUST_SEMANTIC_SETTLE_MS,fh),c={projectRoot:this.projectRoot,rustAnalyzerBinary:t,file:n,positions:[...r],requestTimeoutMs:i,diagnosticsTimeoutMs:s,settleDelayMs:a,concurrency:o};return w("rust.semantic.import-definitions.session.request",()=>this.requester.requestImportDefinitions(c,Vn(r.length,i,o)),()=>({file:n,positions:r.length}))}};function ph(e,t,n={}){return new Hl(e,t,n)}function Ai(e,t){let n=bh(e);if(n!==null)return n;let r=t.includeReferences!==!1;return r&&t.includeCallees!==!0&&t.includeSignatures!==!0&&t.definitionCount<=pF||r&&t.includeCallees===!0&&t.includeSignatures!==!0&&t.definitionCount<=gF?0:fh}function gh(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 hF(e){return gh(e).transport}function G3(e,t){let n=gh(t);if(n.transport==="worker")return{...n,state:"per-command"};let r=Ni(yh()),i=Ml(e,r,$l()),o=_i(i);return o?{...n,state:Ti(o,Date.now(),ct)?"live":"stale",pid:o.pid,heartbeatAtMs:o.heartbeatAtMs,...o.busyUntilMs===void 0?{}:{busyUntilMs:o.busyUntilMs}}:{...n,state:"stopped"}}function yF(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=RF(u);r=!0;try{a()}catch{}U()&&mn({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 bF(e,t,n={worker:()=>SF(),durable:()=>oh(e,{serverPath:Ni(yh()),semanticWorkerPath:Ni(hh())})}){return hF(t)==="durable"?yF(n.durable(),n.worker):n.worker()}function SF(e={}){let t=null,n=null,r=1,i=!1,o=()=>{n&&(Ol(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?dF(e.semanticWorkerPath):hh();if(!uF(Ni(l)))throw new Error(`Rust semantic session worker was not found at ${Ni(l)}. Run npm run build before using built semantic Rust queries.`);return n=ch(jl($l(),"scip-query-rust-session-")),t=new fF(l,e.shareEnvironment?{env:mF}:void 0),t.unref(),t},c=()=>{let l=n??ch(jl($l(),"scip-query-rust-session-"));return n=l,jl(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=CF(lh(m,"utf8"));if(!y.ok)throw new Error(y.error);return y.response}finally{Ol(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=xF(lh(m,"utf8"));if(!y.ok)throw new Error(y.error);return y.response}finally{Ol(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 CF(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 xF(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 RF(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 Fi(e){return new Map(e.map(t=>[t.symbolId,[]]))}function Li(e){return new Map(e.map(t=>[t.symbolId,[]]))}function mh(e){return new Map(e.map(t=>[t.symbolId,null]))}function Bl(e,t){return new Map(e.map(n=>[n.symbolId,t.get(n.symbolId)??[]]))}function vF(e,t){return new Map(e.map(n=>[n.symbolId,t.get(n.symbolId)??null]))}function IF(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 Ul(e,t){return t&&t>0?Math.max(e,t):e}function hh(){return new URL("./rust-semantic-session-worker.js",import.meta.url)}function yh(){return new URL("./rust-semantic-session-server.js",import.meta.url)}function js(e,t){return xn(e)??t}function Bs(e,t){return bh(e)??t}function bh(e){if(!e)return null;let t=Number(e);return Number.isInteger(t)&&t>=0?t:null}var zl=15e3,Vl=8;function Rh(e,t={}){let n=t.status??Fs,r=kF(e,n),i=PF(e,n),o=TF(e,n),s=t.referenceResolver||t.calleeResolver||t.signatureResolver||!DF(t)?null:ph(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??Cg(t.sourceImportUsageResolver??EF(),t.importDefinitionResolver??s),d=t.calleeSymbolResolver,m=t.sourceZeroCalleeOracle,f=t.scipOccurrenceCalleeOracle,p=new Map,g=new Map,y=null,h=null,C=()=>(y??=n(e),y),x=()=>{let E=C();return E.dependencyAvailable?h??E:E},S=E=>{if(E.length===0)return new Map;let D=Mi(E);try{let k=a.referencesForDefinitions(D),L=C();return h={...L,available:k.available,resolvedBinary:k.resolvedBinary??L.resolvedBinary,reason:k.reason??L.reason},k.available?new Map(k.references):Rn(D,k.references)}catch(k){return h={...C(),available:!1,reason:k instanceof Error?k.message:String(k)},Kn(D)}},b=E=>{if(E.length===0)return new Map;let D=Mi(E),k=D.filter(Sh);if(k.length===0)return Jn(D);let L=new Map,ne=xh(k,f),X=[];for(let F of k)g.has(F.symbolId)?L.set(F.symbolId,g.get(F.symbolId)??[]):ne.has(F.symbolId)?L.set(F.symbolId,ne.get(F.symbolId)??[]):Ch(F,m)?L.set(F.symbolId,[]):X.push(F);if(X.length===0)return Lr(D,L,void 0);try{let F=c.calleesForDefinitions(X),ae=C();h={...ae,available:F.available,resolvedBinary:F.resolvedBinary??ae.resolvedBinary,reason:F.reason??ae.reason};let Z=Lr(X,F.callees,d);for(let[ln,yc]of Z)L.set(ln,yc);return Lr(D,L,void 0)}catch(F){return h={...C(),available:!1,reason:F instanceof Error?F.message:String(F)},Jn(D)}},v=(E,D)=>{let k=Mi(E),L=Mi(D),ne=L.filter(Sh),X=new Map,F=xh(ne,f),ae=[];for(let Z of ne)F.has(Z.symbolId)?X.set(Z.symbolId,F.get(Z.symbolId)??[]):Ch(Z,m)?X.set(Z.symbolId,[]):ae.push(Z);if(k.length===0&&ae.length===0)return{references:Kn(k),callees:Lr(L,X,void 0)};try{let Z=s?s.referencesAndCalleesForDefinitions(k,ae):NF(a,c,{referenceDefinitions:k,calleeDefinitions:ae}),ln=C();h={...ln,available:Z.available,resolvedBinary:Z.resolvedBinary??ln.resolvedBinary,reason:Z.reason??ln.reason};let yc=Z.available?new Map(Z.references):Rn(k,Z.references);for(let[bc,Sc]of Z.callees)X.set(bc,Sc);let Hm=Lr(L,X,d);for(let[bc,Sc]of Hm)g.set(bc,Sc);return{references:yc,callees:Hm}}catch(Z){return h={...C(),available:!1,reason:Z instanceof Error?Z.message:String(Z)},{references:Kn(k),callees:Jn(L)}}},R=E=>{if(E.length===0)return new Map;let D=Mi(E);try{let k=l.signaturesForDefinitions(D),L=C();return h={...L,available:k.available,resolvedBinary:k.resolvedBinary??L.resolvedBinary,reason:k.reason??L.reason},vh(D,k.signatures)}catch(k){return h={...C(),available:!1,reason:k instanceof Error?k.message:String(k)},$s(D)}};return{language:"rust",availability:x,dispose:()=>{s?.dispose()},importUsage:E=>{let D=p.get(E);if(D)return D;try{let k=u.importUsage(E);return p.set(E,k),k}catch(k){return h={...C(),available:!1,reason:k instanceof Error?k.message:String(k)},[]}},referencesFor:E=>S([E]).get(E.symbolId)??[],referencesForDefinitions:S,referencesAndCalleesForDefinitions:v,calleesFor:E=>b([E]).get(E.symbolId)??[],calleesForDefinitions:b,signatureFor:E=>R([E]).get(E.symbolId)??null}}function DF(e){if(e.usePersistentSession!==void 0)return e.usePersistentSession;let t=process.env.SCIP_RUST_SEMANTIC_SESSION;return t!=="0"&&t!=="false"}function EF(){return{importUsageFacts:()=>({usage:[],positions:[]})}}function Mi(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:ee(t.symbol),isTypeLike:n.isTypeLike??!1,kind:n.kind??null,documentation:n.documentation??null,enclosingSymbol:n.enclosingSymbol??null}})}function Sh(e){return e.isFunctionLike}function Ch(e,t){if(!t)return!1;try{return t(e)}catch{return!1}}function xh(e,t){if(!t||e.length===0)return new Map;try{return t(e)}catch{return new Map}}function kF(e,t){return{referencesForDefinitions:n=>_F(e,t,n)}}function PF(e,t){return{calleesForDefinitions:n=>FF(e,t,n)}}function TF(e,t){return{signaturesForDefinitions:n=>LF(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:Kn(n)};let i=ql();if(!Gl(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:Kn(n)};let o=Nr(process.env.SCIP_RUST_SEMANTIC_REQUEST_TIMEOUT_MS,zl),s=Hs(process.env.SCIP_RUST_SEMANTIC_REFERENCE_RETRY_TIMEOUT_MS,0),a=Nr(process.env.SCIP_RUST_SEMANTIC_CONCURRENCY,Vl),c=Hs(process.env.SCIP_RUST_SEMANTIC_DIAGNOSTICS_TIMEOUT_MS,Math.min(o,1e4)),l=Ai(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=Wl(process.execPath,[i],{cwd:e,input:JSON.stringify(u),encoding:"utf8",maxBuffer:50*1024*1024,timeout:Vn(n.length,Ul(o,u.referenceRetryTimeoutMs),a)}),m=Kl(d.stdout);if(m)return{available:m.available,resolvedBinary:r.resolvedBinary,reason:m.reason,references:Rn(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:Kn(n)}}function FF(e,t,n){let r=t(e);if(!r.available||!r.resolvedBinary)return{available:!1,resolvedBinary:r.resolvedBinary,reason:r.reason,callees:Jn(n)};let i=ql();if(!Gl(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:Jn(n)};let o=Nr(process.env.SCIP_RUST_SEMANTIC_REQUEST_TIMEOUT_MS,zl),s=Nr(process.env.SCIP_RUST_SEMANTIC_CONCURRENCY,Vl),a=Hs(process.env.SCIP_RUST_SEMANTIC_DIAGNOSTICS_TIMEOUT_MS,Math.min(o,1e4)),c=Ai(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=Wl(process.execPath,[i],{cwd:e,input:JSON.stringify(l),encoding:"utf8",maxBuffer:50*1024*1024,timeout:Vn(n.length,o,s)}),d=Kl(u.stdout);if(d)return{available:d.available,resolvedBinary:r.resolvedBinary,reason:d.reason,callees:Lr(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:Jn(n)}}function LF(e,t,n){let r=t(e);if(!r.available||!r.resolvedBinary)return{available:!1,resolvedBinary:r.resolvedBinary,reason:r.reason,signatures:$s(n)};let i=ql();if(!Gl(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:$s(n)};let o=Nr(process.env.SCIP_RUST_SEMANTIC_REQUEST_TIMEOUT_MS,zl),s=Nr(process.env.SCIP_RUST_SEMANTIC_CONCURRENCY,Vl),a=Hs(process.env.SCIP_RUST_SEMANTIC_DIAGNOSTICS_TIMEOUT_MS,Math.min(o,1e4)),c=Ai(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=Wl(process.execPath,[i],{cwd:e,input:JSON.stringify(l),encoding:"utf8",maxBuffer:50*1024*1024,timeout:Vn(n.length,o,s)}),d=Kl(u.stdout);if(d)return{available:d.available,resolvedBinary:r.resolvedBinary,reason:d.reason,signatures:vh(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:$s(n)}}function NF(e,t,n){let r=n.referenceDefinitions.length>0?e.referencesForDefinitions(n.referenceDefinitions):{available:!0,references:Kn(n.referenceDefinitions)},i=n.calleeDefinitions.length>0?t.calleesForDefinitions(n.calleeDefinitions):{available:!0,callees:Jn(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 Kn(e){return new Map(e.map(t=>[t.symbolId,[]]))}function Jn(e){return new Map(e.map(t=>[t.symbolId,[]]))}function $s(e){return new Map(e.map(t=>[t.symbolId,null]))}function Lr(e,t,n){let r=0,i=0;return w("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 vh(e,t){return new Map(e.map(n=>[n.symbolId,t.get(n.symbolId)??null]))}function ql(){return wF(new URL("./rust-semantic-worker.js",import.meta.url))}function Kl(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 Nr(e,t){return xn(e)??t}function Hs(e,t){if(!e)return t;let n=Number(e);return Number.isInteger(n)&&n>=0?n:t}import{existsSync as AF,readFileSync as MF}from"fs";import{deserializeSCIP as OF,SymbolRole as jF}from"@c4312/scip";var Jl=new WeakMap;function wh(e,t){let n=t.filter(BF);if(n.length===0)return new Map;let r=!1,i=0,o=0;return w("rust.scip-occurrence.callees",()=>{let s=UF(e);if(r=!!s,!s)return new Map;let a=new Map;for(let c of n){let l=$F(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 BF(e){return!(!e.symbol.startsWith("rust-analyzer ")||!e.relativePath.endsWith(".rs")||!e.isFunctionLike||e.leaf==="main"||Ie(e.symbol))}function $F(e,t,n){let r=G(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)||!HF(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 HF(e,t){let n=Ih(e),r=Ih(t);if(n.size!==r.size)return!1;for(let[i,o]of n)if(r.get(i)!==o)return!1;return!0}function Ih(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 UF(e){if(Jl.has(e))return Jl.get(e)??null;let t=WF(e);return Jl.set(e,t),t}function WF(e){if(!AF(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=OF(MF(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&jF.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 Us=class{sessions=new WeakMap;getOrCreate(t,n,r){let i=GF(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 GF(e,t){return`${e.config.projectRoot}:${t}-workspace`}import{randomUUID as TL}from"crypto";import{existsSync as _L,mkdirSync as Zh,readFileSync as FL,rmSync as ey}from"fs";import{dirname as LL,resolve as ty}from"path";import{readFileSync as zF}from"fs";import{join as Yl}from"path";var f6=4,Dh=5e3,VF="watch.lock",qF="watch-state.json",KF="watch-activity.json";function Eh(e){return{lockPath:Yl(e,VF),statePath:Yl(e,qF),activityPath:Yl(e,KF)}}function Xl(e){try{return JF(JSON.parse(zF(e,"utf8")))}catch{return null}}function JF(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"||!yt(t.startedAt)||!yt(t.heartbeatAt)||!yt(t.lastActivityAt)||!YF(t.watcher)||t.idleDeadlineAt!==void 0&&!yt(t.idleDeadlineAt)||t.indexGeneration!==void 0&&!/^[a-f0-9]{64}$/.test(t.indexGeneration)||t.lastError!==void 0&&!XF(t.lastError)||t.lastRefresh!==void 0&&!QF(t.lastRefresh)||t.typescriptSemantic!==void 0&&!ZF(t.typescriptSemantic)||t.typescriptIndex!==void 0&&!eL(t.typescriptIndex)?null:t}function yt(e){return typeof e=="string"&&Number.isFinite(Date.parse(e))}function YF(e){if(!e||typeof e!="object"||!("state"in e))return!1;let t=e;switch(t.state){case"idle":return!0;case"waiting":return lt(t.changedFiles)&&lt(t.reindexAt);case"indexing":return lt(t.startedAt);case"cooldown":return lt(t.until)&&typeof t.dirty=="boolean";default:return!1}}function XF(e){if(!e||typeof e!="object")return!1;let t=e;return yt(t.at)&&typeof t.message=="string"}function QF(e){if(!e||typeof e!="object")return!1;let t=e;return typeof t.trigger?.kind=="string"&&typeof t.result=="string"&&yt(t.startedAt)&&yt(t.completedAt)&&lt(t.durationMs)}function ZF(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")&&lt(t.requests)&&lt(t.sessionsCreated)&&lt(t.sessionsReused)&&lt(t.sessionsRefreshed)&&lt(t.sessionsReplaced)&&lt(t.projectsCreated)&&(t.lastRequestAt===void 0||yt(t.lastRequestAt))&&(t.lastError===void 0||typeof t.lastError=="string")&&(t.busyUntil===void 0||yt(t.busyUntil))}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")&&Yn(t.requests)&&Yn(t.sessionsCreated)&&Yn(t.sessionsReplaced)&&Yn(t.initializations)&&Yn(t.programUpdates)&&Yn(t.documentsEmitted)&&Yn(t.documentsRemoved)&&(t.lastRequestAt===void 0||yt(t.lastRequestAt))&&(t.lastDurationMs===void 0||lt(t.lastDurationMs)&&t.lastDurationMs>=0)&&(t.lastError===void 0||typeof t.lastError=="string")&&(t.busyUntil===void 0||yt(t.busyUntil))}function lt(e){return typeof e=="number"&&Number.isFinite(e)}function Yn(e){return typeof e=="number"&&Number.isInteger(e)&&e>=0}import{performance as W}from"perf_hooks";function ut(e,t,n){if(e.has(t))return e.get(t);let r=n();return e.set(t,r),r}import kh from"path";function tL(e,t){return e.getReferences().map(n=>{let r=n.getNode();return Ws(r,t)})}function nL(e){let t=e;return typeof t.findReferences=="function"?t.findReferences():[]}function Ph(e,t,n,r){let i=[];for(let o of nL(e))for(let s of tL(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 Ar(i)}function Th(e,t,n,r){let i=[],o=n?.getStart();for(let s of e.getReferences()){let a=s.getNode();Mr(r,a.getSourceFile().getFilePath())===t&&(o!==void 0&&a.getStart()===o||i.push({location:Ws(a,r),node:a}))}return i}function Ws(e,t){let n=e.getSourceFile(),r=n.getLineAndColumnAtPos(e.getStart());return{file:Mr(t,n.getFilePath())??n.getBaseName(),line:r.line-1,column:r.column-1}}function _h(e,t,n){let r=e.getSourceFile(),i=Zl(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 Ar(c.filter(l=>Mr(n,kh.join(n,l.file))===t))}function Ql(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 Zl(e,t){return e.getLineAndColumnAtPos(t.getStart()).line-1}function Ar(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 Mr(e,t){let n=kh.relative(e||process.cwd(),t).replace(/\\/g,"/");return!n||n.startsWith("..")?null:n}function Fh(e,t,n,r){let i=rL(t,r);return i.size===0?new Map:iL(e,n,i)}function rL(e,t){let n=new Map;for(let r of Q(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 iL(e,t,n){let r=new Map,i=new Map;return t.forEachDescendant(o=>{for(let s of oL(e,o)){let a=n.get(s);if(!a)continue;let c=Zl(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 oL(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 sL=j("ts-definition-leaf-candidates",{clearGroups:["definition-catalog"]});function Lh(e,t,n,r){let i=nu(e,t),o=eu(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 eu(s,n)}function tu(e,t,n,r){return eu(nu(e,t).get(r)??[],n)}function Nh(e,t){let n=new Map;for(let[r,i]of nu(e,t)){let o=i[0];o&&n.set(r,o)}return n}function nu(e,t){return sL.get(e,t,()=>{let n=new Map;for(let r of Q(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 eu(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 ru from"path";var Oi=[".ts",".tsx",".mts",".cts",".js",".jsx",".mjs",".cjs"];function kt(e){let t=e.toLowerCase();return Oi.some(n=>t.endsWith(n))}function Ah(e,t){let n=new Map,r=null,i=null,o=()=>(i??=N(e,{extensions:Oi}),i),s=()=>(r??=w("typescript.source-file-index",()=>aL(e.config.projectRoot,t,o()),()=>({projects:t.length,indexedDocuments:o().length})),r),a=c=>kt(c)?ut(n,c,()=>{let l=ji(ru.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(ji(m.getFilePath()),m)),m)return{project:u,sourceFile:m}}return null}):null;return{sourceFile:c=>a(c)?.sourceFile??null,sourceFileMatch:a,indexedTypeScriptLikeDocuments:o}}function aL(e,t,n){let r=t.map(({project:i})=>({project:i,sourceFiles:new Map(i.getSourceFiles().map(o=>[ji(o.getFilePath()),o]))}));for(let i of n){let o=ji(ru.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(ji(a.getFilePath()),a);break}}}return r}function ji(e){return ru.resolve(e)}function iu(e,t){for(let n of e)if(t===n.name||t.startsWith(`${n.name}/`))return n.name;return null}function Mh(e){let t=`${e.relativeDir}/src`;return[`${t}/index.ts`,`${t}/index.tsx`,`${t}/index.mts`,`${t}/index.cts`]}import{existsSync as Bi,readFileSync as cL}from"fs";import Fe from"path";var ou=["tsconfig.json","tsconfig.app.json","tsconfig.node.json","tsconfig.base.json"];function su(e,t){let r=t?Fe.dirname(Fe.join(e,t)):e,i=Fe.resolve(e);for(;r.startsWith(i);){for(let s of ou){let a=Fe.join(r,s);if(Bi(a))return a}let o=Fe.dirname(r);if(o===r)break;r=o}for(let o of ou){let s=Fe.join(e,o);if(Bi(s))return s}return null}function Oh(e){let t=e.config.projectRoot,n=new Set(lL(t,e.config.semantic?.typescript?.tsconfigs)),r=N(e,{includeIgnored:!1,extensions:Oi});for(let i of r){let o=su(t,i);o&&n.add(Fe.resolve(o))}if(n.size===0){let i=su(t);i&&n.add(Fe.resolve(i))}return[...n].filter(i=>!jh(t,i)).sort((i,o)=>i.localeCompare(o))}function lL(e,t=[]){let n=new Set;for(let r of t){let i=Fe.isAbsolute(r)?r:Fe.join(e,r);Bi(i)&&n.add(Fe.resolve(i))}for(let r of uL(e))for(let i of ou){let o=Fe.join(r,i);Bi(o)&&n.add(Fe.resolve(o))}if(n.size===0){let r=su(e);r&&n.add(Fe.resolve(r))}return[...n].filter(r=>!jh(e,r)).sort((r,i)=>r.localeCompare(i))}function uL(e){let t=Fe.join(e,"package.json");if(!Bi(t))return[];let n;try{n=JSON.parse(cL(t,"utf8"))}catch{return[]}return(Array.isArray(n.workspaces)?n.workspaces:n.workspaces?.packages??[]).flatMap(i=>Yc(e,i))}function jh(e,t){let n=Fe.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 dL}from"module";var Bh=dL(import.meta.url),$i,Gs;function au(){if($i!==void 0)return $i;try{$i=Bh("ts-morph")}catch{$i=null}return $i}function zs(){if(Gs)return Gs;let e=au();if(!e)return"ts-morph:unavailable";let t="unknown";try{t=Bh("ts-morph/package.json").version??"unknown"}catch{}return Gs=`ts-morph:${t}:typescript:${e.ts.version}`,Gs}function $h(e,t){return t.map(n=>({tsconfigPath:n,project:new e.Project({tsConfigFilePath:n,skipFileDependencyResolution:!0})}))}function Vs(e,t,n){return{language:"typescript",availability:()=>({available:!1,reason:e,tsconfigPath:t,tsconfigPaths:n}),importUsage:()=>[],referencesFor:()=>[],calleesFor:()=>[],signatureFor:()=>null}}function qs(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,mL(o));return r}function Wh(e,t,n){let r=Uh(e,t),i=Uh(e,n),o=[...r].filter(d=>!i.has(d)).sort(),s=[...i].filter(d=>!r.has(d)).sort(),a=Hh(e,t),c=Hh(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 Hh(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 Gh(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,fL(s));return i}function Uh(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 mL(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(zh)}function fL(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)||zh(n.location,r.location))}function zh(e,t){return e.file.localeCompare(t.file)||e.line-t.line||e.column-t.column}var pL=32;function Xh(e,t){let n=w("typescript.provider.load",()=>au());if(!n)return Vs("ts-morph is not installed");let r=w("typescript.provider.tsconfig-discovery",()=>Oh(e));if(r.length===0)return Vs("no tsconfig found");try{let i=w("typescript.provider.project-bundles",()=>$h(n,r),()=>({tsconfigs:r.length}));return gL(e,n,i)}catch(i){return Vs(i instanceof Error?i.message:String(i),r[0],r)}}function gL(e,t,n,r={}){return w("typescript.provider.construct",()=>new lu(e,t,n),()=>({tsconfigs:n.length,reusedProjects:r.reusedProjects===!0}))}var lu=class{constructor(t,n,r){this.db=t;this.tsMorph=n;this.projects=r;this.workspacePackages=Rr(t.config.projectRoot),this.sourceFiles=Ah(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 ut(this.importUsageCache,t,()=>{let n=this.sourceFiles.sourceFile(t);if(!n)return[];let r=yL();return w("typescript.import-usage.file",()=>this.importUsageForSourceFile(t,n,r),()=>({file:t,...r}))})}referencesFor(t){return ut(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=>!qh(u));if(a.length>=pL){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=>qh(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=Kh();w("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,...Jh(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=>kt(o.relativePath)),r=t.filter(o=>this.sourceFiles.sourceFile(o)!==null),i=this.referencesForDefinitionsBySymbolScan(n,r);return Gh(n,i,r)}referencesForDefinitionsBySymbolScan(t,n){let r=U(),i=Kh(),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 w("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 C=o.get(y.symbolId)??[];C.push(...h),o.set(y.symbolId,C)}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 C=Ar(h);o.set(y,C),r&&(i.referenceCount+=C.length)}},()=>({definitions:t.length,...Jh(i)})),o}addReferencesFromSourceFileScan(t,n,r,i,o,s,a,c,l,u){let d=this.compilerCheckerForSourceFile(t),m=t.compilerNode,f=CL(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 C=ut(c,y,()=>this.compilerSymbolKeys(y)),x=null,S=null,b=h&&r.has(h.symbolId)?i.get(h.symbolId):void 0;if(b&&(x=cu(m,g),!Vh(b,n,x))){let v=m.getLineAndCharacterOfPosition(g.getStart(m));S={file:n,line:v.line,column:v.character};let R=l.get(b.symbolId)??[];R.push(S),l.set(b.symbolId,R),u&&(u.requestedHits+=1)}for(let v of C)for(let R of o.get(v)?.values()??[]){if(x??=cu(m,g),Vh(R,n,x))continue;if(!S){let D=m.getLineAndCharacterOfPosition(g.getStart(m));S={file:n,line:D.line,column:D.character}}let E=l.get(R.symbolId)??[];E.push(S),l.set(R.symbolId,E),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=Mr(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 ut(this.calleesCache,t.symbolId,()=>ut(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=Ph(n,t,o,this.db.config.projectRoot);return r&&(r.semanticRefsMs+=W.now()-s,r.referenceCount+=a.length),a}signatureFor(t){return ut(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 Yh(c)}),o=r.getReturnType().getText(n);return`(${i.join(",")})=>${Yh(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 uu(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||bL(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:Ws(s,this.db.config.projectRoot),node:s}),r.matchedReferences+=1;break}}}),i.map(s=>s.typeOnlyDeclaration?hL(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 Th(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=>!Ql(c.node)),s=i.some(c=>Ql(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=iu(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,Ar(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,Ar(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=iu(this.workspacePackages,i.getModuleSpecifierValue());if(!o)return;let s=n.get(o);if(s)for(let a of uu(i)){if(a.kind!=="named"||!a.identifier)continue;let c=s.get(a.importedName);if(!c||c.size===0)continue;let l=_h(a.identifier,r,this.db.config.projectRoot);l.length>0&&IL(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 Mh(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 ut(this.indexedDefinitionLeafCache,t,()=>Nh(this.db,t)).get(n)??null}nodeForDefinition(t){return ut(this.definitionNodeCache,t.symbolId,()=>this.definitionNodesForFile(t.relativePath).get(t.symbolId)??null)}definitionNodesForFile(t){return ut(this.fileDefinitionNodeCache,t,()=>{let n=this.sourceFiles.sourceFile(t);return n?Fh(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=Mr(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?tu(this.db,u,d,i)??(f&&f!==i?tu(this.db,u,d,f):null):Lh(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?RL():void 0;return w("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=Q(this.db,t).sort((E,D)=>E.startLine-D.startLine||D.endLine-E.endLine);if(r&&(l=Math.round(W.now()-g)),i=y.length,y.length===0)return new Map;let h=new Map,C=r?W.now():0,x=this.compilerCheckerForSourceFile(p),S=p.compilerNode;r&&(u=Math.round(W.now()-C));let b=new Map,v=E=>{if(this.tsMorph.ts.isCallExpression(E)||this.tsMorph.ts.isNewExpression(E)){r&&(o+=1);let D=this.semanticCalleeForCallNode(x,S,y,E,b,n,m);D&&(r&&(s+=1),SL(h,D.callerId,D.target))}this.tsMorph.ts.forEachChild(E,v)},R=r?W.now():0;v(S),r&&(d=Math.round(W.now()-R));for(let[E,D]of h)h.set(E,wL(D));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?vL(m):{}}))}semanticCalleeForCallNode(t,n,r,i,o,s,a){let c=a?W.now():0,l=xL(r,cu(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 uu(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 hL(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 yL(){return{declarations:0,entries:0,bindingSymbols:0,missingBindingSymbols:0,scannedIdentifiers:0,symbolLookups:0,matchedReferences:0,fallbackEntries:0}}function bL(e){for(let t=e;t;t=t.getParent())if(t.getKindName()==="ImportDeclaration")return!0;return!1}function SL(e,t,n){let r=e.get(t);r||(r=[],e.set(t,r)),r.push(n)}function CL(e){let t=new Set;for(let n of e.getImportDeclarations())for(let r of uu(n))r.localName&&t.add(r.localName);return t}function xL(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 cu(e,t){return e.getLineAndCharacterOfPosition(t.getStart(e)).line}function Vh(e,t,n){return t===e.relativePath&&n>=e.startLine&&n<=e.endLine}function qh(e){return e.symbol.includes("#")?ue(e.symbol)==="type"&&e.relativePath.endsWith(".d.ts"):!1}function RL(){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 vL(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 Kh(){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 Jh(e){return{...e,scanMs:Math.round(e.scanMs),packageRefsMs:Math.round(e.packageRefsMs),semanticRefsMs:Math.round(e.semanticRefsMs),hierarchyMs:Math.round(e.hierarchyMs)}}function IL(e,t,n){for(let r of t){let i=e.get(r)??[];i.push(...n),e.set(r,i)}}function wL(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 Yh(e){return e.replace(/\s+/g," ").replace(/\bimport\("[^"]+"\)\./g,"").trim()}import{createHash as DL}from"crypto";import{readFileSync as EL}from"fs";import{dirname as kL,join as Ks}from"path";var Js=2,PL="typescript-semantic";function Qh(e){let t=Ks(e,PL);return{rootDir:t,requestDir:Ks(t,"requests"),responseDir:Ks(t,"responses")}}function Ys(e){try{let t=JSON.parse(EL(Ks(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 NL=12e4,AL=5;function iy(e,t,n={}){let r=new du(e,n),i=null,o=null,s=process.env.SCIP_QUERY_SKIP_WATCH_SERVICE==="1",a=()=>(i??=Xh(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=>ry(f),()=>a().referencesForDefinitions?.(d,m)??new Map(d.map(f=>[f.symbolId,a().referencesFor(f)]))),u=d=>c({kind:"callees",definitions:[...d]},m=>ry(m),()=>a().calleesForDefinitions?.(d)??new Map(d.map(m=>[m.symbolId,a().calleesFor(m)])));return{language:"typescript",availability:()=>(o??=c({kind:"availability"},jL,()=>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=>OL(m),()=>a().referenceFragmentsForFiles?.(d)??new Map),calleesFor:d=>u([d]).get(d.symbolId)??[],calleesForDefinitions:u,signatureFor:d=>c({kind:"signature",definition:d},BL,()=>a().signatureFor(d)),dispose:()=>i?.dispose?.()}}var du=class{constructor(t,n={}){this.db=t;this.runtime=n.runtime??HL,this.timeoutMs=n.timeoutMs??$L(),this.cacheDir=LL(t.config.dbPath),this.projectRoot=Rt(t.config.projectRoot)}db;runtime;timeoutMs;cacheDir;projectRoot;request(t){let n=Eh(this.cacheDir),r=Qh(this.cacheDir),i=Xl(n.statePath);if(!ny(i,this.projectRoot,this.runtime))throw new Error("Compatible TypeScript semantic service is not running.");let o=Ys(this.db.config.dbPath);if(!o)throw new Error("Published TypeScript generation identity is unavailable.");let s=this.runtime.randomId(),a=ty(r.requestDir,`${s}.json`),c=ty(r.responseDir,`${s}.json`),l=this.runtime.now()+this.timeoutMs;Zh(r.requestDir,{recursive:!0}),Zh(r.responseDir,{recursive:!0}),_e(a,{protocolVersion:Js,id:s,generation:o,deadlineAtMs:l,profileEnvironment:pf(),request:t});try{for(;this.runtime.now()<=l;){if(_L(c))return ML(FL(c,"utf8"),s,o);let u=Xl(n.statePath);if(!ny(u,this.projectRoot,this.runtime))throw new Error("TypeScript semantic service stopped while processing a request.");this.runtime.sleep(AL)}throw new Error(`TypeScript semantic service timed out after ${this.timeoutMs}ms.`)}finally{ey(a,{force:!0}),ey(c,{force:!0})}}};function ny(e,t,n){let r=e!==null&&n.now()-Date.parse(e.heartbeatAt)<=Dh,i=e?.typescriptSemantic?.busyUntil!==void 0&&n.now()<=Date.parse(e.typescriptSemantic.busyUntil);return e!==null&&e.projectRoot===t&&e.typescriptSemantic?.protocolVersion===Js&&n.isProcessAlive(e.pid)&&(r||i)}function ML(e,t,n){let r=JSON.parse(e);if(r.protocolVersion!==Js||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 ry(e){if(!Array.isArray(e))throw new Error("TypeScript semantic service wrote an invalid numeric map.");return new Map(e)}function OL(e){if(!Array.isArray(e))throw new Error("TypeScript semantic service wrote an invalid string map.");return new Map(e)}function jL(e){if(!e||typeof e!="object"||typeof e.available!="boolean")throw new Error("TypeScript semantic service wrote invalid availability.");return e}function BL(e){if(e!==null&&typeof e!="string")throw new Error("TypeScript semantic service wrote an invalid signature.");return e}function $L(){let e=Number(process.env.SCIP_TYPESCRIPT_SEMANTIC_TIMEOUT_MS);return Number.isInteger(e)&&e>0?e:NL}var HL={now:Date.now,randomId:TL,sleep(e){let t=new Int32Array(new SharedArrayBuffer(4));Atomics.wait(t,0,0,e)},isProcessAlive:ct};var oy=new Us;un({name:"semantic-provider",groups:["semantic-provider"],clearAll:e=>oy.clear(e)});function Or(e,t){let n=De(t)??"typescript";return oy.getOrCreate(e,n,()=>n==="rust"?Rh(e.config.projectRoot,{sourceImportUsageResolver:{importUsageFacts:r=>Sg(e,r)},calleeSymbolResolver:bg(e),sourceZeroCalleeOracle:r=>UL(e,r),scipOccurrenceCalleeOracle:r=>wh(e,r)}):iy(e,t))}function De(e){return e?M(e)==="rust"?"rust":kt(e)?"typescript":null:"typescript"}function UL(e,t){let n=G(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 WL,readFileSync as GL}from"fs";import{resolve as zL}from"path";var VL=/^[A-Za-z_][A-Za-z0-9_]*$/,sy=/\bDefault::default\b/g,qL=/^\.\.\s*Default::default\b/;function ay(e,t){let n=new Map,r=new Map;for(let i of t){let o=mu(e,i,r);o!==null&&n.set(i.symbolId,o)}return n}function mu(e,t,n=new Map){let r=JL(t.symbol);if(!r)return null;let i=_r(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=KL(e,t.symbolId),c=[];for(let l of i){let u=YL(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]??"",C=new Set;o.lastIndex=0;let x;for(;x=o.exec(h);)c.push({file:l.relative_path,line:g,column:x.index+x[1].length+r.length+2}),p+=1;for(let S=0;S<h.length;S+=1){let b=qL.exec(h.slice(S));if(b){if(a&&f.includes(m)){let R=S+b[0].lastIndexOf("default");c.push({file:l.relative_path,line:g,column:R}),C.add(R),p+=1}S+=b[0].length-1;continue}let v=h[S];if(v==="{"){let R=s.test(h.slice(0,S));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(sy.lastIndex=0;x=sy.exec(h);){let S=x.index+9;if(!C.has(S))return null}}if(p===0)return null}return Ls(c)}function KL(e,t){return e.get("SELECT 1 AS present FROM mentions WHERE symbol_id = ? AND role = 1 LIMIT 1",t)?.present===1}function JL(e){let t=/impl#\[([^\]]+)\]\[Default\]default\(\)\./.exec(e)?.[1]??null;return!t||!VL.test(t)?null:t}function YL(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:XL(e,t);return n.set(t,i),i}function XL(e,t){let n=zL(e.config.projectRoot,t);if(!WL(n))return null;try{return GL(n,"utf8")}catch{return null}}import{readFileSync as tN}from"fs";import{dirname as nN,join as rN}from"path";function Qs(e){let t=Xs(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=Ll(d.path,["typescript"]);return m==="config"||m==="ambient"}).map(d=>d.path),o=Xs([...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=>cy(r.get(d))),l=he(JSON.stringify({pnpmWorkspaces:e.snapshot.pnpmWorkspaces,typescriptProjectMode:e.snapshot.typescriptProjectMode,typescriptProjects:Xs(e.snapshot.typescriptProjects),membership:t})),u=new Map;return{identityFor(d,m){if(!n.has(d))return jr("target-outside-project");if(a)return jr("duplicate-input-path");if(s)return jr("missing-input-fingerprint");if(c)return jr("unreadable-input");let f=[],p,g;if(e.graph===null)f.push("dependency-graph-unavailable"),g="whole-project",p=o;else{let C=ZL(d,e.graph,u);if(C.find(S=>!r.has(S)))return jr("missing-input-fingerprint");if(p=Xs([...C,...i]),p.some(S=>cy(r.get(S))))return jr("unreadable-input");g="dependency-closure"}let y=p.map(C=>eN(r.get(C)));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 QL(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 ZL(e,t,n){let r=n.get(e);if(r)return r;let i=QL(e,t);return n.set(e,i),i}function eN(e){return{path:e.path,size:e.size,hash:e.hash}}function cy(e){return e.size<0||e.hash==="unreadable"}function jr(e){return{version:1,key:null,mode:"unkeyed",inputFiles:[],reasons:[e]}}function Xs(e){return[...new Set(e)].sort()}var iN=J("typescript-semantic-identity-context",{clearGroups:["whole-project"]});function vn(e,t,n){let r=iN.get(e,()=>oN(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 Hi(e){return N(e,{includeIgnored:!1}).filter(kt).sort()}function oN(e){try{let t=JSON.parse(tN(rN(nN(e.config.dbPath),"meta.json"),"utf8")),n=Ug(t.fingerprint);return n?{builder:Qs({projectFiles:Hi(e),snapshot:n,graph:ie(e),engineIdentity:zs()}),identities:new Map}:null}catch{return null}}var fu="typescript-reference-fragment-v2",ea=oe({kind:"typescript-reference-fragments",invalidation:K("typescript-reference-fragments"),serialize:e=>JSON.stringify(e),deserialize:aN});function a7(e,t,n,r=e){let i=Hi(e),o=Qs({projectFiles:i,snapshot:t,graph:ie(e),engineIdentity:zs()}),s=[...n].map(([a,c])=>({relativePath:a,contentHash:o.identityFor(a,fu).key,value:[...c]}));if(s.some(a=>a.contentHash===null))throw new Error("TypeScript reference fragment identity is unavailable for an affected document.");return ea.writeBatch(r,s.map(a=>({...a,contentHash:a.contentHash}))),s.length}function pu(e,t,n){let r=t.filter(o=>kt(o.relativePath));if(r.length===0)return Zs("no TypeScript definitions");let i=Zs("shadow did not run");return w("typescript.reference-fragments.shadow",()=>{try{let o=Or(e,r[0].relativePath);if(!o.availability().available||!o.referenceFragmentsForFiles)return i=Zs("TypeScript reference fragment provider is unavailable"),i;let s=Hi(e),a=new Set(s),c=o.referenceFragmentsForFiles(s),l=qs(r,c),u=Wh(r,sN(n,a),l);if(!u.passed)return i={state:"failing",files:s.length,keyedFiles:0,writtenFiles:0,...u},i;let d=[];for(let m of s){let f=vn(e,m,fu);f?.key&&d.push({relativePath:m,contentHash:f.key,value:c.get(m)??[]})}return ea.writeBatch(e,d),i={state:"passing",files:s.length,keyedFiles:d.length,writtenFiles:d.length,...u},i}catch(o){return i=Zs(o instanceof Error?o.message:String(o)),i}},()=>({...i}))}function sN(e,t){return new Map([...e].map(([n,r])=>[n,r.filter(i=>t.has(i.file))]))}function gu(e,t){if(t.length===0)return{references:new Map,files:0,cacheHits:0,cacheMisses:0,computedFiles:0};let n="fallback",r=0,i=0,o=0,s=0;return w("typescript.reference-fragments.materialize",()=>{try{let a=Hi(e);r=a.length;let c=new Map,l=new Map,u=[];for(let f of a){let p=vn(e,f,fu);if(!p?.key)return null;c.set(f,p.key);let g=ea.read(e,f,p.key);g===null?(o+=1,u.push(f)):(i+=1,l.set(f,g))}if(o===0)return n="hit",{references:qs(t,l),files:r,cacheHits:i,cacheMisses:o,computedFiles:s};let d=Or(e,t[0].relativePath);if(!d.availability().available||!d.referenceFragmentsForFiles)return null;let m=d.referenceFragmentsForFiles(u);if(u.some(f=>!m.has(f)))return null;s=m.size,ea.writeBatch(e,u.map(f=>({relativePath:f,contentHash:c.get(f),value:m.get(f)??[]})));for(let[f,p]of m)l.set(f,p);return n="computed",{references:qs(t,l),files:r,cacheHits:i,cacheMisses:o,computedFiles:s}}catch{return null}},()=>({state:n,files:r,cacheHits:i,cacheMisses:o,computedFiles:s}))}function Zs(e){return{state:"unavailable",files:0,keyedFiles:0,writtenFiles:0,expectedCount:0,actualCount:0,missing:[],extra:[],reason:e}}function aN(e){try{let t=JSON.parse(e);return!Array.isArray(t)||!t.every(cN)?null:t}catch{return null}}function cN(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 lN="typescript-import-usage-v1",uN="typescript-signatures-v1",hu=J("semantic-prefetched-callees",{clearGroups:["whole-project","source-file","semantic-provider"]}),ly=On({kind:"semantic-import-usage",invalidation:K("semantic-import-usage"),serialize:e=>JSON.stringify(e),deserialize:Cy}),uy=On({kind:"semantic-signatures",invalidation:K("semantic-signatures"),serialize:e=>JSON.stringify(e),deserialize:SN}),dy=oe({kind:"typescript-import-usage",invalidation:K("typescript-import-usage"),serialize:e=>JSON.stringify(e),deserialize:Cy}),my=oe({kind:"typescript-signatures",invalidation:K("typescript-signatures"),serialize:e=>JSON.stringify(e),deserialize:CN});function We(e){let t=new Map,n=new Set;return{capability:(r,i)=>xy(e,r,i),importUsage:r=>mN(e,r),references:r=>gy(e,r),materializeReferences:(r,i)=>yy(e,r,t,n,i),callerMap:r=>fN(e,r,t,n),calleeMap:r=>hN(e,r),signature:r=>yN(e,r)}}function dN(e,t){if(t.size===0)return;let n=hu.get(e,()=>new Map);for(let[r,i]of t)n.set(r,[...i])}function py(e,t){if(!hu.has(e))return{hits:[],misses:[...t]};let n=hu.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 Wi(e,t){return We(e).importUsage(t)}function mN(e,t){if(De(t)==="typescript"){let o="fallback",s=0,a=0,c=0,l=0;return w("typescript.import-usage.materialize",()=>{let u=vn(e,t,lN);if(u?.key){s=1;let m=dy.read(e,t,u.key);if(m)return o="hit",a=1,m;c=1;let f=Pt(e,t);if(!f)return o="unavailable",[];let p=f.importUsage(t);return dy.write(e,t,u.key,p),o="computed",p}l=1;let d=Pt(e,t);return d?(o="direct-fallback",d.importUsage(t)):(o="unavailable",[])},()=>({state:o,eligible:s,cacheHits:a,cacheMisses:c,fallbacks:l}))}let n=Sy(e,"semantic-import-usage",t);if(n){let o=ly.read(e,t,n);if(o)return o}let r=Pt(e,t);if(!r)return[];let i=r.importUsage(t);return n&&ly.write(e,t,n,i),i}function ta(e,t){return We(e).references(t)}function gy(e,t){let n=mu(e,t);if(n)return n;let r=Lg(e,t);if(r)return r;let i=Pt(e,t.relativePath);return i?i.referencesFor(t):[]}function In(e,t){return We(e).callerMap(t)}function hy(e,t){let n=new Map,r=new Map;for(let i of t){if(De(i.relativePath)==="typescript"){let o=Pt(e,i.relativePath);if(!o)continue;let s=r.get(o)??[];s.push(i),r.set(o,s);continue}yu(e,n,i,gy(e,i))}for(let[i,o]of r){let s=gu(e,o),a=s?.references??(i.referencesForDefinitions?i.referencesForDefinitions(o,{exact:!0}):new Map(o.map(c=>[c.symbolId,i.referencesFor(c)])));!s&&U()&&pu(e,o,a);for(let c of o)yu(e,n,c,a.get(c.symbolId)??[])}return n}function fN(e,t,n=new Map,r=new Set){let i=new Map,o=yy(e,t,n,r),s=0;return w("semantic.callers.from-references",()=>{for(let a of t)s+=yu(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 yy(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,C=0,x=0,S=0,b=[],v=new Map,R=t.filter(D=>De(D.relativePath)==="typescript"&&!n.has(D.symbolId)&&!r.has(D.symbolId)),E=gu(e,R);if(E){h=R.length,C=E.cacheHits,x=E.cacheMisses,S=E.computedFiles;for(let D of R)n.set(D.symbolId,E.references.get(D.symbolId)??[])}if(w("semantic.references.cache-scan",()=>{for(let[D,k]of Ps(t)){let L=[];for(let F of k)n.has(F.symbolId)?u+=1:r.has(F.symbolId)?y+=1:L.push(F);if(L.length===0){g+=1;continue}let ne=pN(e,o,D);if(!ne){for(let F of L)De(F.relativePath)||(l+=1),c.push(F);continue}p+=1;let X=Xm(e,D,ne);for(let F of L){let ae=X.get(F.symbol)??null;if(ae!==null){let Z=gN(ae);if(Z){d+=1,n.set(F.symbolId,Z);continue}m+=1}a.push({definition:F,cacheFingerprint:ne})}}},()=>({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){b=[...c,...a.map(D=>D.definition)],v=w("semantic.references.compute-misses",()=>{let D=bu(e,b,i);return f=D.size,D},()=>({definitions:b.length,misses:a.length,unkeyed:c.length,rows:f}));for(let D of b)v.has(D.symbolId)?(n.set(D.symbolId,v.get(D.symbolId)??[]),r.delete(D.symbolId)):r.add(D.symbolId);for(let{definition:D,cacheFingerprint:k}of a)v.has(D.symbolId)&&xy(e,"semantic-references",D.relativePath).available&&s.push({relativePath:D.relativePath,symbol:D.symbol,projectFingerprint:k,payload:JSON.stringify(v.get(D.symbolId)??[])})}return s.length>0&&w("semantic.references.cache-write",()=>Zm(e,s),()=>({entries:s.length})),v.size>0&&pu(e,b,v),{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:C,fragmentCacheMisses:x,fragmentComputedFiles:S}}function pN(e,t,n){if(!t)return null;let r=De(n);return r==="typescript"?t:r==="rust"?he(JSON.stringify({kind:"semantic-references",language:r,engine:qn(e.config.projectRoot),projectFingerprint:t})):null}function bu(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 w("semantic.references.provider-loop",()=>{let p=ay(e,t),g=Fg(e,t),y=new Map,h=n.prefetchCallees?new Map:null,C=[];for(let S of t){let b,v=()=>(b??=Pt(e,S.relativePath),b);if(h){let k=v();if(k?.referencesAndCalleesForDefinitions){let L=h.get(k);L?L.push(S):h.set(k,[S]),f+=1}}let R=p.get(S.symbolId);if(R){a+=1,c+=R.length,Ui(i,S.symbolId,R,r,k=>{d+=1,m+=k});continue}let E=g.get(S.symbolId);if(E){l+=1,u+=E.length,Ui(i,S.symbolId,E,r,k=>{d+=1,m+=k});continue}let D=v();if(!D){r&&(s+=1);continue}if(r&&(o+=1),D.referencesForDefinitions){let k=y.get(D);k?k.push(S):y.set(D,[S])}else C.push({provider:D,definition:S})}let x=new Set;if(h)for(let[S,b]of h){if(!S.referencesAndCalleesForDefinitions)continue;let v=y.get(S)??[],R=S.referencesAndCalleesForDefinitions(v,b);x.add(S),dN(e,R.callees);for(let E of v){if(!R.references.has(E.symbolId))continue;let D=R.references.get(E.symbolId)??[];Ui(i,E.symbolId,D,r,k=>{d+=1,m+=k})}}for(let[S,b]of y){if(x.has(S))continue;let v=S.referencesForDefinitions(b);for(let R of b){if(!v.has(R.symbolId))continue;let E=v.get(R.symbolId)??[];Ui(i,R.symbolId,E,r,D=>{d+=1,m+=D})}}for(let{provider:S,definition:b}of C){let v=S.referencesFor(b);Ui(i,b.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 Ui(e,t,n,r,i){e.set(t,n),r&&n.length>0&&i(n.length)}function yu(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 gN(e){try{return JSON.parse(e)}catch{return null}}function na(e,t){return We(e).calleeMap(t)}function hN(e,t){let n=U(),r=new Map,i=0,o=0,s=0,a=0;return w("semantic.callees.provider-loop",()=>{let c=new Map,l=[];for(let u of t){let d=Pt(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)??[];fy(r,f.symbolId,p,n,g=>{s+=1,a+=g})}}for(let{provider:u,definition:d}of l){let m=u.calleesFor(d);fy(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 fy(e,t,n,r,i){n.length>0&&(e.set(t,n),r&&i(n.length))}function by(e,t){return We(e).signature(t)}function yN(e,t){if(De(t.relativePath)==="typescript"){let s="fallback",a=0,c=0,l=0,u=0;return w("typescript.signature.materialize",()=>{let d=vn(e,t.relativePath,uN);if(d?.key){a=1;let f=my.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=Pt(e,t.relativePath);if(!p)return s="unavailable",null;let g=p.signatureFor(t);return my.write(e,t.relativePath,d.key,{...f,[t.symbol]:g}),s="computed",g}u=1;let m=Pt(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=Sy(e,"semantic-signatures",t.relativePath),r=bN(t);if(n){let s=uy.read(e,r,n);if(s)return s.signature}let i=Pt(e,t.relativePath);if(!i)return null;let o=i.signatureFor(t);return n&&uy.write(e,r,n,{signature:o}),o}function Sy(e,t,n){let r=Te(e);if(!r)return null;let i=De(n);return i!=="rust"?null:he(JSON.stringify({kind:t,language:i,engine:qn(e.config.projectRoot),projectFingerprint:r}))}function bN(e){return`${e.relativePath}\0${e.symbol}`}function Cy(e){try{let t=JSON.parse(e);return Array.isArray(t)?t:null}catch{return null}}function SN(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 CN(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 xy(e,t,n){let r=De(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,...Or(e,n).availability()}}catch(i){return{slot:t,language:r,available:!1,reason:i instanceof Error?i.message:String(i)}}}function Pt(e,t){if(!De(t))return null;let n=Or(e,t);return n.availability().available?n:null}var H={references:ta,referenceMap:bu,callerMap:(e,t)=>We(e).callerMap(t),calleeMap:Su};function Su(e,t){let n=U(),r=new Map,i=py(e,t),o=[],s=[],a=0,c=0,l=0,u=0,d=0,m=0,f=0;for(let{definition:x,callees:S}of i.hits)d+=1,S.length>0&&(m+=1,f+=S.length,r.set(x.symbolId,S));let p=xN(e,i.hits);if(p.entries.length>0&&w("semantic.callees.prefetch-cache-write",()=>wc(e,p.entries),()=>({entries:p.entries.length,sourceMissing:p.sourceMissing,skippedUnsupportedLanguage:p.skippedUnsupportedLanguage})),w("semantic.callees.cache-scan",()=>{for(let[x,S]of Ps(i.misses)){if(!De(x)){n&&(a+=S.length);continue}let b=P(e,x);if(!b){n&&(c+=S.length),s.push(...S);continue}let v=ce(e,x,b),R=Ry(e,x);if(!R){s.push(...S);continue}let E=Ym(e,x,v,R);for(let D of S){let k=E.get(D.symbol)??null;if(k!==null){let L=vN(k);if(L){n&&(l+=1),L.length>0&&r.set(D.symbolId,L);continue}n&&(u+=1)}o.push({def:D,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(x=>x.def)],y=0,h=w("semantic.callees.compute-misses",()=>{let x=na(e,g);return y=x.size,x},()=>({definitions:g.length,misses:o.length,unkeyed:s.length,rows:y}));for(let[x,S]of h)r.set(x,S);let C=o.filter(x=>We(e).capability("semantic-callees",x.def.relativePath).available).map(x=>({relativePath:x.def.relativePath,symbol:x.def.symbol,contentHash:x.contentHash,depsDigest:x.depsDigest,payload:JSON.stringify(h.get(x.def.symbolId)??[])}));return C.length>0?w("semantic.callees.cache-write",()=>wc(e,C),()=>({entries:C.length})):w("semantic.callees.cache-write-skip",()=>{},()=>({reason:"provider-unavailable",misses:o.length})),r}function xN(e,t){let n=[],r=new Map,i=0,o=0;for(let{definition:s,callees:a}of t){if(!De(s.relativePath)){o+=1;continue}if(!r.has(s.relativePath)){let l=P(e,s.relativePath),u=l?Ry(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 RN="typescript-callees-v1";function Ry(e,t){let n=De(t);if(n==="typescript")return vn(e,t,RN)?.key??null;let r=wN(e,t);return n==="rust"?he(JSON.stringify({kind:"semantic-callees",language:n,engine:qn(e.config.projectRoot),positionMapping:"nearby-leaf-v1",depsDigest:r})):r}function vN(e){try{return JSON.parse(e)}catch{return null}}var IN=j("semantic-deps-digest",{clearGroups:["whole-project","source-file"]});function wN(e,t){return IN.get(e,t,()=>{let r=[...ie(e).get(t)??[]].sort().map(i=>`${i}:${ce(e,i,P(e,i))}`);return he(r.join("|"))})}function j7(e,t,n={}){let r=B(e,t);if(!r)return[];let o=!ee(r.symbol)&&!e.isIgnored(r.relativePath)?[{relativePath:r.relativePath,line:r.startLine}]:[],s=Dt(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=EN(t.symbol);if(n.length===0)return[];let r=[];for(let i of N(e,{extensions:[".rb"],includeIgnored:!1})){let o=P(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 EN(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 vy,isAbsolute as PN,join as TN}from"path";function Oe(e,t){let n=Iy(e,t,{allowMultiple:!1})[0]?.relativePath;return n||_N(e,t)}function Br(e,t){return Iy(e,t,{allowMultiple:!0}).map(n=>n.relativePath)}function _N(e,t){if(!t)return null;let n=t.replace(/\\/g,"/").replace(/^\.\//,""),r=PN(n)&&n.startsWith(e.config.projectRoot)?n.slice(e.config.projectRoot.length).replace(/^\/+/,""):n,i=TN(e.config.projectRoot,r);return kN(i)?r:null}function Iy(e,t,n){let r=wy(t);if(!r)return[];let i=N(e,{includeIgnored:!1}).map(a=>({relativePath:a,score:FN(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 FN(e,t){let n=wy(e),r=vy(n),i=vy(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 wy(e){return e.trim().replace(/\\/g,"/").replace(/^\.\//,"").replace(/^\/+/,"").replace(/\/+$/,"")}function K7(e,t){let n=Br(e,t),r=hs(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&&!xf(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 Dy}from"fs";import{extname as LN,join as Ey}from"path";function tee(e,t,n={}){let{context:r=0}=n,i=NN(t);if(i)return MN(e,i.filePath,i.startLine,i.endLine,r);let o=B(e,t);return o?AN(e,o,r):null}function NN(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 AN(e,t,n){let r=e.get("SELECT language FROM documents WHERE relative_path = ?",t.relativePath),i=Ey(e.config.projectRoot,t.relativePath),o;try{o=Dy(i,"utf-8")}catch{return null}let s=o.split(`
283
+ ${r}`,...i)}function zT(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 Ts(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 Sg(e){let t=new Map,n=qT(e),r=new Map;return i=>{let o=VT(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=KT(Q(e,i.file)),t.set(i.file,a));let c=JT(a,i);return r.set(o,c),c}}function VT(e){return`${e.file}\0${e.symbol}\0${e.line}`}function qT(e){return new Set(e.all("SELECT relative_path FROM documents").map(t=>t.relative_path))}function KT(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 JT(e,t){if(e.definitions.length===0)return t.symbol;let n=QT(t.symbol),r=YT(e.byLeaf,n),i=XT(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 YT(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 XT(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 QT(e){let t=new Set([e]),r=e.split(/::|\.|#/).filter(Boolean).at(-1);return r&&t.add(r),t}function Cg(e,t){let r=re(e,t).map(i=>e_(t,i));return{usage:r,positions:t_(e,t,r)}}function xg(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?ZT(r.usage,i.sourcePaths):r.usage}}}function ZT(e,t){return e.map((n,r)=>{let i=t.get(String(r));return i?{...n,sourcePath:i}:n})}function e_(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 t_(e,t,n){let r=q(e,t);if(!r)return[];let i=n_(r.rootNode),o=new Map;for(let a of i){let c=o.get(Dl(a.importedName,a.localName));c?c.push(a.position):o.set(Dl(a.importedName,a.localName),[a.position])}let s=[];return n.forEach((a,c)=>{let l=o.get(Dl(a.importedName,a.localName??a.importedName))?.shift();l&&s.push({...l,id:String(c),file:t})}),s}function n_(e){let t=[];for(let n of e.descendantsOfType("use_declaration")){let r=n.namedChildren.find(i=>i.type!=="visibility_modifier");r&&t.push(..._s(r,""))}return t.filter(n=>n.importedName!=="*")}function _s(e,t){switch(e.type){case"identifier":case"super":case"self":case"crate":return[{importedName:e.text,localName:e.text,position:wl(e,e.text)}];case"scoped_identifier":{let n=e.text.split("::").pop()??e.text;return[{importedName:n,localName:n,position:wl(e,n)}]}case"scoped_use_list":{let n=e.namedChild(0),r=e.namedChild(1);if(!n||!r)return[];let i=kr(t,n.text);return r.namedChildren.flatMap(o=>_s(o,i))}case"use_list":return e.namedChildren.flatMap(n=>_s(n,t));case"use_as_clause":{let n=e.namedChild(0),r=e.namedChild(1);return!n||!r?[]:_s(n,t).map(i=>({...i,localName:r.text}))}case"use_wildcard":{let n=e.namedChild(0),r="*";return[{importedName:r,localName:r,position:wl(n??e,r)}]}default:return[]}}function wl(e,t){let n=Math.max(0,e.text.lastIndexOf(t));return{id:"",file:"",line:e.startPosition.row,column:e.startPosition.column+n+r_(t)}}function r_(e){return Math.max(0,Math.min(e.length-1,1))}function Dl(e,t){return`${e}\0${t}`}import{spawnSync as Gl}from"child_process";import{existsSync as zl}from"fs";import{fileURLToPath as DF}from"url";function xn(e){if(!e)return;let t=Number(e);return Number.isInteger(t)&&t>0?t:void 0}import{execFileSync as Dg}from"child_process";import{existsSync as kl,readFileSync as l_}from"fs";import{createRequire as u_}from"module";import{platform as Eg}from"os";import{dirname as wg,join as Fs}from"path";import{execFileSync as Rg,spawnSync as i_}from"child_process";import{platform as o_}from"os";var vg=o_()==="win32";function EZ(e,t=i_){try{return t(e,["--version"],{stdio:"ignore",timeout:1e4}).status===0}catch{return!1}}function El(e){let t=vg?"where":"which";try{return Rg(t,[e],{stdio:"pipe"}),!0}catch{return!1}}var s_=/\.(?:c|m)?js$/i,a_=/\.(?:exe|com)$/i;function kZ(e,t){return s_.test(e)?{binary:process.execPath,args:[e,...t]}:{binary:e,args:[...t]}}function c_(e,t){return Rg(e,t,{stdio:["ignore","pipe","ignore"],encoding:"utf8"})}function Ig(e,t={}){let n=t.isWindows??vg,r=t.lookup??c_,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=>a_.test(s))??null:o[0]??null}var d_=u_(import.meta.url),kg={language:"rust",indexerBinary:"rust-analyzer",installUrl:"https://github.com/rust-lang/rust-analyzer"};function Pl(e){return[e.indexerBinary,...e.binaryAliases??[]]}function m_(e){let t=Pl(e);return t.length===1?t[0]:t.join(" or ")}function Tl(e){for(let t of Pl(e))if(Eg()==="win32"){let n=Ig(t);if(n)return n}else if(El(t))return t;return p_(e)}function MZ(e){return Tl(e)!==null||f_(e)}function f_(e){return Pg(e)!==null}function p_(e){let t=Pg(e);if(!t)return null;let r=JSON.parse(l_(t,"utf8")).bin;if(!r)return null;if(typeof r=="string")return Fs(wg(t),r);for(let i of Pl(e)){let o=r[i];if(o)return Fs(wg(t),o)}return null}function Pg(e){if(!e.bundledNpmPackage)return null;try{return d_.resolve(`${e.bundledNpmPackage}/package.json`)}catch{return null}}function g_(e,t){for(let n of e.projectLocalBinaries??[]){let r=Fs(t,n);if(kl(r))return r}return null}function h_(e,t){return g_(e,t)??Tl(e)}function OZ(e,t=process.env,n=e.indexerBinary){if(e.indexerBinary!=="scip-dotnet"||_l(n,t))return t;let r=_g(n,t);return r?{...t,DOTNET_ROOT:r}:t}function Tg(e,t){let n=m_(e),r=t?h_(e,t):Tl(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=y_(r);return{language:e.language,binaryLabel:n,installed:!0,runnable:i.runnable,resolvedBinary:r,installUrl:e.installUrl,note:i.note}}function y_(e){if(_l(e,process.env))return{runnable:!0};let t=_g(e,process.env);if(t)return{runnable:!0,note:`using .NET 9 runtime from ${t}`};let n=Fg(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 _g(e,t){for(let n of Fg(t))if(_l(e,{...t,DOTNET_ROOT:n}))return n;return null}function Fg(e){let t=[],n=e.DOTNET_ROOT;if(n&&kl(n)&&t.push(n),Eg()==="darwin"&&El("brew"))try{let r=Dg("brew",["--prefix","dotnet@9"],{stdio:"pipe",env:e}).toString().trim(),i=Fs(r,"libexec");kl(i)&&!t.includes(i)&&t.push(i)}catch{}return t}function _l(e,t){try{return Dg(e,["--version"],{stdio:"pipe",env:t}),!0}catch{return!1}}function Ls(e){let t=Tg(kg,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 dF,mkdtempSync as lh,readFileSync as uh,rmSync as jl}from"fs";import{tmpdir as Hl}from"os";import{join as Bl}from"path";import{fileURLToPath as Ni,pathToFileURL as mF}from"url";import{SHARE_ENV as fF,Worker as pF}from"worker_threads";function ct(e){try{return process.kill(e,0),!0}catch(t){return typeof t=="object"&&t!==null&&"code"in t&&t.code==="EPERM"}}function Rn(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 Vn(e,t,n){let r=xn(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 Q_}from"child_process";import{createHash as Z_,randomUUID as eF}from"crypto";import{existsSync as nh,mkdirSync as Xg,readFileSync as js,realpathSync as tF,rmSync as Ml}from"fs";import{tmpdir as nF}from"os";import{resolve as Et}from"path";import{mkdirSync as b_,renameSync as S_,writeFileSync as C_}from"fs";import{dirname as x_}from"path";function _e(e,t,n={}){b_(x_(e),{recursive:!0});let r=`${e}.${process.pid}.${Date.now()}.tmp`,i=JSON.stringify(t,null,n.spacing);C_(r,n.trailingNewline?`${i}
284
+ `:i),S_(r,e)}import{execFileSync as T_}from"child_process";import{existsSync as R_,readFileSync as v_}from"fs";import{deserializeSCIP as I_,SymbolRole as w_}from"@c4312/scip";import{existsSync as KZ,readFileSync as JZ}from"fs";import{relative as XZ,resolve as QZ,sep as ZZ}from"path";import{fileURLToPath as t3,pathToFileURL as n3}from"url";function Ns(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 Fl=new WeakMap,D_="SCIP_RUST_SCIP_OCCURRENCE_REFERENCE_MODE";function Lg(e,t){let n=new Map,r=As(),i=t.filter(s=>Mg(s,r));if(i.length===0)return n;let o=Og(e);if(!o)return n;for(let s of i){let a=Ag(o,s);a!==null&&n.set(s.symbolId,a)}return n}function Ng(e,t){if(!Mg(t,As()))return null;let n=Og(e);return n?Ag(n,t):null}function Ag(e,t){return e.referencesBySymbol.get(t.symbol)??[]}function Mg(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:!E_(r)}function E_(e){for(let t=0;t<e.descriptors.length-1;t+=1)if(e.descriptors[t]?.suffix==="type")return!0;return!1}function Og(e){if(Fl.has(e))return Fl.get(e)??null;let t=k_(e);return Fl.set(e,t),t}function k_(e){if(!R_(e.config.indexPath))return null;try{let t=I_(v_(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&w_.Definition)!==0)continue;let s=P_(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,Ns(i));return{referencesBySymbol:n}}catch{return null}}function P_(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 As(){return process.env[D_]==="all"?"all":"safe"}var jg=new Map;function Ll(e){let n=Ls(e).resolvedBinary??null;return{engine:"rust-analyzer",resolvedBinary:n,version:n?__(e,n):"unavailable"}}function qn(e){return{...Ll(e),scipOccurrenceReferenceMode:As()}}function __(e,t){let n=`${e}\0${t}`,r=jg.get(n);if(r)return r;let i;try{i=T_(t,["--version"],{cwd:e,encoding:"utf8",stdio:["ignore","pipe","ignore"],timeout:2e3}).trim()}catch{i="unknown"}return jg.set(n,i),i}import{createHash as J_}from"crypto";import{execFileSync as A_}from"child_process";import{createHash as Vg}from"crypto";import{lstatSync as M_,readdirSync as O_,readFileSync as j_,readlinkSync as B_,realpathSync as qg}from"fs";import{isAbsolute as $_,join as Kg,relative as H_,sep as U_}from"path";function Nl(e,t){let n=e.split("/").at(-1)??e;if(Gg.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=>(zg[i]??[]).includes(r))?"source":"other"}function Ug(e,t,n){let r=e.split("/").at(-1)??e;if(n?.includes(e)||n?.includes(r)||Gg.has(r))return!0;let i=e.includes(".")?`.${e.split(".").at(-1).toLowerCase()}`:"";return(zg[t]??[]).includes(i)}function Wg(e){if(typeof e!="object"||e===null)return null;let t=e;return typeof t.version!="number"||!Bg(t.languages)||typeof t.pnpmWorkspaces!="boolean"||typeof t.typescriptProjectMode!="string"||!Bg(t.typescriptProjects)||t.clojureConfigPath!==void 0&&typeof t.clojureConfigPath!="string"||!Array.isArray(t.files)||!t.files.every(F_)?null:t}function f3(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=Nl(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"),($g(e?.files??[])||$g(t.files))&&s.add("duplicate-input-path"),[...e?.files??[],...t.files].some(L_)&&s.add("unreadable-input"),{version:1,changes:o,projectIdentityChanged:e?!N_(e,t):!0,uncertainty:[...s].sort()}}function Bg(e){return Array.isArray(e)&&e.every(t=>typeof t=="string")}function $g(e){return new Set(e.map(t=>t.path)).size!==e.length}function F_(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 L_(e){return e.hash==="unreadable"||e.size<0}function N_(e,t){return Hg(e.languages,t.languages)&&e.pnpmWorkspaces===t.pnpmWorkspaces&&e.typescriptProjectMode===t.typescriptProjectMode&&Hg(e.typescriptProjects,t.typescriptProjects)&&e.clojureConfigPath===t.clojureConfigPath}function Hg(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 Gg=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"]),zg={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 W_(e){return[...new Set((e??[]).map(t=>t.trim()).filter(Boolean))].sort((t,n)=>t.localeCompare(n))}function G_(e){return(V_(e)??q_(e)).filter(t=>t&&!Jg(t)).sort()}function Al(e,t={}){let n=G_(e).filter(i=>!t.language||Ug(i,t.language,t.markerFiles)).filter(i=>!t.includePath||t.includePath(i)),r=qg(e);return n.map(i=>{let o=Kg(e,i);try{if(M_(o).isSymbolicLink()){let a=qg(o),c=H_(r,a);if(c===".."||c.startsWith(`..${U_}`)||$_(c))throw new Error("external symlink");let l=B_(o);return{path:i,size:Buffer.byteLength(l),hash:Vg("sha256").update("symlink\0").update(l).digest("hex")}}let s=j_(o);return{path:i,size:s.byteLength,hash:Vg("sha256").update(s).digest("hex")}}catch{return{path:i,size:-1,hash:"unreadable"}}})}function Pi(e,t,n){return{version:2,languages:[...t].sort(),pnpmWorkspaces:n.typescriptProjectMode!=="workspace"&&n.pnpmWorkspaces===!0,typescriptProjectMode:n.typescriptProjectMode??"single",typescriptProjects:W_(n.typescriptProjects),clojureConfigPath:z_(n.clojureConfigPath),files:Al(e)}}function z_(e){return e?.trim()||void 0}function V_(e){try{return A_("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 q_(e){let t=[],n=[""];for(;n.length>0;){let r=n.pop(),i=r?Kg(e,r):e,o;try{o=O_(i,{withFileTypes:!0})}catch{continue}for(let s of o){let a=r?`${r}/${s.name}`:s.name;if(s.isDirectory()){Jg(a)||n.push(a);continue}t.push(a)}}return t}function Jg(e){let t=e.split("/");return e==="meta.json"||t.some(n=>K_.has(n))||e.endsWith(".db")||e.endsWith(".db-wal")||e.endsWith(".db-shm")||e.endsWith(".scip")}var K_=new Set([".git","node_modules",".scipquery-cache",".scipquery-generations",".stryker-tmp","dist","build","coverage",".next",".nuxt","target"]);var Y_=new Set(["Cargo.lock","Cargo.toml","rust-project.json","rust-toolchain","rust-toolchain.toml"]);function Yg(e){let t=Al(e,{includePath:X_});return J_("sha256").update(JSON.stringify(t)).digest("hex")}function X_(e){let t=e.replaceAll("\\","/"),n=t.split("/").at(-1)??t;return t.endsWith(".rs")||Y_.has(n)?!0:t===".cargo/config"||t===".cargo/config.toml"||t.endsWith("/.cargo/config")||t.endsWith("/.cargo/config.toml")}var rh=2,rF=5e3,iF=5e3,ih=10,oF=3e4;function Qg(e,t,n,r=ch){let i=r.engineIdentity(e),o={protocolVersion:rh,projectRoot:r.canonicalProjectRoot(e),projectFingerprint:r.projectFingerprint(e),engine:{engine:i.engine,resolvedBinary:i.resolvedBinary,version:i.version},workerFingerprint:r.fileFingerprint(t),environment:oh(r.environment())};return{key:Os(Ms(o)),...o}}function Ti(e,t,n){return e.protocolVersion===rh&&(t-e.heartbeatAtMs<=rF||e.busyUntilMs!==void 0&&t<=e.busyUntilMs)&&n(e.pid)}function Ol(e,t,n){let r;try{r=Os(js(t))}catch{r="missing"}let i=Os(Ms({projectRoot:Et(e),serverPath:Et(t),serverFingerprint:r})).slice(0,20);return Et(n,`scip-query-rust-session-${i}`)}function Zg(e){let t=e===void 0?Number.NaN:Number(e);return Number.isInteger(t)&&t>=0?t:0}function oh(e){return Object.fromEntries(Object.entries(e).filter(([t])=>ah(t)).sort(([t],[n])=>t.localeCompare(n)).map(([t,n])=>[t,n??null]))}function sh(e,t){let n=t.runtime??uF,r=t.identityRuntime??ch,i=Ol(e,t.serverPath,t.tempRoot??nF()),o=!1,s=(a,c)=>{if(o)throw new Error("Durable Rust semantic session was already disposed.");return aF(i,t.serverPath,t.semanticWorkerPath,a,c,n)};return{requestSemantic(a,c){let l=Qg(e,t.semanticWorkerPath,a,r),u=n.now()+Math.max(1,c-1e3);return s({kind:"semantic",identityKey:l.key,workerEnvironment:th(),request:{...a,readinessDeadlineMs:u,referenceRetryTimeoutMs:sF(process.env.SCIP_RUST_SEMANTIC_REFERENCE_RETRY_TIMEOUT_MS,a.referenceRetryTimeoutMs),settleDelayMs:process.env.SCIP_RUST_SEMANTIC_SETTLE_MS===void 0?a.settleDelayMs:Zg(process.env.SCIP_RUST_SEMANTIC_SETTLE_MS)},timeoutMs:c},c)},requestImportDefinitions(a,c){let l=Qg(e,t.semanticWorkerPath,a,r),u=n.now()+Math.max(1,c-1e3);return s({kind:"import-definitions",identityKey:l.key,workerEnvironment:th(),request:{...a,readinessDeadlineMs:u,settleDelayMs:process.env.SCIP_RUST_SEMANTIC_SETTLE_MS===void 0?a.settleDelayMs:Zg(process.env.SCIP_RUST_SEMANTIC_SETTLE_MS)},timeoutMs:c},c)},shutdown(){o=!0}}}function sF(e,t){return t!==void 0?t:e===void 0?oF:void 0}function aF(e,t,n,r,i,o){let s=o.randomId(),a=o.now(),c=Et(e,"requests"),l=Et(e,"responses"),u=Et(c,`${s}.json`),d=Et(l,`${s}.json`);Xg(c,{recursive:!0}),Xg(l,{recursive:!0}),_e(u,{id:s,request:r});let m=o.now()+i;try{for(eh(e,t,n,m,o);o.now()<=m;){if(nh(d)){let p=cF(js(d,"utf8"));if(!p.ok)throw new Error(p.error);return U()&&mn({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||!Ti(f,o.now(),o.isProcessAlive))&&eh(e,t,n,m,o),o.sleep(ih)}throw new Error(`Durable Rust semantic session timed out after ${(i/1e3).toFixed(0)}s.`)}finally{Ml(u,{force:!0}),Ml(d,{force:!0})}}function eh(e,t,n,r,i){let o=_i(e);if(o&&Ti(o,i.now(),i.isProcessAlive))return;Ml(Et(e,"server.json"),{force:!0}),i.spawnServer(t,e,n);let s=Math.min(r,i.now()+iF);for(;i.now()<=s;){let a=_i(e);if(a&&Ti(a,i.now(),i.isProcessAlive))return;i.sleep(ih)}throw new Error("Durable Rust semantic session helper did not become ready within 5s.")}function _i(e){try{let t=JSON.parse(js(Et(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 cF(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 th(){return Object.fromEntries(Object.entries(process.env).filter(([e])=>lF(e)).sort(([e],[t])=>e.localeCompare(t)).map(([e,t])=>[e,t??null]))}function ah(e){return e==="HOME"||e==="PATH"||e.startsWith("CARGO_")||e.startsWith("RA_")||e.startsWith("RUST")}function lF(e){return ah(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 ch={canonicalProjectRoot(e){try{return tF(e)}catch{return Et(e)}},projectFingerprint(e){return Yg(e)},engineIdentity:Ll,fileFingerprint(e){return Os(js(e))},environment(){return oh(process.env)}},uF={now:Date.now,randomId:eF,isProcessAlive:ct,spawnServer(e,t,n){if(!nh(e))throw new Error(`Durable Rust semantic session helper was not found at ${e}. Run npm run build first.`);Q_(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 Ms(e){return Array.isArray(e)?`[${e.map(Ms).join(",")}]`:e&&typeof e=="object"?`{${Object.entries(e).sort(([t],[n])=>t.localeCompare(n)).map(([t,n])=>`${JSON.stringify(t)}:${Ms(n)}`).join(",")}}`:JSON.stringify(e)}function Os(e){return Z_("sha256").update(e).digest("hex")}var dh=15e3,mh=8,ph=5e3,gF=64,hF=96,Ul=class{constructor(t,n,r={}){this.projectRoot=t;this.status=n;this.opts=r;this.requester=r.requester??SF(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:Fi(t)};try{let r=this.requestSession(n.resolvedBinary,t,{includeReferences:!0});return{available:r.available,resolvedBinary:n.resolvedBinary,reason:r.reason,references:Rn(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:Fi(t)}}}calleesForDefinitions(t){let n=this.status(this.projectRoot);if(!n.available||!n.resolvedBinary)return{available:!1,resolvedBinary:n.resolvedBinary,reason:n.reason,callees:Li(t)};try{let r=this.requestSession(n.resolvedBinary,t,{includeReferences:!1,includeCallees:!0});return{available:r.available,resolvedBinary:n.resolvedBinary,reason:r.reason,callees:$l(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:Li(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:Fi(t),callees:Li(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:Rn(t,new Map(o.references),new Set(o.incompleteReferenceSymbolIds??[])),callees:$l(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:fh(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:IF(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:fh(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=Bs(process.env.SCIP_RUST_SEMANTIC_REQUEST_TIMEOUT_MS,dh),o=$s(process.env.SCIP_RUST_SEMANTIC_REFERENCE_RETRY_TIMEOUT_MS,0),s=Bs(process.env.SCIP_RUST_SEMANTIC_CONCURRENCY,mh),a=$s(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=Ai(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=wF(m);return w("rust.semantic.session.request",()=>this.requester.requestSemantic(m,Vn(f,Wl(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:Fi(n)}:this.opts.fallbackReferenceResolver?.referencesForDefinitions(n),s=r.length===0?{available:!0,callees:Li(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:Rn(n,o.references),callees:$l(r,s.callees)}:{available:!1,resolvedBinary:t.resolvedBinary,reason:i instanceof Error?i.message:String(i),references:Fi(n),callees:Li(r)}}requestImportDefinitions(t,n,r){let i=Bs(process.env.SCIP_RUST_SEMANTIC_REQUEST_TIMEOUT_MS,dh),o=Bs(process.env.SCIP_RUST_SEMANTIC_CONCURRENCY,mh),s=$s(process.env.SCIP_RUST_SEMANTIC_DIAGNOSTICS_TIMEOUT_MS,Math.min(i,1e4)),a=$s(process.env.SCIP_RUST_SEMANTIC_SETTLE_MS,ph),c={projectRoot:this.projectRoot,rustAnalyzerBinary:t,file:n,positions:[...r],requestTimeoutMs:i,diagnosticsTimeoutMs:s,settleDelayMs:a,concurrency:o};return w("rust.semantic.import-definitions.session.request",()=>this.requester.requestImportDefinitions(c,Vn(r.length,i,o)),()=>({file:n,positions:r.length}))}};function gh(e,t,n={}){return new Ul(e,t,n)}function Ai(e,t){let n=Sh(e);if(n!==null)return n;let r=t.includeReferences!==!1;return r&&t.includeCallees!==!0&&t.includeSignatures!==!0&&t.definitionCount<=gF||r&&t.includeCallees===!0&&t.includeSignatures!==!0&&t.definitionCount<=hF?0:ph}function hh(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 yF(e){return hh(e).transport}function z3(e,t){let n=hh(t);if(n.transport==="worker")return{...n,state:"per-command"};let r=Ni(bh()),i=Ol(e,r,Hl()),o=_i(i);return o?{...n,state:Ti(o,Date.now(),ct)?"live":"stale",pid:o.pid,heartbeatAtMs:o.heartbeatAtMs,...o.busyUntilMs===void 0?{}:{busyUntilMs:o.busyUntilMs}}:{...n,state:"stopped"}}function bF(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=vF(u);r=!0;try{a()}catch{}U()&&mn({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 SF(e,t,n={worker:()=>CF(),durable:()=>sh(e,{serverPath:Ni(bh()),semanticWorkerPath:Ni(yh())})}){return yF(t)==="durable"?bF(n.durable(),n.worker):n.worker()}function CF(e={}){let t=null,n=null,r=1,i=!1,o=()=>{n&&(jl(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?mF(e.semanticWorkerPath):yh();if(!dF(Ni(l)))throw new Error(`Rust semantic session worker was not found at ${Ni(l)}. Run npm run build before using built semantic Rust queries.`);return n=lh(Bl(Hl(),"scip-query-rust-session-")),t=new pF(l,e.shareEnvironment?{env:fF}:void 0),t.unref(),t},c=()=>{let l=n??lh(Bl(Hl(),"scip-query-rust-session-"));return n=l,Bl(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=xF(uh(m,"utf8"));if(!y.ok)throw new Error(y.error);return y.response}finally{jl(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=RF(uh(m,"utf8"));if(!y.ok)throw new Error(y.error);return y.response}finally{jl(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 xF(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 RF(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 vF(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 Fi(e){return new Map(e.map(t=>[t.symbolId,[]]))}function Li(e){return new Map(e.map(t=>[t.symbolId,[]]))}function fh(e){return new Map(e.map(t=>[t.symbolId,null]))}function $l(e,t){return new Map(e.map(n=>[n.symbolId,t.get(n.symbolId)??[]]))}function IF(e,t){return new Map(e.map(n=>[n.symbolId,t.get(n.symbolId)??null]))}function wF(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 Wl(e,t){return t&&t>0?Math.max(e,t):e}function yh(){return new URL("./rust-semantic-session-worker.js",import.meta.url)}function bh(){return new URL("./rust-semantic-session-server.js",import.meta.url)}function Bs(e,t){return xn(e)??t}function $s(e,t){return Sh(e)??t}function Sh(e){if(!e)return null;let t=Number(e);return Number.isInteger(t)&&t>=0?t:null}var Vl=15e3,ql=8;function vh(e,t={}){let n=t.status??Ls,r=PF(e,n),i=TF(e,n),o=_F(e,n),s=t.referenceResolver||t.calleeResolver||t.signatureResolver||!EF(t)?null:gh(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??xg(t.sourceImportUsageResolver??kF(),t.importDefinitionResolver??s),d=t.calleeSymbolResolver,m=t.sourceZeroCalleeOracle,f=t.scipOccurrenceCalleeOracle,p=new Map,g=new Map,y=null,h=null,C=()=>(y??=n(e),y),x=()=>{let E=C();return E.dependencyAvailable?h??E:E},S=E=>{if(E.length===0)return new Map;let D=Mi(E);try{let k=a.referencesForDefinitions(D),L=C();return h={...L,available:k.available,resolvedBinary:k.resolvedBinary??L.resolvedBinary,reason:k.reason??L.reason},k.available?new Map(k.references):Rn(D,k.references)}catch(k){return h={...C(),available:!1,reason:k instanceof Error?k.message:String(k)},Kn(D)}},b=E=>{if(E.length===0)return new Map;let D=Mi(E),k=D.filter(Ch);if(k.length===0)return Jn(D);let L=new Map,ne=Rh(k,f),X=[];for(let F of k)g.has(F.symbolId)?L.set(F.symbolId,g.get(F.symbolId)??[]):ne.has(F.symbolId)?L.set(F.symbolId,ne.get(F.symbolId)??[]):xh(F,m)?L.set(F.symbolId,[]):X.push(F);if(X.length===0)return Lr(D,L,void 0);try{let F=c.calleesForDefinitions(X),ae=C();h={...ae,available:F.available,resolvedBinary:F.resolvedBinary??ae.resolvedBinary,reason:F.reason??ae.reason};let Z=Lr(X,F.callees,d);for(let[ln,bc]of Z)L.set(ln,bc);return Lr(D,L,void 0)}catch(F){return h={...C(),available:!1,reason:F instanceof Error?F.message:String(F)},Jn(D)}},v=(E,D)=>{let k=Mi(E),L=Mi(D),ne=L.filter(Ch),X=new Map,F=Rh(ne,f),ae=[];for(let Z of ne)F.has(Z.symbolId)?X.set(Z.symbolId,F.get(Z.symbolId)??[]):xh(Z,m)?X.set(Z.symbolId,[]):ae.push(Z);if(k.length===0&&ae.length===0)return{references:Kn(k),callees:Lr(L,X,void 0)};try{let Z=s?s.referencesAndCalleesForDefinitions(k,ae):AF(a,c,{referenceDefinitions:k,calleeDefinitions:ae}),ln=C();h={...ln,available:Z.available,resolvedBinary:Z.resolvedBinary??ln.resolvedBinary,reason:Z.reason??ln.reason};let bc=Z.available?new Map(Z.references):Rn(k,Z.references);for(let[Sc,Cc]of Z.callees)X.set(Sc,Cc);let Wm=Lr(L,X,d);for(let[Sc,Cc]of Wm)g.set(Sc,Cc);return{references:bc,callees:Wm}}catch(Z){return h={...C(),available:!1,reason:Z instanceof Error?Z.message:String(Z)},{references:Kn(k),callees:Jn(L)}}},R=E=>{if(E.length===0)return new Map;let D=Mi(E);try{let k=l.signaturesForDefinitions(D),L=C();return h={...L,available:k.available,resolvedBinary:k.resolvedBinary??L.resolvedBinary,reason:k.reason??L.reason},Ih(D,k.signatures)}catch(k){return h={...C(),available:!1,reason:k instanceof Error?k.message:String(k)},Hs(D)}};return{language:"rust",availability:x,dispose:()=>{s?.dispose()},importUsage:E=>{let D=p.get(E);if(D)return D;try{let k=u.importUsage(E);return p.set(E,k),k}catch(k){return h={...C(),available:!1,reason:k instanceof Error?k.message:String(k)},[]}},referencesFor:E=>S([E]).get(E.symbolId)??[],referencesForDefinitions:S,referencesAndCalleesForDefinitions:v,calleesFor:E=>b([E]).get(E.symbolId)??[],calleesForDefinitions:b,signatureFor:E=>R([E]).get(E.symbolId)??null}}function EF(e){if(e.usePersistentSession!==void 0)return e.usePersistentSession;let t=process.env.SCIP_RUST_SEMANTIC_SESSION;return t!=="0"&&t!=="false"}function kF(){return{importUsageFacts:()=>({usage:[],positions:[]})}}function Mi(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:ee(t.symbol),isTypeLike:n.isTypeLike??!1,kind:n.kind??null,documentation:n.documentation??null,enclosingSymbol:n.enclosingSymbol??null}})}function Ch(e){return e.isFunctionLike}function xh(e,t){if(!t)return!1;try{return t(e)}catch{return!1}}function Rh(e,t){if(!t||e.length===0)return new Map;try{return t(e)}catch{return new Map}}function PF(e,t){return{referencesForDefinitions:n=>FF(e,t,n)}}function TF(e,t){return{calleesForDefinitions:n=>LF(e,t,n)}}function _F(e,t){return{signaturesForDefinitions:n=>NF(e,t,n)}}function FF(e,t,n){let r=t(e);if(!r.available||!r.resolvedBinary)return{available:!1,resolvedBinary:r.resolvedBinary,reason:r.reason,references:Kn(n)};let i=Kl();if(!zl(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:Kn(n)};let o=Nr(process.env.SCIP_RUST_SEMANTIC_REQUEST_TIMEOUT_MS,Vl),s=Us(process.env.SCIP_RUST_SEMANTIC_REFERENCE_RETRY_TIMEOUT_MS,0),a=Nr(process.env.SCIP_RUST_SEMANTIC_CONCURRENCY,ql),c=Us(process.env.SCIP_RUST_SEMANTIC_DIAGNOSTICS_TIMEOUT_MS,Math.min(o,1e4)),l=Ai(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=Gl(process.execPath,[i],{cwd:e,input:JSON.stringify(u),encoding:"utf8",maxBuffer:50*1024*1024,timeout:Vn(n.length,Wl(o,u.referenceRetryTimeoutMs),a)}),m=Jl(d.stdout);if(m)return{available:m.available,resolvedBinary:r.resolvedBinary,reason:m.reason,references:Rn(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:Kn(n)}}function LF(e,t,n){let r=t(e);if(!r.available||!r.resolvedBinary)return{available:!1,resolvedBinary:r.resolvedBinary,reason:r.reason,callees:Jn(n)};let i=Kl();if(!zl(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:Jn(n)};let o=Nr(process.env.SCIP_RUST_SEMANTIC_REQUEST_TIMEOUT_MS,Vl),s=Nr(process.env.SCIP_RUST_SEMANTIC_CONCURRENCY,ql),a=Us(process.env.SCIP_RUST_SEMANTIC_DIAGNOSTICS_TIMEOUT_MS,Math.min(o,1e4)),c=Ai(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=Gl(process.execPath,[i],{cwd:e,input:JSON.stringify(l),encoding:"utf8",maxBuffer:50*1024*1024,timeout:Vn(n.length,o,s)}),d=Jl(u.stdout);if(d)return{available:d.available,resolvedBinary:r.resolvedBinary,reason:d.reason,callees:Lr(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:Jn(n)}}function NF(e,t,n){let r=t(e);if(!r.available||!r.resolvedBinary)return{available:!1,resolvedBinary:r.resolvedBinary,reason:r.reason,signatures:Hs(n)};let i=Kl();if(!zl(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:Hs(n)};let o=Nr(process.env.SCIP_RUST_SEMANTIC_REQUEST_TIMEOUT_MS,Vl),s=Nr(process.env.SCIP_RUST_SEMANTIC_CONCURRENCY,ql),a=Us(process.env.SCIP_RUST_SEMANTIC_DIAGNOSTICS_TIMEOUT_MS,Math.min(o,1e4)),c=Ai(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=Gl(process.execPath,[i],{cwd:e,input:JSON.stringify(l),encoding:"utf8",maxBuffer:50*1024*1024,timeout:Vn(n.length,o,s)}),d=Jl(u.stdout);if(d)return{available:d.available,resolvedBinary:r.resolvedBinary,reason:d.reason,signatures:Ih(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:Hs(n)}}function AF(e,t,n){let r=n.referenceDefinitions.length>0?e.referencesForDefinitions(n.referenceDefinitions):{available:!0,references:Kn(n.referenceDefinitions)},i=n.calleeDefinitions.length>0?t.calleesForDefinitions(n.calleeDefinitions):{available:!0,callees:Jn(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 Kn(e){return new Map(e.map(t=>[t.symbolId,[]]))}function Jn(e){return new Map(e.map(t=>[t.symbolId,[]]))}function Hs(e){return new Map(e.map(t=>[t.symbolId,null]))}function Lr(e,t,n){let r=0,i=0;return w("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 Ih(e,t){return new Map(e.map(n=>[n.symbolId,t.get(n.symbolId)??null]))}function Kl(){return DF(new URL("./rust-semantic-worker.js",import.meta.url))}function Jl(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 Nr(e,t){return xn(e)??t}function Us(e,t){if(!e)return t;let n=Number(e);return Number.isInteger(n)&&n>=0?n:t}import{existsSync as MF,readFileSync as OF}from"fs";import{deserializeSCIP as jF,SymbolRole as BF}from"@c4312/scip";var Yl=new WeakMap;function Dh(e,t){let n=t.filter($F);if(n.length===0)return new Map;let r=!1,i=0,o=0;return w("rust.scip-occurrence.callees",()=>{let s=WF(e);if(r=!!s,!s)return new Map;let a=new Map;for(let c of n){let l=HF(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 $F(e){return!(!e.symbol.startsWith("rust-analyzer ")||!e.relativePath.endsWith(".rs")||!e.isFunctionLike||e.leaf==="main"||Ie(e.symbol))}function HF(e,t,n){let r=G(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)||!UF(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 UF(e,t){let n=wh(e),r=wh(t);if(n.size!==r.size)return!1;for(let[i,o]of n)if(r.get(i)!==o)return!1;return!0}function wh(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 WF(e){if(Yl.has(e))return Yl.get(e)??null;let t=GF(e);return Yl.set(e,t),t}function GF(e){if(!MF(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=jF(OF(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&BF.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 Ws=class{sessions=new WeakMap;getOrCreate(t,n,r){let i=zF(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 zF(e,t){return`${e.config.projectRoot}:${t}-workspace`}import{randomUUID as _L}from"crypto";import{existsSync as FL,mkdirSync as ey,readFileSync as LL,rmSync as ty}from"fs";import{dirname as NL,resolve as ny}from"path";import{readFileSync as VF}from"fs";import{join as Xl}from"path";var p6=4,Eh=5e3,qF="watch.lock",KF="watch-state.json",JF="watch-activity.json";function kh(e){return{lockPath:Xl(e,qF),statePath:Xl(e,KF),activityPath:Xl(e,JF)}}function Ql(e){try{return YF(JSON.parse(VF(e,"utf8")))}catch{return null}}function YF(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"||!yt(t.startedAt)||!yt(t.heartbeatAt)||!yt(t.lastActivityAt)||!XF(t.watcher)||t.idleDeadlineAt!==void 0&&!yt(t.idleDeadlineAt)||t.indexGeneration!==void 0&&!/^[a-f0-9]{64}$/.test(t.indexGeneration)||t.lastError!==void 0&&!QF(t.lastError)||t.lastRefresh!==void 0&&!ZF(t.lastRefresh)||t.typescriptSemantic!==void 0&&!eL(t.typescriptSemantic)||t.typescriptIndex!==void 0&&!tL(t.typescriptIndex)?null:t}function yt(e){return typeof e=="string"&&Number.isFinite(Date.parse(e))}function XF(e){if(!e||typeof e!="object"||!("state"in e))return!1;let t=e;switch(t.state){case"idle":return!0;case"waiting":return lt(t.changedFiles)&&lt(t.reindexAt);case"indexing":return lt(t.startedAt);case"cooldown":return lt(t.until)&&typeof t.dirty=="boolean";default:return!1}}function QF(e){if(!e||typeof e!="object")return!1;let t=e;return yt(t.at)&&typeof t.message=="string"}function ZF(e){if(!e||typeof e!="object")return!1;let t=e;return typeof t.trigger?.kind=="string"&&typeof t.result=="string"&&yt(t.startedAt)&&yt(t.completedAt)&&lt(t.durationMs)}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")&&lt(t.requests)&&lt(t.sessionsCreated)&&lt(t.sessionsReused)&&lt(t.sessionsRefreshed)&&lt(t.sessionsReplaced)&&lt(t.projectsCreated)&&(t.lastRequestAt===void 0||yt(t.lastRequestAt))&&(t.lastError===void 0||typeof t.lastError=="string")&&(t.busyUntil===void 0||yt(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")&&Yn(t.requests)&&Yn(t.sessionsCreated)&&Yn(t.sessionsReplaced)&&Yn(t.initializations)&&Yn(t.programUpdates)&&Yn(t.documentsEmitted)&&Yn(t.documentsRemoved)&&(t.lastRequestAt===void 0||yt(t.lastRequestAt))&&(t.lastDurationMs===void 0||lt(t.lastDurationMs)&&t.lastDurationMs>=0)&&(t.lastError===void 0||typeof t.lastError=="string")&&(t.busyUntil===void 0||yt(t.busyUntil))}function lt(e){return typeof e=="number"&&Number.isFinite(e)}function Yn(e){return typeof e=="number"&&Number.isInteger(e)&&e>=0}import{performance as W}from"perf_hooks";function ut(e,t,n){if(e.has(t))return e.get(t);let r=n();return e.set(t,r),r}import Ph from"path";function nL(e,t){return e.getReferences().map(n=>{let r=n.getNode();return Gs(r,t)})}function rL(e){let t=e;return typeof t.findReferences=="function"?t.findReferences():[]}function Th(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 Ar(i)}function _h(e,t,n,r){let i=[],o=n?.getStart();for(let s of e.getReferences()){let a=s.getNode();Mr(r,a.getSourceFile().getFilePath())===t&&(o!==void 0&&a.getStart()===o||i.push({location:Gs(a,r),node:a}))}return i}function Gs(e,t){let n=e.getSourceFile(),r=n.getLineAndColumnAtPos(e.getStart());return{file:Mr(t,n.getFilePath())??n.getBaseName(),line:r.line-1,column:r.column-1}}function Fh(e,t,n){let r=e.getSourceFile(),i=eu(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 Ar(c.filter(l=>Mr(n,Ph.join(n,l.file))===t))}function Zl(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 eu(e,t){return e.getLineAndColumnAtPos(t.getStart()).line-1}function Ar(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 Mr(e,t){let n=Ph.relative(e||process.cwd(),t).replace(/\\/g,"/");return!n||n.startsWith("..")?null:n}function Lh(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 Q(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=eu(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 Nh(e,t,n,r){let i=ru(e,t),o=tu(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 tu(s,n)}function nu(e,t,n,r){return tu(ru(e,t).get(r)??[],n)}function Ah(e,t){let n=new Map;for(let[r,i]of ru(e,t)){let o=i[0];o&&n.set(r,o)}return n}function ru(e,t){return aL.get(e,t,()=>{let n=new Map;for(let r of Q(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 tu(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 iu from"path";var Oi=[".ts",".tsx",".mts",".cts",".js",".jsx",".mjs",".cjs"];function kt(e){let t=e.toLowerCase();return Oi.some(n=>t.endsWith(n))}function Mh(e,t){let n=new Map,r=null,i=null,o=()=>(i??=N(e,{extensions:Oi}),i),s=()=>(r??=w("typescript.source-file-index",()=>cL(e.config.projectRoot,t,o()),()=>({projects:t.length,indexedDocuments:o().length})),r),a=c=>kt(c)?ut(n,c,()=>{let l=ji(iu.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(ji(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=>[ji(o.getFilePath()),o]))}));for(let i of n){let o=ji(iu.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(ji(a.getFilePath()),a);break}}}return r}function ji(e){return iu.resolve(e)}function ou(e,t){for(let n of e)if(t===n.name||t.startsWith(`${n.name}/`))return n.name;return null}function Oh(e){let t=`${e.relativeDir}/src`;return[`${t}/index.ts`,`${t}/index.tsx`,`${t}/index.mts`,`${t}/index.cts`]}import{existsSync as Bi,readFileSync as lL}from"fs";import Fe from"path";var su=["tsconfig.json","tsconfig.app.json","tsconfig.node.json","tsconfig.base.json"];function au(e,t){let r=t?Fe.dirname(Fe.join(e,t)):e,i=Fe.resolve(e);for(;r.startsWith(i);){for(let s of su){let a=Fe.join(r,s);if(Bi(a))return a}let o=Fe.dirname(r);if(o===r)break;r=o}for(let o of su){let s=Fe.join(e,o);if(Bi(s))return s}return null}function jh(e){let t=e.config.projectRoot,n=new Set(uL(t,e.config.semantic?.typescript?.tsconfigs)),r=N(e,{includeIgnored:!1,extensions:Oi});for(let i of r){let o=au(t,i);o&&n.add(Fe.resolve(o))}if(n.size===0){let i=au(t);i&&n.add(Fe.resolve(i))}return[...n].filter(i=>!Bh(t,i)).sort((i,o)=>i.localeCompare(o))}function uL(e,t=[]){let n=new Set;for(let r of t){let i=Fe.isAbsolute(r)?r:Fe.join(e,r);Bi(i)&&n.add(Fe.resolve(i))}for(let r of dL(e))for(let i of su){let o=Fe.join(r,i);Bi(o)&&n.add(Fe.resolve(o))}if(n.size===0){let r=au(e);r&&n.add(Fe.resolve(r))}return[...n].filter(r=>!Bh(e,r)).sort((r,i)=>r.localeCompare(i))}function dL(e){let t=Fe.join(e,"package.json");if(!Bi(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=>Xc(e,i))}function Bh(e,t){let n=Fe.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 $h=mL(import.meta.url),$i,zs;function cu(){if($i!==void 0)return $i;try{$i=$h("ts-morph")}catch{$i=null}return $i}function Vs(){if(zs)return zs;let e=cu();if(!e)return"ts-morph:unavailable";let t="unknown";try{t=$h("ts-morph/package.json").version??"unknown"}catch{}return zs=`ts-morph:${t}:typescript:${e.ts.version}`,zs}function Hh(e,t){return t.map(n=>({tsconfigPath:n,project:new e.Project({tsConfigFilePath:n,skipFileDependencyResolution:!0})}))}function qs(e,t,n){return{language:"typescript",availability:()=>({available:!1,reason:e,tsconfigPath:t,tsconfigPaths:n}),importUsage:()=>[],referencesFor:()=>[],calleesFor:()=>[],signatureFor:()=>null}}function Ks(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 Gh(e,t,n){let r=Wh(e,t),i=Wh(e,n),o=[...r].filter(d=>!i.has(d)).sort(),s=[...i].filter(d=>!r.has(d)).sort(),a=Uh(e,t),c=Uh(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 Uh(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 zh(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 Wh(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(Vh)}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)||Vh(n.location,r.location))}function Vh(e,t){return e.file.localeCompare(t.file)||e.line-t.line||e.column-t.column}var gL=32;function Qh(e,t){let n=w("typescript.provider.load",()=>cu());if(!n)return qs("ts-morph is not installed");let r=w("typescript.provider.tsconfig-discovery",()=>jh(e));if(r.length===0)return qs("no tsconfig found");try{let i=w("typescript.provider.project-bundles",()=>Hh(n,r),()=>({tsconfigs:r.length}));return hL(e,n,i)}catch(i){return qs(i instanceof Error?i.message:String(i),r[0],r)}}function hL(e,t,n,r={}){return w("typescript.provider.construct",()=>new uu(e,t,n),()=>({tsconfigs:n.length,reusedProjects:r.reusedProjects===!0}))}var uu=class{constructor(t,n,r){this.db=t;this.tsMorph=n;this.projects=r;this.workspacePackages=Rr(t.config.projectRoot),this.sourceFiles=Mh(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 ut(this.importUsageCache,t,()=>{let n=this.sourceFiles.sourceFile(t);if(!n)return[];let r=bL();return w("typescript.import-usage.file",()=>this.importUsageForSourceFile(t,n,r),()=>({file:t,...r}))})}referencesFor(t){return ut(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=>!Kh(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=>Kh(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=Jh();w("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,...Yh(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=>kt(o.relativePath)),r=t.filter(o=>this.sourceFiles.sourceFile(o)!==null),i=this.referencesForDefinitionsBySymbolScan(n,r);return zh(n,i,r)}referencesForDefinitionsBySymbolScan(t,n){let r=U(),i=Jh(),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 w("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 C=o.get(y.symbolId)??[];C.push(...h),o.set(y.symbolId,C)}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 C=Ar(h);o.set(y,C),r&&(i.referenceCount+=C.length)}},()=>({definitions:t.length,...Yh(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 C=ut(c,y,()=>this.compilerSymbolKeys(y)),x=null,S=null,b=h&&r.has(h.symbolId)?i.get(h.symbolId):void 0;if(b&&(x=lu(m,g),!qh(b,n,x))){let v=m.getLineAndCharacterOfPosition(g.getStart(m));S={file:n,line:v.line,column:v.character};let R=l.get(b.symbolId)??[];R.push(S),l.set(b.symbolId,R),u&&(u.requestedHits+=1)}for(let v of C)for(let R of o.get(v)?.values()??[]){if(x??=lu(m,g),qh(R,n,x))continue;if(!S){let D=m.getLineAndCharacterOfPosition(g.getStart(m));S={file:n,line:D.line,column:D.character}}let E=l.get(R.symbolId)??[];E.push(S),l.set(R.symbolId,E),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=Mr(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 ut(this.calleesCache,t.symbolId,()=>ut(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=Th(n,t,o,this.db.config.projectRoot);return r&&(r.semanticRefsMs+=W.now()-s,r.referenceCount+=a.length),a}signatureFor(t){return ut(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 Xh(c)}),o=r.getReturnType().getText(n);return`(${i.join(",")})=>${Xh(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 du(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:Gs(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 _h(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=>!Zl(c.node)),s=i.some(c=>Zl(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=ou(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,Ar(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,Ar(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=ou(this.workspacePackages,i.getModuleSpecifierValue());if(!o)return;let s=n.get(o);if(s)for(let a of du(i)){if(a.kind!=="named"||!a.identifier)continue;let c=s.get(a.importedName);if(!c||c.size===0)continue;let l=Fh(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 Oh(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 ut(this.indexedDefinitionLeafCache,t,()=>Ah(this.db,t)).get(n)??null}nodeForDefinition(t){return ut(this.definitionNodeCache,t.symbolId,()=>this.definitionNodesForFile(t.relativePath).get(t.symbolId)??null)}definitionNodesForFile(t){return ut(this.fileDefinitionNodeCache,t,()=>{let n=this.sourceFiles.sourceFile(t);return n?Lh(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=Mr(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?nu(this.db,u,d,i)??(f&&f!==i?nu(this.db,u,d,f):null):Nh(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 w("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=Q(this.db,t).sort((E,D)=>E.startLine-D.startLine||D.endLine-E.endLine);if(r&&(l=Math.round(W.now()-g)),i=y.length,y.length===0)return new Map;let h=new Map,C=r?W.now():0,x=this.compilerCheckerForSourceFile(p),S=p.compilerNode;r&&(u=Math.round(W.now()-C));let b=new Map,v=E=>{if(this.tsMorph.ts.isCallExpression(E)||this.tsMorph.ts.isNewExpression(E)){r&&(o+=1);let D=this.semanticCalleeForCallNode(x,S,y,E,b,n,m);D&&(r&&(s+=1),CL(h,D.callerId,D.target))}this.tsMorph.ts.forEachChild(E,v)},R=r?W.now():0;v(S),r&&(d=Math.round(W.now()-R));for(let[E,D]of h)h.set(E,DL(D));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,lu(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 du(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 du(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 lu(e,t){return e.getLineAndCharacterOfPosition(t.getStart(e)).line}function qh(e,t,n){return t===e.relativePath&&n>=e.startLine&&n<=e.endLine}function Kh(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 Jh(){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 Yh(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 DL(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 Xh(e){return e.replace(/\s+/g," ").replace(/\bimport\("[^"]+"\)\./g,"").trim()}import{createHash as EL}from"crypto";import{readFileSync as kL}from"fs";import{dirname as PL,join as Js}from"path";var Ys=2,TL="typescript-semantic";function Zh(e){let t=Js(e,TL);return{rootDir:t,requestDir:Js(t,"requests"),responseDir:Js(t,"responses")}}function Xs(e){try{let t=JSON.parse(kL(Js(PL(e),"meta.json"),"utf8"));return t.version!==2&&t.version!==3||typeof t.status!="string"||typeof t.updatedAt!="string"||t.fingerprint===void 0?null:EL("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 oy(e,t,n={}){let r=new mu(e,n),i=null,o=null,s=process.env.SCIP_QUERY_SKIP_WATCH_SERVICE==="1",a=()=>(i??=Qh(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=>iy(f),()=>a().referencesForDefinitions?.(d,m)??new Map(d.map(f=>[f.symbolId,a().referencesFor(f)]))),u=d=>c({kind:"callees",definitions:[...d]},m=>iy(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 mu=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=Rt(t.config.projectRoot)}db;runtime;timeoutMs;cacheDir;projectRoot;request(t){let n=kh(this.cacheDir),r=Zh(this.cacheDir),i=Ql(n.statePath);if(!ry(i,this.projectRoot,this.runtime))throw new Error("Compatible TypeScript semantic service is not running.");let o=Xs(this.db.config.dbPath);if(!o)throw new Error("Published TypeScript generation identity is unavailable.");let s=this.runtime.randomId(),a=ny(r.requestDir,`${s}.json`),c=ny(r.responseDir,`${s}.json`),l=this.runtime.now()+this.timeoutMs;ey(r.requestDir,{recursive:!0}),ey(r.responseDir,{recursive:!0}),_e(a,{protocolVersion:Ys,id:s,generation:o,deadlineAtMs:l,profileEnvironment:hf(),request:t});try{for(;this.runtime.now()<=l;){if(FL(c))return OL(LL(c,"utf8"),s,o);let u=Ql(n.statePath);if(!ry(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{ty(a,{force:!0}),ty(c,{force:!0})}}};function ry(e,t,n){let r=e!==null&&n.now()-Date.parse(e.heartbeatAt)<=Eh,i=e?.typescriptSemantic?.busyUntil!==void 0&&n.now()<=Date.parse(e.typescriptSemantic.busyUntil);return e!==null&&e.projectRoot===t&&e.typescriptSemantic?.protocolVersion===Ys&&n.isProcessAlive(e.pid)&&(r||i)}function OL(e,t,n){let r=JSON.parse(e);if(r.protocolVersion!==Ys||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 iy(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:_L,sleep(e){let t=new Int32Array(new SharedArrayBuffer(4));Atomics.wait(t,0,0,e)},isProcessAlive:ct};var sy=new Ws;un({name:"semantic-provider",groups:["semantic-provider"],clearAll:e=>sy.clear(e)});function Or(e,t){let n=De(t)??"typescript";return sy.getOrCreate(e,n,()=>n==="rust"?vh(e.config.projectRoot,{sourceImportUsageResolver:{importUsageFacts:r=>Cg(e,r)},calleeSymbolResolver:Sg(e),sourceZeroCalleeOracle:r=>WL(e,r),scipOccurrenceCalleeOracle:r=>Dh(e,r)}):oy(e,t))}function De(e){return e?M(e)==="rust"?"rust":kt(e)?"typescript":null:"typescript"}function WL(e,t){let n=G(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_]*$/,ay=/\bDefault::default\b/g,KL=/^\.\.\s*Default::default\b/;function cy(e,t){let n=new Map,r=new Map;for(let i of t){let o=fu(e,i,r);o!==null&&n.set(i.symbolId,o)}return n}function fu(e,t,n=new Map){let r=YL(t.symbol);if(!r)return null;let i=_r(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]??"",C=new Set;o.lastIndex=0;let x;for(;x=o.exec(h);)c.push({file:l.relative_path,line:g,column:x.index+x[1].length+r.length+2}),p+=1;for(let S=0;S<h.length;S+=1){let b=KL.exec(h.slice(S));if(b){if(a&&f.includes(m)){let R=S+b[0].lastIndexOf("default");c.push({file:l.relative_path,line:g,column:R}),C.add(R),p+=1}S+=b[0].length-1;continue}let v=h[S];if(v==="{"){let R=s.test(h.slice(0,S));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(ay.lastIndex=0;x=ay.exec(h);){let S=x.index+9;if(!C.has(S))return null}}if(p===0)return null}return Ns(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 Zs(e){let t=Qs(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=Nl(d.path,["typescript"]);return m==="config"||m==="ambient"}).map(d=>d.path),o=Qs([...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=>ly(r.get(d))),l=he(JSON.stringify({pnpmWorkspaces:e.snapshot.pnpmWorkspaces,typescriptProjectMode:e.snapshot.typescriptProjectMode,typescriptProjects:Qs(e.snapshot.typescriptProjects),membership:t})),u=new Map;return{identityFor(d,m){if(!n.has(d))return jr("target-outside-project");if(a)return jr("duplicate-input-path");if(s)return jr("missing-input-fingerprint");if(c)return jr("unreadable-input");let f=[],p,g;if(e.graph===null)f.push("dependency-graph-unavailable"),g="whole-project",p=o;else{let C=eN(d,e.graph,u);if(C.find(S=>!r.has(S)))return jr("missing-input-fingerprint");if(p=Qs([...C,...i]),p.some(S=>ly(r.get(S))))return jr("unreadable-input");g="dependency-closure"}let y=p.map(C=>tN(r.get(C)));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 ly(e){return e.size<0||e.hash==="unreadable"}function jr(e){return{version:1,key:null,mode:"unkeyed",inputFiles:[],reasons:[e]}}function Qs(e){return[...new Set(e)].sort()}var oN=J("typescript-semantic-identity-context",{clearGroups:["whole-project"]});function vn(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 Hi(e){return N(e,{includeIgnored:!1}).filter(kt).sort()}function sN(e){try{let t=JSON.parse(nN(iN(rN(e.config.dbPath),"meta.json"),"utf8")),n=Wg(t.fingerprint);return n?{builder:Zs({projectFiles:Hi(e),snapshot:n,graph:ie(e),engineIdentity:Vs()}),identities:new Map}:null}catch{return null}}var pu="typescript-reference-fragment-v2",ta=oe({kind:"typescript-reference-fragments",invalidation:K("typescript-reference-fragments"),serialize:e=>JSON.stringify(e),deserialize:cN});function c7(e,t,n,r=e){let i=Hi(e),o=Zs({projectFiles:i,snapshot:t,graph:ie(e),engineIdentity:Vs()}),s=[...n].map(([a,c])=>({relativePath:a,contentHash:o.identityFor(a,pu).key,value:[...c]}));if(s.some(a=>a.contentHash===null))throw new Error("TypeScript reference fragment identity is unavailable for an affected document.");return ta.writeBatch(r,s.map(a=>({...a,contentHash:a.contentHash}))),s.length}function gu(e,t,n){let r=t.filter(o=>kt(o.relativePath));if(r.length===0)return ea("no TypeScript definitions");let i=ea("shadow did not run");return w("typescript.reference-fragments.shadow",()=>{try{let o=Or(e,r[0].relativePath);if(!o.availability().available||!o.referenceFragmentsForFiles)return i=ea("TypeScript reference fragment provider is unavailable"),i;let s=Hi(e),a=new Set(s),c=o.referenceFragmentsForFiles(s),l=Ks(r,c),u=Gh(r,aN(n,a),l);if(!u.passed)return i={state:"failing",files:s.length,keyedFiles:0,writtenFiles:0,...u},i;let d=[];for(let m of s){let f=vn(e,m,pu);f?.key&&d.push({relativePath:m,contentHash:f.key,value:c.get(m)??[]})}return ta.writeBatch(e,d),i={state:"passing",files:s.length,keyedFiles:d.length,writtenFiles:d.length,...u},i}catch(o){return i=ea(o instanceof Error?o.message:String(o)),i}},()=>({...i}))}function aN(e,t){return new Map([...e].map(([n,r])=>[n,r.filter(i=>t.has(i.file))]))}function hu(e,t){if(t.length===0)return{references:new Map,files:0,cacheHits:0,cacheMisses:0,computedFiles:0};let n="fallback",r=0,i=0,o=0,s=0;return w("typescript.reference-fragments.materialize",()=>{try{let a=Hi(e);r=a.length;let c=new Map,l=new Map,u=[];for(let f of a){let p=vn(e,f,pu);if(!p?.key)return null;c.set(f,p.key);let g=ta.read(e,f,p.key);g===null?(o+=1,u.push(f)):(i+=1,l.set(f,g))}if(o===0)return n="hit",{references:Ks(t,l),files:r,cacheHits:i,cacheMisses:o,computedFiles:s};let d=Or(e,t[0].relativePath);if(!d.availability().available||!d.referenceFragmentsForFiles)return null;let m=d.referenceFragmentsForFiles(u);if(u.some(f=>!m.has(f)))return null;s=m.size,ta.writeBatch(e,u.map(f=>({relativePath:f,contentHash:c.get(f),value:m.get(f)??[]})));for(let[f,p]of m)l.set(f,p);return n="computed",{references:Ks(t,l),files:r,cacheHits:i,cacheMisses:o,computedFiles:s}}catch{return null}},()=>({state:n,files:r,cacheHits:i,cacheMisses:o,computedFiles:s}))}function ea(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",yu=J("semantic-prefetched-callees",{clearGroups:["whole-project","source-file","semantic-provider"]}),uy=On({kind:"semantic-import-usage",invalidation:K("semantic-import-usage"),serialize:e=>JSON.stringify(e),deserialize:xy}),dy=On({kind:"semantic-signatures",invalidation:K("semantic-signatures"),serialize:e=>JSON.stringify(e),deserialize:CN}),my=oe({kind:"typescript-import-usage",invalidation:K("typescript-import-usage"),serialize:e=>JSON.stringify(e),deserialize:xy}),fy=oe({kind:"typescript-signatures",invalidation:K("typescript-signatures"),serialize:e=>JSON.stringify(e),deserialize:xN});function We(e){let t=new Map,n=new Set;return{capability:(r,i)=>Ry(e,r,i),importUsage:r=>fN(e,r),references:r=>hy(e,r),materializeReferences:(r,i)=>by(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=yu.get(e,()=>new Map);for(let[r,i]of t)n.set(r,[...i])}function gy(e,t){if(!yu.has(e))return{hits:[],misses:[...t]};let n=yu.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 Wi(e,t){return We(e).importUsage(t)}function fN(e,t){if(De(t)==="typescript"){let o="fallback",s=0,a=0,c=0,l=0;return w("typescript.import-usage.materialize",()=>{let u=vn(e,t,uN);if(u?.key){s=1;let m=my.read(e,t,u.key);if(m)return o="hit",a=1,m;c=1;let f=Pt(e,t);if(!f)return o="unavailable",[];let p=f.importUsage(t);return my.write(e,t,u.key,p),o="computed",p}l=1;let d=Pt(e,t);return d?(o="direct-fallback",d.importUsage(t)):(o="unavailable",[])},()=>({state:o,eligible:s,cacheHits:a,cacheMisses:c,fallbacks:l}))}let n=Cy(e,"semantic-import-usage",t);if(n){let o=uy.read(e,t,n);if(o)return o}let r=Pt(e,t);if(!r)return[];let i=r.importUsage(t);return n&&uy.write(e,t,n,i),i}function na(e,t){return We(e).references(t)}function hy(e,t){let n=fu(e,t);if(n)return n;let r=Ng(e,t);if(r)return r;let i=Pt(e,t.relativePath);return i?i.referencesFor(t):[]}function In(e,t){return We(e).callerMap(t)}function yy(e,t){let n=new Map,r=new Map;for(let i of t){if(De(i.relativePath)==="typescript"){let o=Pt(e,i.relativePath);if(!o)continue;let s=r.get(o)??[];s.push(i),r.set(o,s);continue}bu(e,n,i,hy(e,i))}for(let[i,o]of r){let s=hu(e,o),a=s?.references??(i.referencesForDefinitions?i.referencesForDefinitions(o,{exact:!0}):new Map(o.map(c=>[c.symbolId,i.referencesFor(c)])));!s&&U()&&gu(e,o,a);for(let c of o)bu(e,n,c,a.get(c.symbolId)??[])}return n}function pN(e,t,n=new Map,r=new Set){let i=new Map,o=by(e,t,n,r),s=0;return w("semantic.callers.from-references",()=>{for(let a of t)s+=bu(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 by(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,C=0,x=0,S=0,b=[],v=new Map,R=t.filter(D=>De(D.relativePath)==="typescript"&&!n.has(D.symbolId)&&!r.has(D.symbolId)),E=hu(e,R);if(E){h=R.length,C=E.cacheHits,x=E.cacheMisses,S=E.computedFiles;for(let D of R)n.set(D.symbolId,E.references.get(D.symbolId)??[])}if(w("semantic.references.cache-scan",()=>{for(let[D,k]of Ts(t)){let L=[];for(let F of k)n.has(F.symbolId)?u+=1:r.has(F.symbolId)?y+=1:L.push(F);if(L.length===0){g+=1;continue}let ne=gN(e,o,D);if(!ne){for(let F of L)De(F.relativePath)||(l+=1),c.push(F);continue}p+=1;let X=Zm(e,D,ne);for(let F of L){let ae=X.get(F.symbol)??null;if(ae!==null){let Z=hN(ae);if(Z){d+=1,n.set(F.symbolId,Z);continue}m+=1}a.push({definition:F,cacheFingerprint:ne})}}},()=>({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){b=[...c,...a.map(D=>D.definition)],v=w("semantic.references.compute-misses",()=>{let D=Su(e,b,i);return f=D.size,D},()=>({definitions:b.length,misses:a.length,unkeyed:c.length,rows:f}));for(let D of b)v.has(D.symbolId)?(n.set(D.symbolId,v.get(D.symbolId)??[]),r.delete(D.symbolId)):r.add(D.symbolId);for(let{definition:D,cacheFingerprint:k}of a)v.has(D.symbolId)&&Ry(e,"semantic-references",D.relativePath).available&&s.push({relativePath:D.relativePath,symbol:D.symbol,projectFingerprint:k,payload:JSON.stringify(v.get(D.symbolId)??[])})}return s.length>0&&w("semantic.references.cache-write",()=>tf(e,s),()=>({entries:s.length})),v.size>0&&gu(e,b,v),{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:C,fragmentCacheMisses:x,fragmentComputedFiles:S}}function gN(e,t,n){if(!t)return null;let r=De(n);return r==="typescript"?t:r==="rust"?he(JSON.stringify({kind:"semantic-references",language:r,engine:qn(e.config.projectRoot),projectFingerprint:t})):null}function Su(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 w("semantic.references.provider-loop",()=>{let p=cy(e,t),g=Lg(e,t),y=new Map,h=n.prefetchCallees?new Map:null,C=[];for(let S of t){let b,v=()=>(b??=Pt(e,S.relativePath),b);if(h){let k=v();if(k?.referencesAndCalleesForDefinitions){let L=h.get(k);L?L.push(S):h.set(k,[S]),f+=1}}let R=p.get(S.symbolId);if(R){a+=1,c+=R.length,Ui(i,S.symbolId,R,r,k=>{d+=1,m+=k});continue}let E=g.get(S.symbolId);if(E){l+=1,u+=E.length,Ui(i,S.symbolId,E,r,k=>{d+=1,m+=k});continue}let D=v();if(!D){r&&(s+=1);continue}if(r&&(o+=1),D.referencesForDefinitions){let k=y.get(D);k?k.push(S):y.set(D,[S])}else C.push({provider:D,definition:S})}let x=new Set;if(h)for(let[S,b]of h){if(!S.referencesAndCalleesForDefinitions)continue;let v=y.get(S)??[],R=S.referencesAndCalleesForDefinitions(v,b);x.add(S),mN(e,R.callees);for(let E of v){if(!R.references.has(E.symbolId))continue;let D=R.references.get(E.symbolId)??[];Ui(i,E.symbolId,D,r,k=>{d+=1,m+=k})}}for(let[S,b]of y){if(x.has(S))continue;let v=S.referencesForDefinitions(b);for(let R of b){if(!v.has(R.symbolId))continue;let E=v.get(R.symbolId)??[];Ui(i,R.symbolId,E,r,D=>{d+=1,m+=D})}}for(let{provider:S,definition:b}of C){let v=S.referencesFor(b);Ui(i,b.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 Ui(e,t,n,r,i){e.set(t,n),r&&n.length>0&&i(n.length)}function bu(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 ra(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 w("semantic.callees.provider-loop",()=>{let c=new Map,l=[];for(let u of t){let d=Pt(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)??[];py(r,f.symbolId,p,n,g=>{s+=1,a+=g})}}for(let{provider:u,definition:d}of l){let m=u.calleesFor(d);py(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 py(e,t,n,r,i){n.length>0&&(e.set(t,n),r&&i(n.length))}function Sy(e,t){return We(e).signature(t)}function bN(e,t){if(De(t.relativePath)==="typescript"){let s="fallback",a=0,c=0,l=0,u=0;return w("typescript.signature.materialize",()=>{let d=vn(e,t.relativePath,dN);if(d?.key){a=1;let f=fy.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=Pt(e,t.relativePath);if(!p)return s="unavailable",null;let g=p.signatureFor(t);return fy.write(e,t.relativePath,d.key,{...f,[t.symbol]:g}),s="computed",g}u=1;let m=Pt(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=Cy(e,"semantic-signatures",t.relativePath),r=SN(t);if(n){let s=dy.read(e,r,n);if(s)return s.signature}let i=Pt(e,t.relativePath);if(!i)return null;let o=i.signatureFor(t);return n&&dy.write(e,r,n,{signature:o}),o}function Cy(e,t,n){let r=Te(e);if(!r)return null;let i=De(n);return i!=="rust"?null:he(JSON.stringify({kind:t,language:i,engine:qn(e.config.projectRoot),projectFingerprint:r}))}function SN(e){return`${e.relativePath}\0${e.symbol}`}function xy(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 Ry(e,t,n){let r=De(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,...Or(e,n).availability()}}catch(i){return{slot:t,language:r,available:!1,reason:i instanceof Error?i.message:String(i)}}}function Pt(e,t){if(!De(t))return null;let n=Or(e,t);return n.availability().available?n:null}var H={references:na,referenceMap:Su,callerMap:(e,t)=>We(e).callerMap(t),calleeMap:Cu};function Cu(e,t){let n=U(),r=new Map,i=gy(e,t),o=[],s=[],a=0,c=0,l=0,u=0,d=0,m=0,f=0;for(let{definition:x,callees:S}of i.hits)d+=1,S.length>0&&(m+=1,f+=S.length,r.set(x.symbolId,S));let p=RN(e,i.hits);if(p.entries.length>0&&w("semantic.callees.prefetch-cache-write",()=>Dc(e,p.entries),()=>({entries:p.entries.length,sourceMissing:p.sourceMissing,skippedUnsupportedLanguage:p.skippedUnsupportedLanguage})),w("semantic.callees.cache-scan",()=>{for(let[x,S]of Ts(i.misses)){if(!De(x)){n&&(a+=S.length);continue}let b=P(e,x);if(!b){n&&(c+=S.length),s.push(...S);continue}let v=ce(e,x,b),R=vy(e,x);if(!R){s.push(...S);continue}let E=Qm(e,x,v,R);for(let D of S){let k=E.get(D.symbol)??null;if(k!==null){let L=IN(k);if(L){n&&(l+=1),L.length>0&&r.set(D.symbolId,L);continue}n&&(u+=1)}o.push({def:D,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(x=>x.def)],y=0,h=w("semantic.callees.compute-misses",()=>{let x=ra(e,g);return y=x.size,x},()=>({definitions:g.length,misses:o.length,unkeyed:s.length,rows:y}));for(let[x,S]of h)r.set(x,S);let C=o.filter(x=>We(e).capability("semantic-callees",x.def.relativePath).available).map(x=>({relativePath:x.def.relativePath,symbol:x.def.symbol,contentHash:x.contentHash,depsDigest:x.depsDigest,payload:JSON.stringify(h.get(x.def.symbolId)??[])}));return C.length>0?w("semantic.callees.cache-write",()=>Dc(e,C),()=>({entries:C.length})):w("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(!De(s.relativePath)){o+=1;continue}if(!r.has(s.relativePath)){let l=P(e,s.relativePath),u=l?vy(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 vy(e,t){let n=De(t);if(n==="typescript")return vn(e,t,vN)?.key??null;let r=DN(e,t);return n==="rust"?he(JSON.stringify({kind:"semantic-callees",language:n,engine:qn(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 DN(e,t){return wN.get(e,t,()=>{let r=[...ie(e).get(t)??[]].sort().map(i=>`${i}:${ce(e,i,P(e,i))}`);return he(r.join("|"))})}function B7(e,t,n={}){let r=B(e,t);if(!r)return[];let o=!ee(r.symbol)&&!e.isIgnored(r.relativePath)?[{relativePath:r.relativePath,line:r.startLine}]:[],s=Dt(e,r,{semantic:n.semantic,semanticEvidence:H}).map(u=>({relativePath:u.file,line:u.line})),a=EN(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 EN(e,t){if(!t.relativePath.endsWith(".rb"))return[];let n=kN(t.symbol);if(n.length===0)return[];let r=[];for(let i of N(e,{extensions:[".rb"],includeIgnored:!1})){let o=P(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 kN(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 PN}from"fs";import{basename as Iy,isAbsolute as TN,join as _N}from"path";function Oe(e,t){let n=wy(e,t,{allowMultiple:!1})[0]?.relativePath;return n||FN(e,t)}function Br(e,t){return wy(e,t,{allowMultiple:!0}).map(n=>n.relativePath)}function FN(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=_N(e.config.projectRoot,r);return PN(i)?r:null}function wy(e,t,n){let r=Dy(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=Dy(e),r=Iy(n),i=Iy(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 Dy(e){return e.trim().replace(/\\/g,"/").replace(/^\.\//,"").replace(/^\/+/,"").replace(/\/+$/,"")}function J7(e,t){let n=Br(e,t),r=ys(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&&!vf(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 Ey}from"fs";import{extname as NN,join as ky}from"path";function nee(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=ky(e.config.projectRoot,t.relativePath),o;try{o=Ey(i,"utf-8")}catch{return null}let s=o.split(`
288
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??ky(t.relativePath),source:l}}function MN(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=Ey(e.config.projectRoot,s.relative_path),c;try{c=Dy(a,"utf-8")}catch{return null}let l=c.split(`
289
+ `);return{symbol:t.symbol,shortName:I(t.symbol),relativePath:t.relativePath,startLine:a,endLine:c,language:r?.language??Py(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=ky(e.config.projectRoot,s.relative_path),c;try{c=Ey(a,"utf-8")}catch{return null}let l=c.split(`
290
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??ky(s.relative_path),source:m}}function ky(e){switch(LN(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 ON}from"module";var jN=ON(import.meta.url),Xn=BN().version;function BN(){for(let e of["../package.json","../../package.json"])try{return jN(e)}catch{}return{version:"0.0.0"}}import{existsSync as nd,statSync as ZM}from"fs";import{join as e0}from"path";import{createHash as $N}from"crypto";import{mkdirSync as HN,realpathSync as UN}from"fs";import{homedir as WN}from"os";import{join as Qn,resolve as Py}from"path";function GN(e,t){let n=process.env.SCIP_QUERY_CACHE_DIR;if(n)return Cu(n);if(t?.dbPath)return Cu(Py(e,t.dbPath));let r=ra(e);return Cu(r)}function Ty(){let e=process.env.XDG_CACHE_HOME;return Qn(e||Qn(WN(),".cache"),"scip-query")}function ra(e){let t=Py(e);try{t=UN(t)}catch{}let n=$N("sha256").update(t).digest("hex").slice(0,12);return Qn(Ty(),"projects",n)}function Gi(e){if(!/^[a-f0-9]{24}$/.test(e))throw new Error(`invalid repository cache identity: ${e}`);return Qn(Ty(),"repositories",e)}function xu(e){return process.env.SCIP_QUERY_SHARED_CACHE!=="0"&&!process.env.SCIP_QUERY_CACHE_DIR&&!process.env.SCIP_QUERY_INDEX_DB&&!e?.dbPath}function _y(e,t){let n=GN(e,t);return{cacheDir:n,dbPath:Qn(n,"index.db"),indexPath:Qn(n,"index.scip"),metaPath:Qn(n,"meta.json")}}function Cu(e){return HN(e,{recursive:!0}),e}import zN from"better-sqlite3";var VN=["node_modules",".git","dist","build","out","coverage","target",".next",".nuxt",".cache",".turbo",".nbb",".cpcache",".shadow-cljs",".scipquery-cache","__pycache__",".venv","venv"],ia=class{db;config;pathFilter;statementCache=new Map;constructor(t,n){this.config=t,this.pathFilter=n??null,this.db=new zN(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`(
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??Py(s.relative_path),source:m}}function Py(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),Xn=$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 rd,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 Qn,resolve as Ty}from"path";function zN(e,t){let n=process.env.SCIP_QUERY_CACHE_DIR;if(n)return xu(n);if(t?.dbPath)return xu(Ty(e,t.dbPath));let r=ia(e);return xu(r)}function _y(){let e=process.env.XDG_CACHE_HOME;return Qn(e||Qn(GN(),".cache"),"scip-query")}function ia(e){let t=Ty(e);try{t=WN(t)}catch{}let n=HN("sha256").update(t).digest("hex").slice(0,12);return Qn(_y(),"projects",n)}function Gi(e){if(!/^[a-f0-9]{24}$/.test(e))throw new Error(`invalid repository cache identity: ${e}`);return Qn(_y(),"repositories",e)}function Ru(e){return process.env.SCIP_QUERY_SHARED_CACHE!=="0"&&!process.env.SCIP_QUERY_CACHE_DIR&&!process.env.SCIP_QUERY_INDEX_DB&&!e?.dbPath}function Fy(e,t){let n=zN(e,t);return{cacheDir:n,dbPath:Qn(n,"index.db"),indexPath:Qn(n,"index.scip"),metaPath:Qn(n,"meta.json")}}function xu(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"],oa=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
292
  EXISTS (
293
293
  SELECT 1
294
294
  FROM defn_enclosing_ranges local_der
@@ -305,9 +305,9 @@ ${m}`,l+=1+m.length,u+=Ci(m),r+=m.length+1}let d=Zk(c);d&&n.push({...d,start:a,e
305
305
  AND local_m.role = 1
306
306
  ${this.pathExclusionsFor("local_d").trimStart()}
307
307
  )
308
- )`}get pathExclusions(){return this.pathExclusionsFor("d")}get symbolNoise(){return this.symbolNoiseFor("gs")}pathExclusionsFor(...t){return t.flatMap(n=>VN.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 qN from"ignore";import{readFileSync as KN,existsSync as Fy,readdirSync as JN}from"fs";import{dirname as Ru,isAbsolute as Ly,join as oa,relative as YN,resolve as XN}from"path";function Ny(e){let t=qN();return QN(e,t)||t.add(tA),{isIgnored:r=>vu(t,e,r),filter:r=>r.filter(i=>!vu(t,e,i))}}function QN(e,t){let n=new Set,r=(s,a)=>{if(!(n.has(s)||!Fy(s)))try{let c=KN(s,"utf-8");t.add(a?ZN(c,a):c),n.add(s)}catch{}},i=Ru(e),o=0;for(;i!==Ru(i)&&o<5&&(r(oa(i,".gitignore"),""),!Fy(oa(i,".git")));)i=Ru(i),o++;return Ay(e,"",t,r),n.size>0}function Ay(e,t,n,r){let i=t?oa(e,t):e;r(oa(i,".gitignore"),t);let o;try{o=JN(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;vu(n,e,`${a}/`)||Ay(e,a,n,r)}}function ZN(e,t){let n=t.replaceAll("\\","/").replace(/\/+$/,"");return e.split(/\r?\n/).map(r=>eA(r,n)).join(`
310
- `)}function eA(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 tA=`
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 Ly,readdirSync as YN}from"fs";import{dirname as vu,isAbsolute as Ny,join as sa,relative as XN,resolve as QN}from"path";function Ay(e){let t=KN();return ZN(e,t)||t.add(nA),{isIgnored:r=>Iu(t,e,r),filter:r=>r.filter(i=>!Iu(t,e,i))}}function ZN(e,t){let n=new Set,r=(s,a)=>{if(!(n.has(s)||!Ly(s)))try{let c=JN(s,"utf-8");t.add(a?eA(c,a):c),n.add(s)}catch{}},i=vu(e),o=0;for(;i!==vu(i)&&o<5&&(r(sa(i,".gitignore"),""),!Ly(sa(i,".git")));)i=vu(i),o++;return My(e,"",t,r),n.size>0}function My(e,t,n,r){let i=t?sa(e,t):e;r(sa(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;Iu(n,e,`${a}/`)||My(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
311
  # Dependencies
312
312
  node_modules/
313
313
  vendor/
@@ -364,21 +364,21 @@ Thumbs.db
364
364
 
365
365
  # Type definitions (often noise in queries)
366
366
  *.d.ts
367
- `;function vu(e,t,n){let r=nA(t,n);if(!r)return!1;try{return e.ignores(r)}catch{return!1}}function nA(e,t){if(!t||t===".")return null;if(!Ly(t)&&!t.startsWith(".."))return t.replaceAll("\\","/");let n=Ly(t)?t:XN(e,t),r=YN(e,n).replaceAll("\\","/");return!r||r==="."||r.startsWith("..")?null:r}import{readFileSync as rA,writeFileSync as Iu,existsSync as Qt}from"fs";import{isAbsolute as My,join as Zn,relative as Oy,resolve as jy}from"path";var $r=".scipquery.json",Hy=250,Uy=0,Wy=10*6e4,iA={enabled:!1,debounceMs:Hy,cooldownMs:Uy,gitPollMs:2e3,idleTimeoutMs:Wy,autoRefresh:!0,ignore:[]},Gy=["typescript","javascript","java","scala","kotlin","rust","python","ruby","go","cpp","c","csharp","vb","dart","php","clojure"],oA=new Set(["languages","indexerConcurrency","watch","hooks","indexer","dbPath","entryRoots","semantic","suppressions","declaredCouplings","locality","architecture","coverageContracts","docs"]),sA=new Set(["enabled","debounceMs","cooldownMs","gitPollMs","idleTimeoutMs","autoRefresh","ignore"]),aA=new Set(["router"]),cA=new Set(["pathPrefixes","files","symbolPatterns","qualifiedVars"]),lA=new Set(["typescript","rust"]),uA=new Set(["tsconfigs"]),dA=new Set(["rustAnalyzerPath"]),By=new Set(Gy),mA=new Set(["pnpmWorkspaces","projectMode","projects","configPath"]),fA=new Set(["architecturalBoundarySegments"]),pA=new Set(["boundaries","allowedDependencies","requireCompletePolicy","requireAcyclic"]),gA=new Set(["name","paths"]),hA=new Set(["snapshotPaths"]),yA=new Set(["name","files","reason"]),bA=new Set(["id","check","file","reason","expiresAt","createdAt"]),SA=new Set(["name","file","keys","mustEqual","allowExtra"]),CA=new Set(["type","identifier","marker"]),xA=new Set(["type","path","pattern"]),RA=new Set(["object-literal-keys","string-array","markdown-list"]),vA=new Set(["top-level-dirs","file-glob","registered-commands","builtin-skills"]);function zy(e){let t=Zn(e,$r);if(!Qt(t))return{};try{let n=rA(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 ${$r} at ${t}: ${r}`,{cause:n}):new Error(`unable to read ${$r} at ${t}: ${r}`,{cause:n})}}function bee(e,t={}){let n=[];kA(e,n);let r=new Set(Gy);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=jy(t.projectRoot,l),m=Oy(t.projectRoot,d);m.startsWith("..")||My(m)?n.push({level:"error",path:u,message:"Project path must stay inside the project root."}):Qt(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=jy(t.projectRoot,s.configPath),u=Oy(t.projectRoot,l);u.startsWith("..")||My(u)?n.push({level:"error",path:c,message:"Config path must stay inside the project root."}):Qt(l)||n.push({level:"warning",path:c,message:`Clojure indexer config path does not exist: ${s.configPath}`})}}if(e.locality!==void 0)if(!Xe(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(IA(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&&!Qt(Zn(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(!Xe(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&&!Qt(Zn(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 EA(e,n,t),DA(e,n),n}function IA(e,t){if(e.architecture===void 0)return;if(!Xe(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[s,a]of n.entries()){let c=`architecture.boundaries[${s}]`;if(!Xe(a)){t.push({level:"error",path:c,message:"Architecture boundary must be an object."});continue}let l=a.name;typeof l!="string"||l.trim()===""?t.push({level:"error",path:`${c}.name`,message:"Boundary name is required."}):r.has(l)?t.push({level:"error",path:`${c}.name`,message:`Duplicate boundary name: ${l}`}):r.add(l);let u=a.paths;if(!Array.isArray(u)||u.length===0){t.push({level:"error",path:`${c}.paths`,message:"Boundary paths must be a non-empty array."});continue}for(let[d,m]of u.entries()){let f=`${c}.paths[${d}]`;if(typeof m!="string"||m.trim()===""){t.push({level:"error",path:f,message:"Boundary path must be a non-empty string."});continue}wA(m)||t.push({level:"error",path:f,message:"Boundary path must be project-relative and may use only one trailing /* or /** glob."}),i.has(m)?t.push({level:"error",path:f,message:`Duplicate boundary path: ${m}`}):i.add(m)}}let o=e.architecture.allowedDependencies;if(o!==void 0&&!Xe(o))t.push({level:"error",path:"architecture.allowedDependencies",message:"Must be an object keyed by boundary name."});else if(Xe(o))for(let[s,a]of Object.entries(o)){let c=`architecture.allowedDependencies.${s}`;if(r.has(s)||t.push({level:"error",path:c,message:`Unknown source boundary: ${s}`}),!Array.isArray(a)){t.push({level:"error",path:c,message:"Dependency row must be an array."});continue}let l=new Set;for(let[u,d]of a.entries()){let m=`${c}[${u}]`;typeof d!="string"||d.trim()===""?t.push({level:"error",path:m,message:"Target boundary name is required."}):r.has(d)?l.has(d)?t.push({level:"error",path:m,message:`Duplicate target boundary: ${d}`}):l.add(d):t.push({level:"error",path:m,message:`Unknown target boundary: ${d}`})}}if(e.architecture.requireAcyclic!==void 0&&typeof e.architecture.requireAcyclic!="boolean"&&t.push({level:"error",path:"architecture.requireAcyclic",message:"Must be a boolean."}),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 s=Xe(o)?o:{};for(let a of[...r].sort())Object.hasOwn(s,a)||t.push({level:"error",path:`architecture.allowedDependencies.${a}`,message:"A dependency row is required by architecture.requireCompletePolicy."})}}function wA(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 EA(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(!Xe(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&&!Qt(Zn(n.projectRoot,i.file))&&t.push({level:"warning",path:`${o}.file`,message:`Coverage contract file does not exist: ${i.file}`}),$y(t,i.keys,`${o}.keys`,RA,"Unknown coverage-contract key extractor type."),$y(t,i.mustEqual,`${o}.mustEqual`,vA,"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 $y(e,t,n,r,i){if(!Xe(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 See(e){return{...iA,...e.watch}}function Cee(e,t){let n=Zn(e,$r);return Qt(n)||Iu(n,JSON.stringify({languages:t,watch:{enabled:!0,debounceMs:Hy,cooldownMs:Uy,gitPollMs:2e3,idleTimeoutMs:Wy,autoRefresh:!0}},null,2)+`
368
- `),n}function xee(e,t,n){let r=Zn(e,$r),i={...t,languages:[...n]},o=!Qt(r)||JSON.stringify(i)!==JSON.stringify(t);return o&&Iu(r,JSON.stringify(i,null,2)+`
369
- `),{configPath:r,config:i,changed:o}}function Ree(e,t,n){let r=Zn(e,$r),i={...t,watch:{...t.watch,enabled:n,...n&&t.watch?.autoRefresh===void 0?{autoRefresh:!0}:{}}},o=!Qt(r)||JSON.stringify(i)!==JSON.stringify(t);return o&&Iu(r,JSON.stringify(i,null,2)+`
370
- `),{configPath:r,config:i,changed:o}}function kA(e,t){if(!Xe(e))return;let n=e;if(Re(t,n,"",oA),Re(t,n.watch,"watch",sA),Re(t,n.hooks,"hooks",aA),Re(t,n.entryRoots,"entryRoots",cA),Re(t,n.semantic,"semantic",lA),Re(t,n.semantic?.typescript,"semantic.typescript",uA),Re(t,n.semantic?.rust,"semantic.rust",dA),Re(t,n.locality,"locality",fA),Re(t,n.architecture,"architecture",pA),Re(t,n.docs,"docs",hA),Array.isArray(n.architecture?.boundaries))for(let[r,i]of n.architecture.boundaries.entries())Re(t,i,`architecture.boundaries[${r}]`,gA);if(Xe(n.indexer)){Re(t,n.indexer,"indexer",By);for(let[r,i]of Object.entries(n.indexer))By.has(r)&&Re(t,i,`indexer.${r}`,mA)}if(Array.isArray(n.declaredCouplings))for(let[r,i]of n.declaredCouplings.entries())Re(t,i,`declaredCouplings[${r}]`,yA);if(Array.isArray(n.suppressions))for(let[r,i]of n.suppressions.entries())Re(t,i,`suppressions[${r}]`,bA);if(Array.isArray(n.coverageContracts))for(let[r,i]of n.coverageContracts.entries()){let o=`coverageContracts[${r}]`;Re(t,i,o,SA),Xe(i)&&(Re(t,i.keys,`${o}.keys`,CA),Re(t,i.mustEqual,`${o}.mustEqual`,xA))}}function Re(e,t,n,r){if(Xe(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 Xe(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}import{existsSync as ib,readFileSync as qA}from"fs";import{execFileSync as PA}from"child_process";import{existsSync as TA,readdirSync as qy}from"fs";import{extname as Ky,join as Jy}from"path";var Yy=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 zi(e){let t=[],n=FA(e),r=MA(e);for(let i of _A){if(LA(e,i.files)){t.push(i.language);continue}if(NA(n,i.globs)){t.push(i.language);continue}jA(r,i.extensions)&&t.push(i.language)}return t.includes("typescript")&&Vy(t,"javascript"),t.includes("cpp")&&!r.has(".c")&&Vy(t,"c"),t}function FA(e){try{return qy(e)}catch{return[]}}function LA(e,t){return t?.length?t.some(n=>TA(Jy(e,n))):!1}function NA(e,t){return t?.length?e.some(n=>t.some(r=>AA(n,r))):!1}function AA(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 MA(e){let t=OA(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=qy(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=Jy(i,s.name);if(s.isDirectory()){Yy.has(s.name)||r.push(a);continue}let c=Ky(s.name).toLowerCase();c&&n.add(c)}}return n}function OA(e){try{let t=PA("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=>Yy.has(o)))continue;let i=Ky(r).toLowerCase();i&&n.add(i)}return n}catch{return null}}function jA(e,t){return t?.length?t.some(n=>e.has(n)):!1}function Vy(e,t){let n=e.indexOf(t);n!==-1&&e.splice(n,1)}import{createHash as BA}from"crypto";import{copyFileSync as Xy,existsSync as wn,linkSync as $A,mkdirSync as Qy,readFileSync as tb,readdirSync as Zy,renameSync as Du,rmSync as aa,statSync as HA}from"fs";import{basename as sa,dirname as Vi,join as Ge,relative as eb}from"path";var Hr=1,ca=".scipquery-generations";function nb(e){let t=la(e.outputDb),n=UA(e,t);e.onStage?.("after-recovery-retained"),e.preserveOutputScip||wu(e.tempOutputScip,e.outputScip),e.onStage?.("after-scip-handoff"),wu(e.tempOutputDb,e.outputDb),e.onStage?.("after-database-handoff"),wu(e.tempMetaPath,e.metaPath),e.onStage?.("after-metadata-handoff");let r=ua(e.metaPath,e.outputDb),i={version:Hr,currentGeneration:r,...n?{previousGeneration:n}:{},...e.publication?{publication:e.publication}:{},publishedAt:(e.now??(()=>new Date))().toISOString()};return _e(Ge(t,"state.json"),i,{spacing:2,trailingNewline:!0}),{currentGeneration:r,...n?{previousGeneration:n}:{}}}function rb(e){try{let t=JSON.parse(tb(Ge(la(e),"state.json"),"utf8"));return t.version!==Hr||typeof t.currentGeneration!="string"||!t.currentGeneration||typeof t.publishedAt!="string"||!Number.isFinite(Date.parse(t.publishedAt))||!zA(t.previousGeneration)||!VA(t.publication)?null:t}catch{return null}}function Fee(e,t,n=()=>new Date){if(!wn(e)||!wn(t))throw new Error("metadata-only generation refresh requires stable database and metadata files");let r=rb(e),i={version:Hr,currentGeneration:ua(t,e),...r?.previousGeneration?{previousGeneration:r.previousGeneration}:{},...r?.publication?{publication:r.publication}:{},publishedAt:n().toISOString()};return _e(Ge(la(e),"state.json"),i,{spacing:2,trailingNewline:!0}),i}function qi(e,t=Ge(Vi(e),"meta.json")){let n=Ge(la(e),"state.json");if(!wn(n))return{state:"legacy",statePath:n};let r=rb(e);if(!r)return{state:"invalid",statePath:n,reason:"generation state is malformed"};try{let i=ua(t,e),o=r.currentGeneration===i,s=r.previousGeneration?wn(Ge(Vi(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 la(e){return Ge(Vi(e),ca)}function UA(e,t){if(!wn(e.outputDb))return;let n=ua(e.metaPath,e.outputDb),r=Ge(t,n),i=Ge(r,sa(e.outputDb)),o=wn(e.metaPath)?Ge(r,sa(e.metaPath)):void 0;if(!wn(i)){let s=`${r}.${process.pid}.${Date.now()}.tmp`;aa(s,{recursive:!0,force:!0}),Qy(s,{recursive:!0});let a=Ge(s,sa(e.outputDb));try{$A(e.outputDb,a)}catch{Xy(e.outputDb,a)}o&&Xy(e.metaPath,Ge(s,sa(e.metaPath))),Qy(t,{recursive:!0}),Du(s,r)}return WA(t,n),{generationIdentity:n,databasePath:eb(Vi(e.outputDb),i),...o?{metadataPath:eb(Vi(e.outputDb),o)}:{}}}function WA(e,t){for(let n of Zy(e,{withFileTypes:!0}))!n.isDirectory()||n.name===t||n.name.endsWith(".tmp")||aa(Ge(e,n.name),{recursive:!0,force:!0});for(let n of Zy(e,{withFileTypes:!0}))n.isDirectory()&&n.name.endsWith(".tmp")&&aa(Ge(e,n.name),{recursive:!0,force:!0})}function ua(e,t){let n=BA("sha256").update(`sqlite-generation-v${Hr}\0`);wn(e)&&n.update(GA(tb(e,"utf8")));let r=HA(t);return n.update(`\0${r.size}`),n.digest("hex")}function GA(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 wu(e,t){aa(`${t}.tmp-replace`,{force:!0}),Du(e,`${t}.tmp-replace`),Du(`${t}.tmp-replace`,t)}function zA(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 VA(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 ob(e,t,n){let r=new Date().toISOString();if(!ib(n.dbPath))return{state:"missing",checkedAt:r,metaPath:n.metaPath,reason:"No SQLite index database exists.",remedy:"Run: scip-query reindex"};if(!ib(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(qA(n.metaPath,"utf-8")),o=t.languages??zi(e),s=KA(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=qi(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 KA(e,t,n){return Pi(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 Gb,randomUUID as Ku}from"crypto";import{closeSync as zb,constants as OM,copyFileSync as $b,existsSync as En,lstatSync as jM,mkdirSync as Zt,mkdtempSync as Vb,openSync as qb,readdirSync as BM,readFileSync as Qe,realpathSync as $M,renameSync as nr,rmSync as Dn,statSync as HM,unlinkSync as Gu,writeFileSync as Kb}from"fs";import{dirname as Jb,join as A,resolve as St}from"path";import{setTimeout as UM}from"timers/promises";import{pathToFileURL as Hb}from"url";import{deserializeSCIP as Yb}from"@c4312/scip";import WM from"better-sqlite3";import{randomUUID as sb}from"crypto";import{closeSync as ab,mkdirSync as JA,openSync as cb,readFileSync as lb,unlinkSync as ub,writeFileSync as db}from"fs";import{dirname as YA,join as XA}from"path";function Eu(e,t={}){return ku(XA(e,"gc.lock"),t)}function ku(e,t={}){let n=t.waitMs??0,r=t.pollMs??10,i=t.now??Date.now,o=Date.now()+n;JA(YA(e),{recursive:!0});do{let s=sb();try{let a=cb(e,"wx");try{let c={version:1,pid:process.pid,token:s,startedAt:new Date(i()).toISOString()};db(a,`${JSON.stringify(c)}
372
- `)}finally{ab(a)}return{release:()=>fb(e,s)}}catch(a){if(a.code!=="EEXIST")return null;let c=mb(e);if(c&&(c.pid===void 0||!ct(c.pid))){QA(e,c);continue}if(Date.now()>=o)return null;ZA(Math.min(r,Math.max(1,o-Date.now())))}}while(Date.now()<=o);return null}function mb(e){try{let t=lb(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 QA(e,t){let n=`${e}.reclaim`,r=sb(),i;try{i=cb(n,"wx")}catch{return!1}try{db(i,`${JSON.stringify({version:1,pid:process.pid,token:r,startedAt:new Date().toISOString()})}
373
- `)}finally{ab(i)}try{let o=mb(e);return!o||o.raw!==t.raw||o.pid!==void 0&&ct(o.pid)?!1:(ub(e),!0)}catch{return!1}finally{fb(n,r)}}function fb(e,t){try{let n=JSON.parse(lb(e,"utf8"));n.pid===process.pid&&n.token===t&&ub(e)}catch{}}function ZA(e){let t=new Int32Array(new SharedArrayBuffer(Int32Array.BYTES_PER_ELEMENT));Atomics.wait(t,0,0,e)}import{lstatSync as pM,readdirSync as gM}from"fs";import{join as hM,relative as yM,resolve as Ou,sep as bM}from"path";import{createHash as eM}from"crypto";import{existsSync as Tu,mkdirSync as tM,readFileSync as da,readdirSync as Vee,renameSync as nM,rmSync as qee,writeFileSync as rM}from"fs";import{join as Ur}from"path";import{create as gb,fromBinary as hb,toBinary as iM}from"@bufbuild/protobuf";import{deserializeSCIP as ma,DocumentSchema as _u,IndexSchema as yb,serializeSCIP as bb}from"@c4312/scip";var fa=1,Ki="typescript-scip-fragments";function Qee(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=er(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=hb(_u,o.bytes);if(a.relativePath!==s)throw new Error(`TypeScript fragment path mismatch: expected ${s}, got ${a.relativePath}`);n.push(a)}let r=bb(gb(yb,{documents:n,externalSymbols:[]})),i=ma(r);if(i.documents.length!==n.length||i.externalSymbols.length!==0)throw new Error("affected TypeScript SCIP index failed structural verification");return r}function pa(e){let t=Ur(e,Ki);return{rootDir:t,blobDir:Ur(t,"blobs"),generationDir:Ur(t,"generations")}}function oM(e){let t=ma(e.indexBytes);Eb(t.metadata,kb(e)),Db(t.externalSymbols);let n=new Set,r=[];for(let o of t.documents){let s=er(o.relativePath);if(n.has(s))throw new Error(`duplicate TypeScript SCIP document path: ${s}`);n.add(s);let a=iM(_u,o),c=e.documentIdentities.get(s)??(e.allowUntrackedDocuments?tr(JSON.stringify({version:1,producerIdentity:e.producerIdentity,projectIdentity:e.projectIdentity,untrackedDocument:s,contentHash:tr(a)})):null);if(!c)throw new Error(`missing TypeScript document identity: ${s}`);r.push(Rb(e.cacheDir,{relativePath:s,bytes:a,occurrences:o.occurrences.length,symbols:o.symbols.length,referenceFragments:[]},c))}let i=vb(e,r);return Ib(e.cacheDir,i),i}function Zee(e){let t=pa(e.cacheDir);if(!Tu(Fu(t,e.generationIdentity)))return oM(e);let n=Sb({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 ete(e){let t=Sb({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=er(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,Rb(e.cacheDir,o,a))}if(r.size===0)throw new Error("TypeScript fragment generation requires at least one replacement");let i=vb(e,[...n.values()]);return Ib(e.cacheDir,i),i}function Sb(e){let t=pa(e.cacheDir),n=Fu(t,e.generationIdentity),r;try{r=wb(da(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=Ur(t.blobDir,`${o.blobHash}.scipdoc`),a=da(s);if(a.byteLength!==o.byteLength||tr(a)!==o.blobHash)throw new Error(`TypeScript fragment blob is corrupt: ${o.relativePath}`);i.set(o.relativePath,a)}return{manifest:r,fragments:i}}function Cb(e){let t=xb(e);return Pu(t.baseIndex,t.completeDocuments,"assembled")}function tte(e){let t=xb(e);return sM(t.deletedAffectedPaths),{completeIndexBytes:Pu(t.baseIndex,t.completeDocuments,"assembled"),affectedIndexBytes:Pu(t.baseIndex,t.affectedDocuments,"affected")}}function xb(e){let t=ma(e.baseIndexBytes);Eb(t.metadata,kb(e)),Db(t.externalSymbols);let n=new Map;for(let a of e.fragments){let c=er(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=er(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=hb(_u,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 Pu(e,t,n){let r=bb(gb(yb,{metadata:e.metadata,documents:t,externalSymbols:[]})),i=ma(r);if(i.documents.length!==t.length||i.externalSymbols.length!==0)throw new Error(`${n} TypeScript SCIP index failed structural verification`);return r}function sM(e){if(e.length>0)throw new Error(`affected TypeScript mini index cannot contain a deleted document: ${e[0]}`)}function Rb(e,t,n){if(t.bytes===null)throw new Error(`cannot persist an empty TypeScript fragment: ${t.relativePath}`);let r=er(t.relativePath),i=Buffer.from(t.bytes),o=tr(i),s=pa(e);tM(s.blobDir,{recursive:!0});let a=Ur(s.blobDir,`${o}.scipdoc`);if(Tu(a)){let c=da(a);if(c.byteLength!==i.byteLength||tr(c)!==o)throw new Error(`existing TypeScript fragment blob is corrupt: ${r}`)}else{let c=`${a}.${process.pid}.${Date.now()}.tmp`;rM(c,i),nM(c,a)}return{relativePath:r,blobHash:o,byteLength:i.byteLength,documentIdentity:n}}function vb(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:fa,producerIdentity:e.producerIdentity,projectIdentity:e.projectIdentity,generationIdentity:e.generationIdentity,createdAt:(e.now??(()=>new Date))().toISOString(),documents:n}}function Ib(e,t){let n=pa(e),r=Fu(n,t.generationIdentity);if(Tu(r)){let i=wb(da(r,"utf8"));if(pb(i)!==pb(t))throw new Error(`TypeScript fragment generation is immutable: ${t.generationIdentity}`);return}_e(r,t,{spacing:2,trailingNewline:!0})}function pb(e){return tr(JSON.stringify({version:e.version,producerIdentity:e.producerIdentity,projectIdentity:e.projectIdentity,generationIdentity:e.generationIdentity,documents:e.documents}))}function wb(e){let t=JSON.parse(e);if(t.version!==fa||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(er(r.relativePath),n.has(r.relativePath))throw new Error("duplicate TypeScript fragment record");n.add(r.relativePath)}return t}function Fu(e,t){return Ur(e.generationDir,aM(t))}function aM(e){if(!e)throw new Error("TypeScript fragment generation identity must be non-empty");return`${tr(e)}.json`}function Db(e){if(e.length>0)throw new Error("scip-typescript emitted external symbols; incremental document assembly is unsupported")}function Eb(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 kb(e){let t=e.packageVersion??e.runtime?.packageVersion;if(!t)throw new Error("scip-typescript package version is unavailable");return t}function er(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 tr(e){return eM("sha256").update(e).digest("hex")}import{createHash as cM}from"crypto";import{existsSync as Ji,mkdirSync as lM,readFileSync as Xi,readdirSync as Lu,renameSync as uM,rmSync as Pb,writeFileSync as dM}from"fs";import{join as bt}from"path";var ga=1,cte=64*1024*1024,Qi="typescript-scip-overlays";function lte(e){let t=_b(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=Mu(o.relativePath);if(r.has(s))throw new Error(`duplicate TypeScript overlay: ${s}`);r.add(s),n.set(s,mM(e.cacheDir,o))}if(r.size===0)throw new Error("TypeScript overlay generation requires affected documents");let i={version:ga,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 fM(e.cacheDir,i),i}function ute(e){let t=_b(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=Xi(bt(Zi(e.cacheDir),"blobs",`${r.blobHash}.scipdoc`));if(i.byteLength!==r.byteLength||Yi(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 Cb({packageVersion:e.packageVersion,baseIndexBytes:e.baseIndexBytes,fragments:n})}function dte(e,t){let n=Zi(e),r=bt(n,"generations");if(!Ji(r))return;let i=new Set(t.map(Au)),o=new Set;for(let a of Lu(r).filter(c=>i.has(c))){let c=Nu(Xi(bt(r,a),"utf8"));for(let l of c.overlays)l.blobHash&&o.add(`${l.blobHash}.scipdoc`)}for(let a of Lu(r))i.has(a)||Pb(bt(r,a),{force:!0});let s=bt(n,"blobs");if(Ji(s))for(let a of Lu(s))o.has(a)||Pb(bt(s,a),{force:!0})}function _b(e,t){let n=bt(Zi(e),"generations",Au(t));if(!Ji(n))return null;let r=Nu(Xi(n,"utf8"));if(r.generationIdentity!==t)throw new Error("TypeScript overlay generation identity does not match its path");return r}function mM(e,t){let n=Mu(t.relativePath);if(t.bytes===null)return{relativePath:n,blobHash:null,byteLength:0};let r=Buffer.from(t.bytes),i=Yi(r),o=bt(Zi(e),"blobs");lM(o,{recursive:!0});let s=bt(o,`${i}.scipdoc`);if(Ji(s)){let a=Xi(s);if(a.byteLength!==r.byteLength||Yi(a)!==i)throw new Error(`existing TypeScript overlay blob is corrupt: ${n}`)}else{let a=`${s}.${process.pid}.${Date.now()}.tmp`;dM(a,r),uM(a,s)}return{relativePath:n,blobHash:i,byteLength:r.byteLength}}function fM(e,t){let n=bt(Zi(e),"generations",Au(t.generationIdentity));if(Ji(n)){let r=Nu(Xi(n,"utf8"));if(Tb(r)!==Tb(t))throw new Error(`TypeScript overlay generation is immutable: ${t.generationIdentity}`);return}_e(n,t,{spacing:2,trailingNewline:!0})}function Nu(e){let t=JSON.parse(e);if(t.version!==ga||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(Mu(r.relativePath),n.has(r.relativePath))throw new Error("duplicate TypeScript overlay record");n.add(r.relativePath)}return t}function Zi(e){return bt(e,Qi)}function Au(e){if(!e)throw new Error("TypeScript overlay generation identity must be non-empty");return`${Yi(e)}.json`}function Tb(e){return Yi(JSON.stringify({version:e.version,producerIdentity:e.producerIdentity,projectIdentity:e.projectIdentity,baseGenerationIdentity:e.baseGenerationIdentity,generationIdentity:e.generationIdentity,overlays:e.overlays}))}function Mu(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 Yi(e){return cM("sha256").update(e).digest("hex")}var eo=1,ju="language-indexes",Fb=["index.db","index.scip","meta.json"],Lb=[ju,Ki,Qi];function ha(e){let t=[];for(let n of Fb)SM(e,n),t.push(n);for(let n of Lb)Nb(e,n,t);return{version:eo,files:t.sort()}}function ya(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(!Fb.includes(e)&&!Lb.includes(n))throw new Error(`index artifact path is not shareable: ${e}`);return e}function Tt(e,t){let n=ya(t),r=Ou(e),i=Ou(r,...n.split("/"));if(i!==r&&!i.startsWith(`${r}${bM}`))throw new Error(`index artifact escapes cache: ${t}`);return i}function Nb(e,t,n){let r=hM(e,t),i;try{i=gM(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()?Nb(e,s,n):o.isFile()&&n.push(ya(s))}}function SM(e,t){let n=Tt(e,t),r;try{r=pM(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(yM(Ou(e),n).startsWith(".."))throw new Error(`index artifact escapes cache: ${t}`)}import{readFileSync as $u,writeFileSync as Hu}from"fs";import{create as to}from"@bufbuild/protobuf";import{deserializeSCIP as Uu,serializeSCIP as Wu,DocumentSchema as EM,IndexSchema as Mb,MetadataSchema as kM,SymbolInformationSchema as PM}from"@c4312/scip";import{readFileSync as CM,writeFileSync as xM}from"fs";import{create as Ab}from"@bufbuild/protobuf";import{deserializeSCIP as RM,DocumentSchema as vM,IndexSchema as IM,serializeSCIP as wM,SymbolRole as DM}from"@c4312/scip";function xte(e){let t;try{t=RM(CM(e))}catch{return{removedDefinitionOccurrences:0,touchedDocuments:0}}let n=Bu(t);return n.removedDefinitionOccurrences>0&&xM(e,Buffer.from(wM(n.index))),{removedDefinitionOccurrences:n.removedDefinitionOccurrences,touchedDocuments:n.touchedDocuments}}function Bu(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(Ab(vM,{language:o.language,relativePath:o.relativePath,occurrences:s,symbols:o.symbols,text:o.text,positionEncoding:o.positionEncoding}))}return{index:n===0?e:Ab(IM,{metadata:e.metadata,documents:i,externalSymbols:e.externalSymbols}),removedDefinitionOccurrences:n,touchedDocuments:r}}function Ob(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=FM(e.flatMap(i=>i.documents??[])),r=Bb(e.flatMap(i=>i.externalSymbols??[]));return to(Mb,{metadata:t,documents:n,externalSymbols:r})}function Ete(e,t){if(e.length===0)throw new Error("Cannot merge zero SCIP files");let n=e.map(i=>Uu($u(i))),r=Ob(n);return Hu(t,Buffer.from(Wu(r))),{documentCount:r.documents.length,externalSymbolCount:r.externalSymbols.length,inputCount:e.length}}function kte(e,t){if(e.length===0)throw new Error("Cannot merge zero SCIP files");let n=e.map(i=>Uu($u(i))),r=Bu(Ob(n));return Hu(t,Buffer.from(Wu(r.index))),{documentCount:r.index.documents.length,externalSymbolCount:r.index.externalSymbols.length,inputCount:e.length,removedDefinitionOccurrences:r.removedDefinitionOccurrences,touchedDocuments:r.touchedDocuments}}function TM(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 to(Mb,{metadata:to(kM,{...r,projectRoot:n}),documents:e.documents,externalSymbols:e.externalSymbols})}function jb(e,t,n){let r=Uu($u(e)),i=TM(r,t,n);Hu(e,Buffer.from(Wu(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 FM(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,to(EM,{language:r.language||n.language,relativePath:r.relativePath||n.relativePath,occurrences:LM([...r.occurrences,...n.occurrences]),symbols:Bb([...r.symbols,...n.symbols]),text:AM(r.text,n.text),positionEncoding:r.positionEncoding||n.positionEncoding}))}return[...t.values()]}function LM(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 Bb(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,to(PM,{symbol:r.symbol,documentation:MM([...r.documentation,...n.documentation]),relationships:NM([...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 NM(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 AM(e,t){return e?t?e.length>=t.length?e:t:e:t}function MM(e){return[...new Set(e)]}var Ju=1,Ub="SCIP_QUERY_SHARED_CACHE",zu=JSON.stringify({cliVersion:Xn,artifactCatalogVersion:eo,sqliteGenerationStoreVersion:Hr,typescriptFragmentStoreVersion:fa,typescriptOverlayStoreVersion:ga}),Xb="manifest.json",Qb="shared-cache.json",Yu=[ju,Ki,Qi];function ba(e,t){if(!e.clean||!e.treeOid)return;let n=io(JSON.stringify({version:Ju,repositoryId:e.repositoryId,treeOid:e.treeOid,fingerprint:t,producerIdentity:zu}));return{repositoryId:e.repositoryId,worktreeId:e.worktreeId,projectRoot:e.projectRoot,treeOid:e.treeOid,fingerprint:t,producerIdentity:zu,generationId:n,repositoryCacheDir:Gi(e.repositoryId)}}function Zb(e,t,n){if(process.env[Ub]==="0")return`${Ub}=0`;if(!xu(n))return"explicit cache or database override";if(St(t)!==St(A(ra(e),"index.db")))return"index database is outside the managed worktree cache"}function eS(e,t,n){if(!xu(t))return;let r=n??gr(e);return r?A(Gi(r.repositoryId),"evidence.db"):void 0}function rr(e,t=!0){let n=Zu(e),r;try{r=GM(Qe(A(n,Xb),"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=Tt(n,i.path),s=HM(o);if(!s.isFile()||s.size!==i.size||io(Qe(o))!==i.sha256)return null}}catch{return null}return r}function tS(e){let t=rr(e.snapshot);if(t)return t;if(!Wr(e.sourceCacheDir,e.sourceProjectRoot,e.snapshot.fingerprint))throw new Error("source index is incomplete, incompatible, or corrupt");let n=Wb(e.sourceCacheDir);if(!n)throw new Error("source index artifacts are incomplete");let r=ha(e.sourceCacheDir),i=A(e.snapshot.repositoryCacheDir,"generations");Zt(i,{recursive:!0});let o=Vb(A(i,`.tmp-${process.pid}-`));try{let s=[];for(let d of r.files){let m=Tt(e.sourceCacheDir,d),f=Tt(o,d);ro(m,f);let p=Qe(f);s.push({path:d,size:p.byteLength,sha256:io(p)})}let a=Yb(Qe(A(o,"index.scip"))).metadata?.projectRoot;if(!a)throw new Error("shared SCIP generation has no project root metadata");let c=ed(e.sourceProjectRoot);if(a!==c)throw new Error("shared SCIP generation root does not match its source worktree");if(Wb(e.sourceCacheDir)!==n||e.sourceStillValid&&!e.sourceStillValid())throw new Error("source index changed while staging a shared generation");let l={version:Ju,artifactCatalogVersion:eo,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))};_e(A(o,Xb),l,{spacing:2,trailingNewline:!0});let u=Zu(e.snapshot);try{if(En(u)&&!rr(e.snapshot)){let d=`${u}.corrupt-${process.pid}-${Date.now()}`;nr(u,d),Dn(d,{recursive:!0,force:!0})}nr(o,u)}catch(d){let m=rr(e.snapshot);if(m)return m;throw d}return l}finally{Dn(o,{recursive:!0,force:!0})}}function Vu(e){let t=Zu(e.snapshot);Zt(e.targetCacheDir,{recursive:!0});let n=ku(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=Vb(A(e.targetCacheDir,".shared-hydrate-")),XM(e.manifest,e.snapshot);for(let c of e.manifest.artifacts){let l=Tt(t,c.path),u=Tt(r,c.path);ro(l,u);let d=Qe(u);if(d.byteLength!==c.size||io(d)!==c.sha256)throw new Error(`shared artifact is corrupt: ${c.path}`)}let s=ed(e.targetProjectRoot);if(s!==e.manifest.scipProjectRoot)for(let c of e.manifest.artifacts)c.path.endsWith(".scip")&&jb(Tt(r,c.path),e.manifest.scipProjectRoot,s);if(!Wr(r,e.targetProjectRoot,e.snapshot.fingerprint,!1))throw new Error("staged shared generation failed completeness or integrity validation");i=KM(e.targetCacheDir,r),o=!0,JM(r,e.targetCacheDir,i),nb({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=qi(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&&YM(e.targetCacheDir,i),s}finally{r&&Dn(r,{recursive:!0,force:!0}),n.release()}}function nS(e,t,n,r){let i=Zb(e,n.dbPath,t);if(i)return{kind:"bypassed",reason:i};try{let o=r??gr(e);if(!o)return{kind:"missed",reason:"Git worktree identity is unavailable"};if(!o.clean)return Sa(o,n.cacheDir,"missed",void 0,"worktree has uncommitted changes"),{kind:"missed",reason:"worktree has uncommitted changes"};let s=t.languages??zi(e),a=Pi(e,s,iS(t)),c=ba(o,a);if(!c)return{kind:"missed",reason:"clean committed snapshot is unavailable"};let l=rr(c);if(l)return Vu({snapshot:c,manifest:l,targetCacheDir:n.cacheDir,targetProjectRoot:e}),{kind:"attached",generationId:c.generationId};let u=zM(c,e);return u?(l=u.manifest,Vu({snapshot:c,manifest:l,targetCacheDir:n.cacheDir,targetProjectRoot:e,action:"peer-imported"}),{kind:"peer-imported",generationId:c.generationId,sourceProjectRoot:u.sourceProjectRoot}):(Sa(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 Xu(e,t,n,r){let i=Zb(e,n.dbPath,t);if(i)return{kind:"bypassed",reason:i};try{let o=r??gr(e);if(!o)return{kind:"missed",reason:"Git worktree identity is unavailable"};if(!o.clean)return Sa(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??zi(e),a=Pi(e,s,iS(t)),c=ba(o,a);if(!c)return Sa(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=rr(c);if(l)return Wr(n.cacheDir,e,a)?(qu(c,n.cacheDir,"local-fresh"),{kind:"local-fresh"}):(Vu({snapshot:c,manifest:l,targetCacheDir:n.cacheDir,targetProjectRoot:e}),{kind:"attached",generationId:c.generationId});let u=Ca(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"}:Wr(n.cacheDir,e,a)?(tS({snapshot:c,sourceCacheDir:n.cacheDir,sourceProjectRoot:e,sourceStillValid:()=>{let d=gr(e);return(d?ba(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 Yte(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(Zt(s,{recursive:!0});i()<=o;){if(rr(e))return{kind:"generation-ready"};let c=Ku();try{let l=qb(a,"wx");try{Kb(l,`${JSON.stringify({version:1,pid:process.pid,token:c,generationId:e.generationId,startedAt:new Date(i()).toISOString()})}
374
- `)}finally{zb(l)}return{kind:"owner",release:()=>{try{let u=JSON.parse(Qe(a,"utf8"));u.pid===process.pid&&u.token===c&&Gu(a)}catch{}}}}catch(l){if(l.code!=="EEXIST")return{kind:"timeout"};let u=oS(a);if(u&&(u.pid===void 0||!ct(u.pid))){qM(a,u);continue}await UM(r)}}return rr(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:Qu(i)};return sS(e.repositoryCacheDir,o,!0),o}function Sa(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:Qu(o)};return sS(Gi(e.repositoryId),s,!1),s}function Qu(e){return io(JSON.stringify({version:1,repositoryId:e.repositoryId,worktreeId:e.worktreeId,projectRoot:St(e.projectRoot),localCacheDir:St(e.localCacheDir)}))}function rS(e,t,n=void 0,r){try{let i=JSON.parse(Qe(A(t,Qb),"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(Gi(i.repositoryId),"worktrees",`${i.worktreeId}.json`),s=JSON.parse(Qe(o,"utf8")),a=r??gr(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||St(s.projectRoot)!==St(a.projectRoot)||s.treeOid!==a.treeOid||St(s.localCacheDir)!==St(t)||s.ownershipChecksum!==Qu(s))return null;let c=Ca(t);if(!QM(c?.fingerprint))return null;let l=ba(a,c.fingerprint);if(!l||s.baseGenerationId!==l.generationId||s.activeGenerationId!==l.generationId||!Wr(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=Eu(l.repositoryCacheDir,{waitMs:5e3});if(!d)return null;try{s.lastSeenAt=u.toISOString(),_e(o,s,{spacing:2,trailingNewline:!0})}finally{d.release()}return s}catch{return null}}function GM(e){let t=JSON.parse(e);if(t.version!==Ju||t.artifactCatalogVersion!==eo||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!==zu||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(ya(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 ro(e,t){Zt(Jb(t),{recursive:!0});try{$b(e,t,OM.COPYFILE_FICLONE)}catch{$b(e,t)}}function zM(e,t){for(let n of bf(t)){if(St(n.path)===St(t))continue;let r=ra(n.path),i=Ca(r);if(!(i?.status!=="complete"||JSON.stringify(i.fingerprint)!==JSON.stringify(e.fingerprint)||JSON.stringify([...i.indexedLanguages??[]].sort())!==JSON.stringify([...e.fingerprint.languages].sort()))&&Wr(r,n.path,e.fingerprint))try{return{manifest:tS({snapshot:e,sourceCacheDir:r,sourceProjectRoot:n.path}),sourceProjectRoot:n.path}}catch{continue}}return null}function VM(e,t,n){Zt(e,{recursive:!0}),_e(A(e,Qb),{version:1,repositoryId:t,worktreeId:n},{spacing:2,trailingNewline:!0})}function Wb(e){try{let t=ha(e),n=Gb("sha256");for(let r of t.files){let i=Qe(Tt(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 Ca(e){try{return JSON.parse(Qe(A(e,"meta.json"),"utf8"))}catch{return}}function iS(e){return{pnpmWorkspaces:e.indexer?.typescript?.pnpmWorkspaces,typescriptProjectMode:e.indexer?.typescript?.projectMode,typescriptProjects:e.indexer?.typescript?.projects,clojureConfigPath:e.indexer?.clojure?.configPath}}function Zu(e){return A(e.repositoryCacheDir,"generations",e.generationId)}function oS(e){try{let t=Qe(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 qM(e,t){let n=`${e}.reclaim`,r=Ku(),i;try{i=qb(n,"wx")}catch{return!1}try{Kb(i,`${JSON.stringify({version:1,pid:process.pid,token:r,startedAt:new Date().toISOString()})}
375
- `)}finally{zb(i)}try{let o=oS(e);return!o||o.raw!==t.raw||o.pid!==void 0&&ct(o.pid)?!1:(Gu(e),!0)}catch{return!1}finally{try{let o=JSON.parse(Qe(n,"utf8"));o.pid===process.pid&&o.token===r&&Gu(n)}catch{}}}function sS(e,t,n){let r=Eu(e,{waitMs:5e3});if(!r)throw new Error("repository cache cleanup is busy");try{if(n){let o=t.activeGenerationId;if(!o||!En(A(e,"generations",o)))throw new Error("shared generation disappeared before its lease was attached")}let i=A(e,"worktrees");Zt(i,{recursive:!0}),_e(A(i,`${t.worktreeId}.json`),t,{spacing:2,trailingNewline:!0}),VM(t.localCacheDir,t.repositoryId,t.worktreeId)}finally{r.release()}}function KM(e,t){let n=A(t,".rollback"),r=new Map,i=new Map;Zt(n,{recursive:!0});for(let a of["index.scip","index.db","meta.json"]){let c=A(e,a),l=En(c);r.set(a,l),l&&ro(c,A(n,"stable",a))}for(let a of Yu){let c=A(e,a),l=En(c);if(l){let u=jM(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,ca),s=En(o);return s&&aS(o,A(n,"sqlite-generations")),{root:n,stableFiles:r,managedDirectories:i,generationStoreExisted:s}}function JM(e,t,n){for(let r of Yu){let i=A(t,r);if(n.managedDirectories.get(r)){let s=A(n.root,"managed",r);Zt(Jb(s),{recursive:!0}),nr(i,s)}let o=A(e,r);En(o)&&nr(o,i)}}function YM(e,t){for(let i of Yu){let o=A(e,i),s=A(t.root,"managed",i);t.managedDirectories.get(i)?En(s)&&(Dn(o,{recursive:!0,force:!0}),nr(s,o)):Dn(o,{recursive:!0,force:!0})}for(let[i,o]of t.stableFiles){let s=A(e,i);if(!o){Dn(s,{force:!0});continue}let a=`${s}.shared-restore-${Ku()}`;ro(A(t.root,"stable",i),a),Dn(s,{force:!0}),nr(a,s)}let n=A(e,ca);Dn(n,{recursive:!0,force:!0});let r=A(t.root,"sqlite-generations");t.generationStoreExisted&&En(r)&&nr(r,n)}function aS(e,t){Zt(t,{recursive:!0});for(let n of BM(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()?aS(r,i):n.isFile()&&ro(r,i)}}function XM(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 Wr(e,t,n,r=!0,i=!0){try{let o=Ca(e);if(o?.status!=="complete"||JSON.stringify(o.fingerprint)!==JSON.stringify(n)||JSON.stringify([...o.indexedLanguages??[]].sort())!==JSON.stringify([...n.languages].sort()))return no("source validation rejected metadata"),!1;let s=ha(e),a=qi(A(e,"index.db"),A(e,"meta.json"));if(r?a.state!=="current":a.state==="invalid"||a.state==="drifted")return no(`source validation rejected SQLite generation state ${a.state}`),!1;let c=new WM(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=ed(t),d=(i?s.files.filter(m=>m.endsWith(".scip")):["index.scip"]).every(m=>{let f=Yb(Qe(Tt(e,m))).metadata?.projectRoot;return f!==l&&no(`source validation rejected SCIP root for ${m}: ${String(f)}`),f===l});return d||no("source validation rejected SCIP project roots"),d}catch(o){return no(`source validation failed: ${o instanceof Error?o.message:String(o)}`),!1}}function no(e){process.env.SCIP_QUERY_DEBUG&&console.error(`shared-cache: ${e}`)}function ed(e){try{return Hb($M(e)).href}catch{return Hb(St(e)).href}}function QM(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 io(e){return Gb("sha256").update(e).digest("hex")}function cS(){return process.env.SCIP_QUERY_PROJECT_ROOT??process.cwd()}var td;function ane(e){td=e}function lS(e=cS(),t=void 0){if(t===void 0&&td?.projectRoot===e)return td;let n=zy(e),r=_y(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(nd(r.dbPath))return{projectRoot:e,config:n,paths:r,dbPath:r.dbPath,dbPathSource:"configured",gitContext:t};let o=e0(e,"index.db");return{projectRoot:e,config:n,paths:r,dbPath:o,dbPathSource:"root-fallback",rootFallbackWarning:i0(o,r.dbPath),gitContext:t}}function cne(e){return lS(e).dbPath}function lne(e,t,n,r={}){return nd(n.dbPath)&&rS(e,n.cacheDir,void 0,r.gitContext)?{kind:"local-fresh"}:r.gitContext?.clean===!1&&r.watcherGeneration!==void 0&&Ys(n.dbPath)===r.watcherGeneration?Xu(e,t,n,r.gitContext):ob(e,t,n).state==="fresh"?Xu(e,t,n,r.gitContext):nS(e,t,n,r.gitContext)}function une(e){return!e.startsWith("__")&&!t0.has(e)}var t0=new Set(["bench","config-validate","hook-context","hook-stop","init","setup","setup-agent","setup-ci","setup-hooks","uninstall","work-audit"]);function n0(){try{return r0(cS(),{warnOnRootFallback:!0})}catch(e){console.error(`error: ${e instanceof Error?e.message:String(e)}`),process.exit(1)}}function r0(e,t={}){let{config:n,paths:r,dbPath:i,dbPathSource:o,rootFallbackWarning:s,gitContext:a}=lS(e);if(!nd(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:eS(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=Ny(e);return new ia(c,l)}function i0(e,t){let n="unknown time";try{n=ZM(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 en(e){let t=n0();try{return e(t)}finally{t.close()}}function dne(e,t){return t.concat([e])}function uS(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 mne(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 o0(e)}}function o0(e){throw new Error(`Unhandled watcher status: ${JSON.stringify(e)}`)}function dS(e){return e+1}function s0(e,t){return`${dS(e)}-${dS(t)}`}function pne(e,t,n){return`${e}:${s0(t,n)}`}function gne(e,t=180){let n=e.replace(/\s+/g," ").trim();return n.length>t?`${n.slice(0,t-3)}...`:n}var _t={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 UJ}from"os";import{fileURLToPath as Bm}from"url";import{existsSync as xa,readFileSync as a0,readdirSync as fS}from"fs";import{join as oo}from"path";var c0={files:new Set,pathPrefixes:[]},rd=/^(?:dist|build|lib|out|output|esm|cjs|umd)\//,l0=/\.(?:d\.ts|d\.mts|d\.cts|ts|tsx|mts|cts|js|jsx|mjs|cjs)$/,pS=[".ts",".tsx",".mts",".cts",".js",".jsx",".mjs",".cjs"],u0=new Set([".git",".next",".turbo","build","coverage","dist","node_modules","out"]),d0=4,m0=J("package-surface",{clearGroups:["whole-project"]});function f0(e){return m0.get(e,()=>p0(e.config.projectRoot))}function ir(e,t){let n=f0(e);return n.files.has(t)?!0:n.pathPrefixes.some(r=>t.startsWith(r))}function p0(e){let t=new Set,n=[];for(let{manifest:r,packageRoot:i}of g0(e))for(let o of h0(r))y0(e,i,o,t,n);return t.size===0&&n.length===0?c0:{files:t,pathPrefixes:n}}function g0(e){let t=[],n=hS(e,"");return n&&t.push({manifest:n,packageRoot:""}),gS(e,"",t,0),t}function gS(e,t,n,r){if(r>=d0)return;let i=oo(e,t);if(xa(i))for(let o of fS(i,{withFileTypes:!0})){if(!o.isDirectory()||u0.has(o.name))continue;let s=t?`${t}/${o.name}`:o.name,a=hS(e,s);a&&n.push({manifest:a,packageRoot:s}),gS(e,s,n,r+1)}}function hS(e,t){try{let n=a0(oo(e,t,"package.json"),"utf-8"),r=JSON.parse(n);return r&&typeof r=="object"?r:null}catch{return null}}function h0(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 yS(e.exports,t),t}function yS(e,t){if(typeof e=="string"){t.push(e);return}if(!(!e||typeof e!="object"))for(let n of Object.values(e))yS(n,t)}function y0(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 mS(c))l!==""&&i.push(tn(t,l));return}let a=o.replace(l0,"");for(let c of mS(a)){c===a&&c===o&&r.add(tn(t,o));for(let l of pS)b0(e,r,t,c+l)}r.add(tn(t,o))}function mS(e){let t=[e];return rd.test(e)&&(t.push(e.replace(rd,"src/")),t.push(e.replace(rd,""))),t}function b0(e,t,n,r){let i=tn(n,r);if(t.add(i),!r.startsWith("src/")||xa(oo(e,i)))return;let o=pS.find(u=>r.endsWith(u));if(!o)return;let s=r.slice(0,-o.length);S0(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 bS(e,n,c,`${l}${o}`))t.add(u)}function S0(e,t,n,r,i){let o=tn(n,`${r}/index${i}`);xa(oo(e,o))&&t.add(o)}function bS(e,t,n,r){let i=oo(e,t,n);if(!xa(i))return[];let o=[];for(let s of fS(i,{withFileTypes:!0})){let a=`${n}/${s.name}`;s.isDirectory()?o.push(...bS(e,t,a,r)):s.isFile()&&s.name===r&&o.push(tn(t,a))}return o}function tn(e,t){return e?`${e}/${t}`:t}import{existsSync as Ra,readFileSync as C0,readdirSync as x0}from"fs";import{dirname as R0,join as va}from"path";var v0={rootFiles:new Set,sourcePrefixes:[]},I0=new Set([".git",".scipquery","node_modules","target"]),w0=6,D0=J("rust-library-surface",{clearGroups:["whole-project"]});function SS(e,t,n){if(!n.endsWith(".rs")||!P0(E0(e),n))return!1;let r=Q(e,n).find(i=>i.symbol===t);return r?T0(Ce(e,n)[r.startLine]??""):!1}function E0(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=va(e,r,"Cargo.toml"),o=C0(i,"utf8"),s=F0(o),a=tn(r,"src/lib.rs"),c=s?tn(r,s):!L0(o)&&Ra(va(e,a))?a:null;if(!c)continue;t.add(c);let l=R0(c).replaceAll("\\","/");n.add(l==="."?"":`${l}/`)}return t.size===0?v0:{rootFiles:t,sourcePrefixes:[...n].sort()}}function P0(e,t){return t.endsWith(".rs")?e.rootFiles.has(t)?!0:N0(t)?!1:e.sourcePrefixes.some(n=>t.startsWith(n)):!1}function T0(e){return/^\s*pub\s+(?!\()/.test(e)}function _0(e){if(!Ra(e))return[];let t=[];return CS(e,"",t,0),t}function CS(e,t,n,r){let i=va(e,t);if(Ra(i)&&(Ra(va(i,"Cargo.toml"))&&n.push(t),!(r>=w0)))for(let o of x0(i,{withFileTypes:!0})){if(!o.isDirectory()||I0.has(o.name))continue;let s=t?`${t}/${o.name}`:o.name;CS(e,s,n,r+1)}}function F0(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 L0(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 N0(e){return/(?:^|\/)src\/main\.rs$/.test(e)||/(?:^|\/)src\/bin\//.test(e)||/(?:^|\/)(?:examples|tests|benches)\//.test(e)}function Y(e){let t=te(e);return X0(t)?"test":Q0(t)?"worker":Z0(t)?"entry":eO(t)?"barrel":"source"}function Gr(e){return Y(e)==="barrel"}function RS(e){return A0.get(e,()=>{let n=N(e,{includeIgnored:!1}).filter(s=>{let a=Y(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),Y(s)==="barrel"&&o.add(s);for(let a of r.get(s)??[])i.has(a)||n.push(a)}}return o})}var A0=J("live-barrels",{clearGroups:["whole-project"]});function id(e,t){return RS(e).has(te(t))}function vS(e){let t=RS(e);return N(e,{includeIgnored:!1}).filter(n=>Gr(n)&&!t.has(n)&&!M0(e,n))}function M0(e,t){let n=te(t),r=at(e).forFile(n,{facts:!0}).facts?.callables;return r&&r.length>0?!0:(e.get(`SELECT COUNT(*) AS n
367
+ `;function Iu(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(!Ny(t)&&!t.startsWith(".."))return t.replaceAll("\\","/");let n=Ny(t)?t:QN(e,t),r=XN(e,n).replaceAll("\\","/");return!r||r==="."||r.startsWith("..")?null:r}import{readFileSync as iA,writeFileSync as wu,existsSync as Qt}from"fs";import{isAbsolute as Oy,join as Zn,relative as jy,resolve as By}from"path";var $r=".scipquery.json",Uy=250,Wy=0,Gy=10*6e4,oA={enabled:!1,debounceMs:Uy,cooldownMs:Wy,gitPollMs:2e3,idleTimeoutMs:Gy,autoRefresh:!0,ignore:[]},zy=["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"]),$y=new Set(zy),fA=new Set(["pnpmWorkspaces","projectMode","projects","configPath"]),pA=new Set(["architecturalBoundarySegments"]),gA=new Set(["boundaries","allowedDependencies","requireCompletePolicy","requireAcyclic"]),hA=new Set(["name","paths"]),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 Vy(e){let t=Zn(e,$r);if(!Qt(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 ${$r} at ${t}: ${r}`,{cause:n}):new Error(`unable to read ${$r} at ${t}: ${r}`,{cause:n})}}function See(e,t={}){let n=[];PA(e,n);let r=new Set(zy);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=By(t.projectRoot,l),m=jy(t.projectRoot,d);m.startsWith("..")||Oy(m)?n.push({level:"error",path:u,message:"Project path must stay inside the project root."}):Qt(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=By(t.projectRoot,s.configPath),u=jy(t.projectRoot,l);u.startsWith("..")||Oy(u)?n.push({level:"error",path:c,message:"Config path must stay inside the project root."}):Qt(l)||n.push({level:"warning",path:c,message:`Clojure indexer config path does not exist: ${s.configPath}`})}}if(e.locality!==void 0)if(!Xe(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&&!Qt(Zn(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(!Xe(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&&!Qt(Zn(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 kA(e,n,t),EA(e,n),n}function wA(e,t){if(e.architecture===void 0)return;if(!Xe(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[s,a]of n.entries()){let c=`architecture.boundaries[${s}]`;if(!Xe(a)){t.push({level:"error",path:c,message:"Architecture boundary must be an object."});continue}let l=a.name;typeof l!="string"||l.trim()===""?t.push({level:"error",path:`${c}.name`,message:"Boundary name is required."}):r.has(l)?t.push({level:"error",path:`${c}.name`,message:`Duplicate boundary name: ${l}`}):r.add(l);let u=a.paths;if(!Array.isArray(u)||u.length===0){t.push({level:"error",path:`${c}.paths`,message:"Boundary paths must be a non-empty array."});continue}for(let[d,m]of u.entries()){let f=`${c}.paths[${d}]`;if(typeof m!="string"||m.trim()===""){t.push({level:"error",path:f,message:"Boundary path must be a non-empty string."});continue}DA(m)||t.push({level:"error",path:f,message:"Boundary path must be project-relative and may use only one trailing /* or /** glob."}),i.has(m)?t.push({level:"error",path:f,message:`Duplicate boundary path: ${m}`}):i.add(m)}}let o=e.architecture.allowedDependencies;if(o!==void 0&&!Xe(o))t.push({level:"error",path:"architecture.allowedDependencies",message:"Must be an object keyed by boundary name."});else if(Xe(o))for(let[s,a]of Object.entries(o)){let c=`architecture.allowedDependencies.${s}`;if(r.has(s)||t.push({level:"error",path:c,message:`Unknown source boundary: ${s}`}),!Array.isArray(a)){t.push({level:"error",path:c,message:"Dependency row must be an array."});continue}let l=new Set;for(let[u,d]of a.entries()){let m=`${c}[${u}]`;typeof d!="string"||d.trim()===""?t.push({level:"error",path:m,message:"Target boundary name is required."}):r.has(d)?l.has(d)?t.push({level:"error",path:m,message:`Duplicate target boundary: ${d}`}):l.add(d):t.push({level:"error",path:m,message:`Unknown target boundary: ${d}`})}}if(e.architecture.requireAcyclic!==void 0&&typeof e.architecture.requireAcyclic!="boolean"&&t.push({level:"error",path:"architecture.requireAcyclic",message:"Must be a boolean."}),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 s=Xe(o)?o:{};for(let a of[...r].sort())Object.hasOwn(s,a)||t.push({level:"error",path:`architecture.allowedDependencies.${a}`,message:"A dependency row is required by architecture.requireCompletePolicy."})}}function DA(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 EA(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 kA(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(!Xe(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&&!Qt(Zn(n.projectRoot,i.file))&&t.push({level:"warning",path:`${o}.file`,message:`Coverage contract file does not exist: ${i.file}`}),Hy(t,i.keys,`${o}.keys`,vA,"Unknown coverage-contract key extractor type."),Hy(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 Hy(e,t,n,r,i){if(!Xe(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 Cee(e){return{...oA,...e.watch}}function xee(e,t){let n=Zn(e,$r);return Qt(n)||wu(n,JSON.stringify({languages:t,watch:{enabled:!0,debounceMs:Uy,cooldownMs:Wy,gitPollMs:2e3,idleTimeoutMs:Gy,autoRefresh:!0}},null,2)+`
368
+ `),n}function Ree(e,t,n){let r=Zn(e,$r),i={...t,languages:[...n]},o=!Qt(r)||JSON.stringify(i)!==JSON.stringify(t);return o&&wu(r,JSON.stringify(i,null,2)+`
369
+ `),{configPath:r,config:i,changed:o}}function vee(e,t,n){let r=Zn(e,$r),i={...t,watch:{...t.watch,enabled:n,...n&&t.watch?.autoRefresh===void 0?{autoRefresh:!0}:{}}},o=!Qt(r)||JSON.stringify(i)!==JSON.stringify(t);return o&&wu(r,JSON.stringify(i,null,2)+`
370
+ `),{configPath:r,config:i,changed:o}}function PA(e,t){if(!Xe(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(Xe(n.indexer)){Re(t,n.indexer,"indexer",$y);for(let[r,i]of Object.entries(n.indexer))$y.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),Xe(i)&&(Re(t,i.keys,`${o}.keys`,xA),Re(t,i.mustEqual,`${o}.mustEqual`,RA))}}function Re(e,t,n,r){if(Xe(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 Xe(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}import{existsSync as ob,readFileSync as KA}from"fs";import{execFileSync as TA}from"child_process";import{existsSync as _A,readdirSync as Ky}from"fs";import{extname as Jy,join as Yy}from"path";var Xy=new Set([".git",".hg",".svn",".idea",".vscode","node_modules","vendor","dist","build","target","bin","obj",".dart_tool",".gradle",".next",".venv","venv","__pycache__"]),FA=[{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 zi(e){let t=[],n=LA(e),r=OA(e);for(let i of FA){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")&&qy(t,"javascript"),t.includes("cpp")&&!r.has(".c")&&qy(t,"c"),t}function LA(e){try{return Ky(e)}catch{return[]}}function NA(e,t){return t?.length?t.some(n=>_A(Yy(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=Ky(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=Yy(i,s.name);if(s.isDirectory()){Xy.has(s.name)||r.push(a);continue}let c=Jy(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=>Xy.has(o)))continue;let i=Jy(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 qy(e,t){let n=e.indexOf(t);n!==-1&&e.splice(n,1)}import{createHash as $A}from"crypto";import{copyFileSync as Qy,existsSync as wn,linkSync as HA,mkdirSync as Zy,readFileSync as nb,readdirSync as eb,renameSync as Eu,rmSync as ca,statSync as UA}from"fs";import{basename as aa,dirname as Vi,join as Ge,relative as tb}from"path";var Hr=1,la=".scipquery-generations";function rb(e){let t=ua(e.outputDb),n=WA(e,t);e.onStage?.("after-recovery-retained"),e.preserveOutputScip||Du(e.tempOutputScip,e.outputScip),e.onStage?.("after-scip-handoff"),Du(e.tempOutputDb,e.outputDb),e.onStage?.("after-database-handoff"),Du(e.tempMetaPath,e.metaPath),e.onStage?.("after-metadata-handoff");let r=da(e.metaPath,e.outputDb),i={version:Hr,currentGeneration:r,...n?{previousGeneration:n}:{},...e.publication?{publication:e.publication}:{},publishedAt:(e.now??(()=>new Date))().toISOString()};return _e(Ge(t,"state.json"),i,{spacing:2,trailingNewline:!0}),{currentGeneration:r,...n?{previousGeneration:n}:{}}}function ib(e){try{let t=JSON.parse(nb(Ge(ua(e),"state.json"),"utf8"));return t.version!==Hr||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 Lee(e,t,n=()=>new Date){if(!wn(e)||!wn(t))throw new Error("metadata-only generation refresh requires stable database and metadata files");let r=ib(e),i={version:Hr,currentGeneration:da(t,e),...r?.previousGeneration?{previousGeneration:r.previousGeneration}:{},...r?.publication?{publication:r.publication}:{},publishedAt:n().toISOString()};return _e(Ge(ua(e),"state.json"),i,{spacing:2,trailingNewline:!0}),i}function qi(e,t=Ge(Vi(e),"meta.json")){let n=Ge(ua(e),"state.json");if(!wn(n))return{state:"legacy",statePath:n};let r=ib(e);if(!r)return{state:"invalid",statePath:n,reason:"generation state is malformed"};try{let i=da(t,e),o=r.currentGeneration===i,s=r.previousGeneration?wn(Ge(Vi(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 ua(e){return Ge(Vi(e),la)}function WA(e,t){if(!wn(e.outputDb))return;let n=da(e.metaPath,e.outputDb),r=Ge(t,n),i=Ge(r,aa(e.outputDb)),o=wn(e.metaPath)?Ge(r,aa(e.metaPath)):void 0;if(!wn(i)){let s=`${r}.${process.pid}.${Date.now()}.tmp`;ca(s,{recursive:!0,force:!0}),Zy(s,{recursive:!0});let a=Ge(s,aa(e.outputDb));try{HA(e.outputDb,a)}catch{Qy(e.outputDb,a)}o&&Qy(e.metaPath,Ge(s,aa(e.metaPath))),Zy(t,{recursive:!0}),Eu(s,r)}return GA(t,n),{generationIdentity:n,databasePath:tb(Vi(e.outputDb),i),...o?{metadataPath:tb(Vi(e.outputDb),o)}:{}}}function GA(e,t){for(let n of eb(e,{withFileTypes:!0}))!n.isDirectory()||n.name===t||n.name.endsWith(".tmp")||ca(Ge(e,n.name),{recursive:!0,force:!0});for(let n of eb(e,{withFileTypes:!0}))n.isDirectory()&&n.name.endsWith(".tmp")&&ca(Ge(e,n.name),{recursive:!0,force:!0})}function da(e,t){let n=$A("sha256").update(`sqlite-generation-v${Hr}\0`);wn(e)&&n.update(zA(nb(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 Du(e,t){ca(`${t}.tmp-replace`,{force:!0}),Eu(e,`${t}.tmp-replace`),Eu(`${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 sb(e,t,n){let r=new Date().toISOString();if(!ob(n.dbPath))return{state:"missing",checkedAt:r,metaPath:n.metaPath,reason:"No SQLite index database exists.",remedy:"Run: scip-query reindex"};if(!ob(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??zi(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=qi(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 Pi(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 zb,randomUUID as Ju}from"crypto";import{closeSync as Vb,constants as jM,copyFileSync as Hb,existsSync as En,lstatSync as BM,mkdirSync as Zt,mkdtempSync as qb,openSync as Kb,readdirSync as $M,readFileSync as Qe,realpathSync as HM,renameSync as nr,rmSync as Dn,statSync as UM,unlinkSync as zu,writeFileSync as Jb}from"fs";import{dirname as Yb,join as A,resolve as St}from"path";import{setTimeout as WM}from"timers/promises";import{pathToFileURL as Ub}from"url";import{deserializeSCIP as Xb}from"@c4312/scip";import GM from"better-sqlite3";import{randomUUID as ab}from"crypto";import{closeSync as cb,mkdirSync as YA,openSync as lb,readFileSync as ub,unlinkSync as db,writeFileSync as mb}from"fs";import{dirname as XA,join as QA}from"path";function ku(e,t={}){return Pu(QA(e,"gc.lock"),t)}function Pu(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=ab();try{let a=lb(e,"wx");try{let c={version:1,pid:process.pid,token:s,startedAt:new Date(i()).toISOString()};mb(a,`${JSON.stringify(c)}
372
+ `)}finally{cb(a)}return{release:()=>pb(e,s)}}catch(a){if(a.code!=="EEXIST")return null;let c=fb(e);if(c&&(c.pid===void 0||!ct(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 fb(e){try{let t=ub(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=ab(),i;try{i=lb(n,"wx")}catch{return!1}try{mb(i,`${JSON.stringify({version:1,pid:process.pid,token:r,startedAt:new Date().toISOString()})}
373
+ `)}finally{cb(i)}try{let o=fb(e);return!o||o.raw!==t.raw||o.pid!==void 0&&ct(o.pid)?!1:(db(e),!0)}catch{return!1}finally{pb(n,r)}}function pb(e,t){try{let n=JSON.parse(ub(e,"utf8"));n.pid===process.pid&&n.token===t&&db(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 ju,sep as SM}from"path";import{createHash as tM}from"crypto";import{existsSync as _u,mkdirSync as nM,readFileSync as ma,readdirSync as qee,renameSync as rM,rmSync as Kee,writeFileSync as iM}from"fs";import{join as Ur}from"path";import{create as hb,fromBinary as yb,toBinary as oM}from"@bufbuild/protobuf";import{deserializeSCIP as fa,DocumentSchema as Fu,IndexSchema as bb,serializeSCIP as Sb}from"@c4312/scip";var pa=1,Ki="typescript-scip-fragments";function Zee(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=er(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=yb(Fu,o.bytes);if(a.relativePath!==s)throw new Error(`TypeScript fragment path mismatch: expected ${s}, got ${a.relativePath}`);n.push(a)}let r=Sb(hb(bb,{documents:n,externalSymbols:[]})),i=fa(r);if(i.documents.length!==n.length||i.externalSymbols.length!==0)throw new Error("affected TypeScript SCIP index failed structural verification");return r}function ga(e){let t=Ur(e,Ki);return{rootDir:t,blobDir:Ur(t,"blobs"),generationDir:Ur(t,"generations")}}function sM(e){let t=fa(e.indexBytes);kb(t.metadata,Pb(e)),Eb(t.externalSymbols);let n=new Set,r=[];for(let o of t.documents){let s=er(o.relativePath);if(n.has(s))throw new Error(`duplicate TypeScript SCIP document path: ${s}`);n.add(s);let a=oM(Fu,o),c=e.documentIdentities.get(s)??(e.allowUntrackedDocuments?tr(JSON.stringify({version:1,producerIdentity:e.producerIdentity,projectIdentity:e.projectIdentity,untrackedDocument:s,contentHash:tr(a)})):null);if(!c)throw new Error(`missing TypeScript document identity: ${s}`);r.push(vb(e.cacheDir,{relativePath:s,bytes:a,occurrences:o.occurrences.length,symbols:o.symbols.length,referenceFragments:[]},c))}let i=Ib(e,r);return wb(e.cacheDir,i),i}function ete(e){let t=ga(e.cacheDir);if(!_u(Lu(t,e.generationIdentity)))return sM(e);let n=Cb({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 tte(e){let t=Cb({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=er(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,vb(e.cacheDir,o,a))}if(r.size===0)throw new Error("TypeScript fragment generation requires at least one replacement");let i=Ib(e,[...n.values()]);return wb(e.cacheDir,i),i}function Cb(e){let t=ga(e.cacheDir),n=Lu(t,e.generationIdentity),r;try{r=Db(ma(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=Ur(t.blobDir,`${o.blobHash}.scipdoc`),a=ma(s);if(a.byteLength!==o.byteLength||tr(a)!==o.blobHash)throw new Error(`TypeScript fragment blob is corrupt: ${o.relativePath}`);i.set(o.relativePath,a)}return{manifest:r,fragments:i}}function xb(e){let t=Rb(e);return Tu(t.baseIndex,t.completeDocuments,"assembled")}function nte(e){let t=Rb(e);return aM(t.deletedAffectedPaths),{completeIndexBytes:Tu(t.baseIndex,t.completeDocuments,"assembled"),affectedIndexBytes:Tu(t.baseIndex,t.affectedDocuments,"affected")}}function Rb(e){let t=fa(e.baseIndexBytes);kb(t.metadata,Pb(e)),Eb(t.externalSymbols);let n=new Map;for(let a of e.fragments){let c=er(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=er(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=yb(Fu,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 Tu(e,t,n){let r=Sb(hb(bb,{metadata:e.metadata,documents:t,externalSymbols:[]})),i=fa(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 vb(e,t,n){if(t.bytes===null)throw new Error(`cannot persist an empty TypeScript fragment: ${t.relativePath}`);let r=er(t.relativePath),i=Buffer.from(t.bytes),o=tr(i),s=ga(e);nM(s.blobDir,{recursive:!0});let a=Ur(s.blobDir,`${o}.scipdoc`);if(_u(a)){let c=ma(a);if(c.byteLength!==i.byteLength||tr(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 Ib(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:pa,producerIdentity:e.producerIdentity,projectIdentity:e.projectIdentity,generationIdentity:e.generationIdentity,createdAt:(e.now??(()=>new Date))().toISOString(),documents:n}}function wb(e,t){let n=ga(e),r=Lu(n,t.generationIdentity);if(_u(r)){let i=Db(ma(r,"utf8"));if(gb(i)!==gb(t))throw new Error(`TypeScript fragment generation is immutable: ${t.generationIdentity}`);return}_e(r,t,{spacing:2,trailingNewline:!0})}function gb(e){return tr(JSON.stringify({version:e.version,producerIdentity:e.producerIdentity,projectIdentity:e.projectIdentity,generationIdentity:e.generationIdentity,documents:e.documents}))}function Db(e){let t=JSON.parse(e);if(t.version!==pa||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(er(r.relativePath),n.has(r.relativePath))throw new Error("duplicate TypeScript fragment record");n.add(r.relativePath)}return t}function Lu(e,t){return Ur(e.generationDir,cM(t))}function cM(e){if(!e)throw new Error("TypeScript fragment generation identity must be non-empty");return`${tr(e)}.json`}function Eb(e){if(e.length>0)throw new Error("scip-typescript emitted external symbols; incremental document assembly is unsupported")}function kb(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 Pb(e){let t=e.packageVersion??e.runtime?.packageVersion;if(!t)throw new Error("scip-typescript package version is unavailable");return t}function er(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 tr(e){return tM("sha256").update(e).digest("hex")}import{createHash as lM}from"crypto";import{existsSync as Ji,mkdirSync as uM,readFileSync as Xi,readdirSync as Nu,renameSync as dM,rmSync as Tb,writeFileSync as mM}from"fs";import{join as bt}from"path";var ha=1,lte=64*1024*1024,Qi="typescript-scip-overlays";function ute(e){let t=Fb(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=Ou(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:ha,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 dte(e){let t=Fb(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=Xi(bt(Zi(e.cacheDir),"blobs",`${r.blobHash}.scipdoc`));if(i.byteLength!==r.byteLength||Yi(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 xb({packageVersion:e.packageVersion,baseIndexBytes:e.baseIndexBytes,fragments:n})}function mte(e,t){let n=Zi(e),r=bt(n,"generations");if(!Ji(r))return;let i=new Set(t.map(Mu)),o=new Set;for(let a of Nu(r).filter(c=>i.has(c))){let c=Au(Xi(bt(r,a),"utf8"));for(let l of c.overlays)l.blobHash&&o.add(`${l.blobHash}.scipdoc`)}for(let a of Nu(r))i.has(a)||Tb(bt(r,a),{force:!0});let s=bt(n,"blobs");if(Ji(s))for(let a of Nu(s))o.has(a)||Tb(bt(s,a),{force:!0})}function Fb(e,t){let n=bt(Zi(e),"generations",Mu(t));if(!Ji(n))return null;let r=Au(Xi(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=Ou(t.relativePath);if(t.bytes===null)return{relativePath:n,blobHash:null,byteLength:0};let r=Buffer.from(t.bytes),i=Yi(r),o=bt(Zi(e),"blobs");uM(o,{recursive:!0});let s=bt(o,`${i}.scipdoc`);if(Ji(s)){let a=Xi(s);if(a.byteLength!==r.byteLength||Yi(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=bt(Zi(e),"generations",Mu(t.generationIdentity));if(Ji(n)){let r=Au(Xi(n,"utf8"));if(_b(r)!==_b(t))throw new Error(`TypeScript overlay generation is immutable: ${t.generationIdentity}`);return}_e(n,t,{spacing:2,trailingNewline:!0})}function Au(e){let t=JSON.parse(e);if(t.version!==ha||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(Ou(r.relativePath),n.has(r.relativePath))throw new Error("duplicate TypeScript overlay record");n.add(r.relativePath)}return t}function Zi(e){return bt(e,Qi)}function Mu(e){if(!e)throw new Error("TypeScript overlay generation identity must be non-empty");return`${Yi(e)}.json`}function _b(e){return Yi(JSON.stringify({version:e.version,producerIdentity:e.producerIdentity,projectIdentity:e.projectIdentity,baseGenerationIdentity:e.baseGenerationIdentity,generationIdentity:e.generationIdentity,overlays:e.overlays}))}function Ou(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 Yi(e){return lM("sha256").update(e).digest("hex")}var eo=1,Bu="language-indexes",Lb=["index.db","index.scip","meta.json"],Nb=[Bu,Ki,Qi];function ya(e){let t=[];for(let n of Lb)CM(e,n),t.push(n);for(let n of Nb)Ab(e,n,t);return{version:eo,files:t.sort()}}function ba(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(!Lb.includes(e)&&!Nb.includes(n))throw new Error(`index artifact path is not shareable: ${e}`);return e}function Tt(e,t){let n=ba(t),r=ju(e),i=ju(r,...n.split("/"));if(i!==r&&!i.startsWith(`${r}${SM}`))throw new Error(`index artifact escapes cache: ${t}`);return i}function Ab(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()?Ab(e,s,n):o.isFile()&&n.push(ba(s))}}function CM(e,t){let n=Tt(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(ju(e),n).startsWith(".."))throw new Error(`index artifact escapes cache: ${t}`)}import{readFileSync as Hu,writeFileSync as Uu}from"fs";import{create as to}from"@bufbuild/protobuf";import{deserializeSCIP as Wu,serializeSCIP as Gu,DocumentSchema as kM,IndexSchema as Ob,MetadataSchema as PM,SymbolInformationSchema as TM}from"@c4312/scip";import{readFileSync as xM,writeFileSync as RM}from"fs";import{create as Mb}from"@bufbuild/protobuf";import{deserializeSCIP as vM,DocumentSchema as IM,IndexSchema as wM,serializeSCIP as DM,SymbolRole as EM}from"@c4312/scip";function Rte(e){let t;try{t=vM(xM(e))}catch{return{removedDefinitionOccurrences:0,touchedDocuments:0}}let n=$u(t);return n.removedDefinitionOccurrences>0&&RM(e,Buffer.from(DM(n.index))),{removedDefinitionOccurrences:n.removedDefinitionOccurrences,touchedDocuments:n.touchedDocuments}}function $u(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&EM.Definition)===0||t.has(a.symbol)?!0:(n+=1,!1));if(s.length===o.occurrences.length){i.push(o);continue}r+=1,i.push(Mb(IM,{language:o.language,relativePath:o.relativePath,occurrences:s,symbols:o.symbols,text:o.text,positionEncoding:o.positionEncoding}))}return{index:n===0?e:Mb(wM,{metadata:e.metadata,documents:i,externalSymbols:e.externalSymbols}),removedDefinitionOccurrences:n,touchedDocuments:r}}function jb(e){if(e.length===0)throw new Error("Cannot merge zero SCIP indexes");if(e.length===1)return e[0];let t=FM(e),n=LM(e.flatMap(i=>i.documents??[])),r=$b(e.flatMap(i=>i.externalSymbols??[]));return to(Ob,{metadata:t,documents:n,externalSymbols:r})}function kte(e,t){if(e.length===0)throw new Error("Cannot merge zero SCIP files");let n=e.map(i=>Wu(Hu(i))),r=jb(n);return Uu(t,Buffer.from(Gu(r))),{documentCount:r.documents.length,externalSymbolCount:r.externalSymbols.length,inputCount:e.length}}function Pte(e,t){if(e.length===0)throw new Error("Cannot merge zero SCIP files");let n=e.map(i=>Wu(Hu(i))),r=$u(jb(n));return Uu(t,Buffer.from(Gu(r.index))),{documentCount:r.index.documents.length,externalSymbolCount:r.index.externalSymbols.length,inputCount:e.length,removedDefinitionOccurrences:r.removedDefinitionOccurrences,touchedDocuments:r.touchedDocuments}}function _M(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 to(Ob,{metadata:to(PM,{...r,projectRoot:n}),documents:e.documents,externalSymbols:e.externalSymbols})}function Bb(e,t,n){let r=Wu(Hu(e)),i=_M(r,t,n);Uu(e,Buffer.from(Gu(i)))}function FM(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,to(kM,{language:r.language||n.language,relativePath:r.relativePath||n.relativePath,occurrences:NM([...r.occurrences,...n.occurrences]),symbols:$b([...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 $b(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,to(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 Yu=1,Wb="SCIP_QUERY_SHARED_CACHE",Vu=JSON.stringify({cliVersion:Xn,artifactCatalogVersion:eo,sqliteGenerationStoreVersion:Hr,typescriptFragmentStoreVersion:pa,typescriptOverlayStoreVersion:ha}),Qb="manifest.json",Zb="shared-cache.json",Xu=[Bu,Ki,Qi];function Sa(e,t){if(!e.clean||!e.treeOid)return;let n=io(JSON.stringify({version:Yu,repositoryId:e.repositoryId,treeOid:e.treeOid,fingerprint:t,producerIdentity:Vu}));return{repositoryId:e.repositoryId,worktreeId:e.worktreeId,projectRoot:e.projectRoot,treeOid:e.treeOid,fingerprint:t,producerIdentity:Vu,generationId:n,repositoryCacheDir:Gi(e.repositoryId)}}function eS(e,t,n){if(process.env[Wb]==="0")return`${Wb}=0`;if(!Ru(n))return"explicit cache or database override";if(St(t)!==St(A(ia(e),"index.db")))return"index database is outside the managed worktree cache"}function tS(e,t,n){if(!Ru(t))return;let r=n??gr(e);return r?A(Gi(r.repositoryId),"evidence.db"):void 0}function rr(e,t=!0){let n=ed(e),r;try{r=zM(Qe(A(n,Qb),"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=Tt(n,i.path),s=UM(o);if(!s.isFile()||s.size!==i.size||io(Qe(o))!==i.sha256)return null}}catch{return null}return r}function nS(e){let t=rr(e.snapshot);if(t)return t;if(!Wr(e.sourceCacheDir,e.sourceProjectRoot,e.snapshot.fingerprint))throw new Error("source index is incomplete, incompatible, or corrupt");let n=Gb(e.sourceCacheDir);if(!n)throw new Error("source index artifacts are incomplete");let r=ya(e.sourceCacheDir),i=A(e.snapshot.repositoryCacheDir,"generations");Zt(i,{recursive:!0});let o=qb(A(i,`.tmp-${process.pid}-`));try{let s=[];for(let d of r.files){let m=Tt(e.sourceCacheDir,d),f=Tt(o,d);ro(m,f);let p=Qe(f);s.push({path:d,size:p.byteLength,sha256:io(p)})}let a=Xb(Qe(A(o,"index.scip"))).metadata?.projectRoot;if(!a)throw new Error("shared SCIP generation has no project root metadata");let c=td(e.sourceProjectRoot);if(a!==c)throw new Error("shared SCIP generation root does not match its source worktree");if(Gb(e.sourceCacheDir)!==n||e.sourceStillValid&&!e.sourceStillValid())throw new Error("source index changed while staging a shared generation");let l={version:Yu,artifactCatalogVersion:eo,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))};_e(A(o,Qb),l,{spacing:2,trailingNewline:!0});let u=ed(e.snapshot);try{if(En(u)&&!rr(e.snapshot)){let d=`${u}.corrupt-${process.pid}-${Date.now()}`;nr(u,d),Dn(d,{recursive:!0,force:!0})}nr(o,u)}catch(d){let m=rr(e.snapshot);if(m)return m;throw d}return l}finally{Dn(o,{recursive:!0,force:!0})}}function qu(e){let t=ed(e.snapshot);Zt(e.targetCacheDir,{recursive:!0});let n=Pu(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=qb(A(e.targetCacheDir,".shared-hydrate-")),QM(e.manifest,e.snapshot);for(let c of e.manifest.artifacts){let l=Tt(t,c.path),u=Tt(r,c.path);ro(l,u);let d=Qe(u);if(d.byteLength!==c.size||io(d)!==c.sha256)throw new Error(`shared artifact is corrupt: ${c.path}`)}let s=td(e.targetProjectRoot);if(s!==e.manifest.scipProjectRoot)for(let c of e.manifest.artifacts)c.path.endsWith(".scip")&&Bb(Tt(r,c.path),e.manifest.scipProjectRoot,s);if(!Wr(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),rb({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=qi(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}`);Ku(e.snapshot,e.targetCacheDir,e.action??"attached",e.now)}catch(s){throw o&&i&&XM(e.targetCacheDir,i),s}finally{r&&Dn(r,{recursive:!0,force:!0}),n.release()}}function rS(e,t,n,r){let i=eS(e,n.dbPath,t);if(i)return{kind:"bypassed",reason:i};try{let o=r??gr(e);if(!o)return{kind:"missed",reason:"Git worktree identity is unavailable"};if(!o.clean)return Ca(o,n.cacheDir,"missed",void 0,"worktree has uncommitted changes"),{kind:"missed",reason:"worktree has uncommitted changes"};let s=t.languages??zi(e),a=Pi(e,s,oS(t)),c=Sa(o,a);if(!c)return{kind:"missed",reason:"clean committed snapshot is unavailable"};let l=rr(c);if(l)return qu({snapshot:c,manifest:l,targetCacheDir:n.cacheDir,targetProjectRoot:e}),{kind:"attached",generationId:c.generationId};let u=VM(c,e);return u?(l=u.manifest,qu({snapshot:c,manifest:l,targetCacheDir:n.cacheDir,targetProjectRoot:e,action:"peer-imported"}),{kind:"peer-imported",generationId:c.generationId,sourceProjectRoot:u.sourceProjectRoot}):(Ca(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 Qu(e,t,n,r){let i=eS(e,n.dbPath,t);if(i)return{kind:"bypassed",reason:i};try{let o=r??gr(e);if(!o)return{kind:"missed",reason:"Git worktree identity is unavailable"};if(!o.clean)return Ca(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??zi(e),a=Pi(e,s,oS(t)),c=Sa(o,a);if(!c)return Ca(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=rr(c);if(l)return Wr(n.cacheDir,e,a)?(Ku(c,n.cacheDir,"local-fresh"),{kind:"local-fresh"}):(qu({snapshot:c,manifest:l,targetCacheDir:n.cacheDir,targetProjectRoot:e}),{kind:"attached",generationId:c.generationId});let u=xa(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"}:Wr(n.cacheDir,e,a)?(nS({snapshot:c,sourceCacheDir:n.cacheDir,sourceProjectRoot:e,sourceStillValid:()=>{let d=gr(e);return(d?Sa(d,a):void 0)?.generationId===c.generationId}}),Ku(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 Xte(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(Zt(s,{recursive:!0});i()<=o;){if(rr(e))return{kind:"generation-ready"};let c=Ju();try{let l=Kb(a,"wx");try{Jb(l,`${JSON.stringify({version:1,pid:process.pid,token:c,generationId:e.generationId,startedAt:new Date(i()).toISOString()})}
374
+ `)}finally{Vb(l)}return{kind:"owner",release:()=>{try{let u=JSON.parse(Qe(a,"utf8"));u.pid===process.pid&&u.token===c&&zu(a)}catch{}}}}catch(l){if(l.code!=="EEXIST")return{kind:"timeout"};let u=sS(a);if(u&&(u.pid===void 0||!ct(u.pid))){KM(a,u);continue}await WM(r)}}return rr(e)?{kind:"generation-ready"}:{kind:"timeout"}}function Ku(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:Zu(i)};return aS(e.repositoryCacheDir,o,!0),o}function Ca(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:Zu(o)};return aS(Gi(e.repositoryId),s,!1),s}function Zu(e){return io(JSON.stringify({version:1,repositoryId:e.repositoryId,worktreeId:e.worktreeId,projectRoot:St(e.projectRoot),localCacheDir:St(e.localCacheDir)}))}function iS(e,t,n=void 0,r){try{let i=JSON.parse(Qe(A(t,Zb),"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(Gi(i.repositoryId),"worktrees",`${i.worktreeId}.json`),s=JSON.parse(Qe(o,"utf8")),a=r??gr(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||St(s.projectRoot)!==St(a.projectRoot)||s.treeOid!==a.treeOid||St(s.localCacheDir)!==St(t)||s.ownershipChecksum!==Zu(s))return null;let c=xa(t);if(!ZM(c?.fingerprint))return null;let l=Sa(a,c.fingerprint);if(!l||s.baseGenerationId!==l.generationId||s.activeGenerationId!==l.generationId||!Wr(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=ku(l.repositoryCacheDir,{waitMs:5e3});if(!d)return null;try{s.lastSeenAt=u.toISOString(),_e(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!==Yu||t.artifactCatalogVersion!==eo||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!==Vu||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(ba(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 ro(e,t){Zt(Yb(t),{recursive:!0});try{Hb(e,t,jM.COPYFILE_FICLONE)}catch{Hb(e,t)}}function VM(e,t){for(let n of Cf(t)){if(St(n.path)===St(t))continue;let r=ia(n.path),i=xa(r);if(!(i?.status!=="complete"||JSON.stringify(i.fingerprint)!==JSON.stringify(e.fingerprint)||JSON.stringify([...i.indexedLanguages??[]].sort())!==JSON.stringify([...e.fingerprint.languages].sort()))&&Wr(r,n.path,e.fingerprint))try{return{manifest:nS({snapshot:e,sourceCacheDir:r,sourceProjectRoot:n.path}),sourceProjectRoot:n.path}}catch{continue}}return null}function qM(e,t,n){Zt(e,{recursive:!0}),_e(A(e,Zb),{version:1,repositoryId:t,worktreeId:n},{spacing:2,trailingNewline:!0})}function Gb(e){try{let t=ya(e),n=zb("sha256");for(let r of t.files){let i=Qe(Tt(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 xa(e){try{return JSON.parse(Qe(A(e,"meta.json"),"utf8"))}catch{return}}function oS(e){return{pnpmWorkspaces:e.indexer?.typescript?.pnpmWorkspaces,typescriptProjectMode:e.indexer?.typescript?.projectMode,typescriptProjects:e.indexer?.typescript?.projects,clojureConfigPath:e.indexer?.clojure?.configPath}}function ed(e){return A(e.repositoryCacheDir,"generations",e.generationId)}function sS(e){try{let t=Qe(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=Ju(),i;try{i=Kb(n,"wx")}catch{return!1}try{Jb(i,`${JSON.stringify({version:1,pid:process.pid,token:r,startedAt:new Date().toISOString()})}
375
+ `)}finally{Vb(i)}try{let o=sS(e);return!o||o.raw!==t.raw||o.pid!==void 0&&ct(o.pid)?!1:(zu(e),!0)}catch{return!1}finally{try{let o=JSON.parse(Qe(n,"utf8"));o.pid===process.pid&&o.token===r&&zu(n)}catch{}}}function aS(e,t,n){let r=ku(e,{waitMs:5e3});if(!r)throw new Error("repository cache cleanup is busy");try{if(n){let o=t.activeGenerationId;if(!o||!En(A(e,"generations",o)))throw new Error("shared generation disappeared before its lease was attached")}let i=A(e,"worktrees");Zt(i,{recursive:!0}),_e(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;Zt(n,{recursive:!0});for(let a of["index.scip","index.db","meta.json"]){let c=A(e,a),l=En(c);r.set(a,l),l&&ro(c,A(n,"stable",a))}for(let a of Xu){let c=A(e,a),l=En(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,la),s=En(o);return s&&cS(o,A(n,"sqlite-generations")),{root:n,stableFiles:r,managedDirectories:i,generationStoreExisted:s}}function YM(e,t,n){for(let r of Xu){let i=A(t,r);if(n.managedDirectories.get(r)){let s=A(n.root,"managed",r);Zt(Yb(s),{recursive:!0}),nr(i,s)}let o=A(e,r);En(o)&&nr(o,i)}}function XM(e,t){for(let i of Xu){let o=A(e,i),s=A(t.root,"managed",i);t.managedDirectories.get(i)?En(s)&&(Dn(o,{recursive:!0,force:!0}),nr(s,o)):Dn(o,{recursive:!0,force:!0})}for(let[i,o]of t.stableFiles){let s=A(e,i);if(!o){Dn(s,{force:!0});continue}let a=`${s}.shared-restore-${Ju()}`;ro(A(t.root,"stable",i),a),Dn(s,{force:!0}),nr(a,s)}let n=A(e,la);Dn(n,{recursive:!0,force:!0});let r=A(t.root,"sqlite-generations");t.generationStoreExisted&&En(r)&&nr(r,n)}function cS(e,t){Zt(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()?cS(r,i):n.isFile()&&ro(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 Wr(e,t,n,r=!0,i=!0){try{let o=xa(e);if(o?.status!=="complete"||JSON.stringify(o.fingerprint)!==JSON.stringify(n)||JSON.stringify([...o.indexedLanguages??[]].sort())!==JSON.stringify([...n.languages].sort()))return no("source validation rejected metadata"),!1;let s=ya(e),a=qi(A(e,"index.db"),A(e,"meta.json"));if(r?a.state!=="current":a.state==="invalid"||a.state==="drifted")return no(`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=td(t),d=(i?s.files.filter(m=>m.endsWith(".scip")):["index.scip"]).every(m=>{let f=Xb(Qe(Tt(e,m))).metadata?.projectRoot;return f!==l&&no(`source validation rejected SCIP root for ${m}: ${String(f)}`),f===l});return d||no("source validation rejected SCIP project roots"),d}catch(o){return no(`source validation failed: ${o instanceof Error?o.message:String(o)}`),!1}}function no(e){process.env.SCIP_QUERY_DEBUG&&console.error(`shared-cache: ${e}`)}function td(e){try{return Ub(HM(e)).href}catch{return Ub(St(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 io(e){return zb("sha256").update(e).digest("hex")}function lS(){return process.env.SCIP_QUERY_PROJECT_ROOT??process.cwd()}var nd;function cne(e){nd=e}function uS(e=lS(),t=void 0){if(t===void 0&&nd?.projectRoot===e)return nd;let n=Vy(e),r=Fy(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(rd(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 lne(e){return uS(e).dbPath}function une(e,t,n,r={}){return rd(n.dbPath)&&iS(e,n.cacheDir,void 0,r.gitContext)?{kind:"local-fresh"}:r.gitContext?.clean===!1&&r.watcherGeneration!==void 0&&Xs(n.dbPath)===r.watcherGeneration?Qu(e,t,n,r.gitContext):sb(e,t,n).state==="fresh"?Qu(e,t,n,r.gitContext):rS(e,t,n,r.gitContext)}function dne(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(lS(),{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}=uS(e);if(!rd(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:tS(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=Ay(e);return new oa(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 en(e){let t=r0();try{return e(t)}finally{t.close()}}function mne(e,t){return t.concat([e])}function dS(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 fne(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 mS(e){return e+1}function a0(e,t){return`${mS(e)}-${mS(t)}`}function gne(e,t,n){return`${e}:${a0(t,n)}`}function hne(e,t=180){let n=e.replace(/\s+/g," ").trim();return n.length>t?`${n.slice(0,t-3)}...`:n}var _t={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 WJ}from"os";import{fileURLToPath as Hm}from"url";import{existsSync as Ra,readFileSync as c0,readdirSync as pS}from"fs";import{join as oo}from"path";var l0={files:new Set,pathPrefixes:[]},id=/^(?:dist|build|lib|out|output|esm|cjs|umd)\//,u0=/\.(?:d\.ts|d\.mts|d\.cts|ts|tsx|mts|cts|js|jsx|mjs|cjs)$/,gS=[".ts",".tsx",".mts",".cts",".js",".jsx",".mjs",".cjs"],d0=new Set([".git",".next",".turbo","build","coverage","dist","node_modules","out"]),m0=4,f0=J("package-surface",{clearGroups:["whole-project"]});function p0(e){return f0.get(e,()=>g0(e.config.projectRoot))}function ir(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=yS(e,"");return n&&t.push({manifest:n,packageRoot:""}),hS(e,"",t,0),t}function hS(e,t,n,r){if(r>=m0)return;let i=oo(e,t);if(Ra(i))for(let o of pS(i,{withFileTypes:!0})){if(!o.isDirectory()||d0.has(o.name))continue;let s=t?`${t}/${o.name}`:o.name,a=yS(e,s);a&&n.push({manifest:a,packageRoot:s}),hS(e,s,n,r+1)}}function yS(e,t){try{let n=c0(oo(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 bS(e.exports,t),t}function bS(e,t){if(typeof e=="string"){t.push(e);return}if(!(!e||typeof e!="object"))for(let n of Object.values(e))bS(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 fS(c))l!==""&&i.push(tn(t,l));return}let a=o.replace(u0,"");for(let c of fS(a)){c===a&&c===o&&r.add(tn(t,o));for(let l of gS)S0(e,r,t,c+l)}r.add(tn(t,o))}function fS(e){let t=[e];return id.test(e)&&(t.push(e.replace(id,"src/")),t.push(e.replace(id,""))),t}function S0(e,t,n,r){let i=tn(n,r);if(t.add(i),!r.startsWith("src/")||Ra(oo(e,i)))return;let o=gS.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 SS(e,n,c,`${l}${o}`))t.add(u)}function C0(e,t,n,r,i){let o=tn(n,`${r}/index${i}`);Ra(oo(e,o))&&t.add(o)}function SS(e,t,n,r){let i=oo(e,t,n);if(!Ra(i))return[];let o=[];for(let s of pS(i,{withFileTypes:!0})){let a=`${n}/${s.name}`;s.isDirectory()?o.push(...SS(e,t,a,r)):s.isFile()&&s.name===r&&o.push(tn(t,a))}return o}function tn(e,t){return e?`${e}/${t}`:t}import{existsSync as va,readFileSync as x0,readdirSync as R0}from"fs";import{dirname as v0,join as Ia}from"path";var I0={rootFiles:new Set,sourcePrefixes:[]},w0=new Set([".git",".scipquery","node_modules","target"]),D0=6,E0=J("rust-library-surface",{clearGroups:["whole-project"]});function CS(e,t,n){if(!n.endsWith(".rs")||!T0(k0(e),n))return!1;let r=Q(e,n).find(i=>i.symbol===t);return r?_0(Ce(e,n)[r.startLine]??""):!1}function k0(e){return E0.get(e,()=>P0(e.config.projectRoot))}function P0(e){let t=new Set,n=new Set;for(let r of F0(e)){let i=Ia(e,r,"Cargo.toml"),o=x0(i,"utf8"),s=L0(o),a=tn(r,"src/lib.rs"),c=s?tn(r,s):!N0(o)&&va(Ia(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 _0(e){return/^\s*pub\s+(?!\()/.test(e)}function F0(e){if(!va(e))return[];let t=[];return xS(e,"",t,0),t}function xS(e,t,n,r){let i=Ia(e,t);if(va(i)&&(va(Ia(i,"Cargo.toml"))&&n.push(t),!(r>=D0)))for(let o of R0(i,{withFileTypes:!0})){if(!o.isDirectory()||w0.has(o.name))continue;let s=t?`${t}/${o.name}`:o.name;xS(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 Y(e){let t=te(e);return Q0(t)?"test":Z0(t)?"worker":eO(t)?"entry":tO(t)?"barrel":"source"}function Gr(e){return Y(e)==="barrel"}function vS(e){return M0.get(e,()=>{let n=N(e,{includeIgnored:!1}).filter(s=>{let a=Y(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),Y(s)==="barrel"&&o.add(s);for(let a of r.get(s)??[])i.has(a)||n.push(a)}}return o})}var M0=J("live-barrels",{clearGroups:["whole-project"]});function od(e,t){return vS(e).has(te(t))}function IS(e){let t=vS(e);return N(e,{includeIgnored:!1}).filter(n=>Gr(n)&&!t.has(n)&&!O0(e,n))}function O0(e,t){let n=te(t),r=at(e).forFile(n,{facts:!0}).facts?.callables;return r&&r.length>0?!0:(e.get(`SELECT COUNT(*) AS n
378
378
  FROM defn_enclosing_ranges der
379
379
  JOIN documents d ON d.id = der.document_id
380
380
  WHERE d.relative_path = ?
381
- AND der.end_line - der.start_line >= 2`,n)?.n??0)>0}function Ee(e,t){let n=te(t),r=Y(t);return r==="entry"||r==="worker"||K0(n)||id(e,n)}function de(e,t,n){let r=te(n);if(ir(e,r)||j0(e,t,r)||SS(e,t,r)||q0(t,r))return!0;let i=e.config.entryRoots;return i?!!(i.files?.some(o=>te(o)===r)||i.pathPrefixes?.some(o=>r.startsWith(te(o)))||i.qualifiedVars?.some(o=>tO(t,o))||i.symbolPatterns?.some(o=>{try{return new RegExp(o).test(t)}catch{return!1}})):!1}var O0=J("package-surface-reachability",{clearGroups:["whole-project"]});function j0(e,t,n){let r=B0(e).get(n);return r===void 0?!1:r===null||r.has(T(t))}function B0(e){return O0.get(e,()=>{let t=new Map,n=[];for(let r of N(e,{includeIgnored:!1}))ir(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 qt(e,r)){if(!o.sourcePath||e.isIgnored(o.sourcePath))continue;let s=$0(i,o);s!==void 0&&H0(t,o.sourcePath,s)&&n.push(o.sourcePath)}}return t})}function $0(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 H0(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 IS=new Set(["GET","POST","PUT","PATCH","DELETE","HEAD","OPTIONS"]),U0=new Set(["default","generateMetadata","generateStaticParams"]),W0=new Set(["default","getStaticProps","getServerSideProps","getStaticPaths","config"]),G0=new Set(["default","loader","action","clientLoader","clientAction","headers","links","meta","shouldRevalidate","ErrorBoundary","HydrateFallback"]),z0=new Set(["load","actions","entries",...IS]),V0=new Set(["default"]);function q0(e,t){let n=T(e);return n===""?!1:wS(t)?IS.has(n):DS(t)?U0.has(n):ES(t)?W0.has(n):kS(t)?G0.has(n):PS(t)?z0.has(n):Y0(t)?V0.has(n):!1}function K0(e){return wS(e)||DS(e)||ES(e)||J0(e)||kS(e)||PS(e)}function wS(e){return/(?:^|\/)app(?:\/[^/]+)*\/route\.(?:ts|tsx|js|jsx|mjs|cjs)$/.test(e)}function DS(e){return/(?:^|\/)app(?:\/[^/]+)*\/(?:page|layout|template|loading|error|not-found|global-error|head|default)\.(?:ts|tsx|js|jsx|mjs|cjs)$/.test(e)}function ES(e){return/(?:^|\/)pages\/.+\.(?:ts|tsx|js|jsx|mjs|cjs)$/.test(e)}function J0(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 kS(e){return/(?:^|\/)app\/routes\/.+\.(?:ts|tsx|js|jsx|mjs|cjs)$/.test(e)}function PS(e){return/(?:^|\/)src\/routes\/(?:.*\/)?\+(?:page|page\.server|layout|layout\.server|server)\.(?:ts|js)$/.test(e)}function Y0(e){return/(?:^|\/)src\/(?:pages|views|routes)\/.+\.(?:ts|tsx|js|jsx|vue)$/.test(e)}function X0(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 Q0(e){return/(?:^|\/)[^/]*worker\.(?:ts|tsx|js|mjs|cjs|rs|py|go)$/.test(e)}function Z0(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 eO(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 tO(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(xS(r)+"/")&&e.includes(xS(i)+".")}function xS(e){return/^[A-Za-z0-9_$+-]+$/.test(e)?e:"`"+e.replace(/`/g,"``")+"`"}import{SymbolInformation_Kind as z}from"@c4312/scip";var Ia=new Map(Object.entries(z).filter(([e,t])=>Number.isInteger(Number(e))&&typeof t=="string").map(([e,t])=>[Number(e),t])),TS=new Map([...Ia.entries()].map(([e,t])=>[t.toLowerCase(),e]));function so(e){return Ia.get(e)??"Unknown"}function Ft(){return[z.Function,z.Method,z.Macro,z.Constructor,z.Getter,z.Setter,z.StaticMethod,z.SingletonMethod,z.AbstractMethod,z.ProtocolMethod,z.TraitMethod]}function _S(){return[z.Class,z.Interface,z.Struct,z.Trait,z.Type,z.TypeAlias,z.Enum,z.Union,z.Protocol]}function Bne(){return[z.Constant,z.Variable,z.Value,z.Field,z.Property,z.StaticDataMember,z.StaticField,z.StaticProperty,z.StaticVariable,z.EnumMember]}function dt(e,t,n={}){let r=wa(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 LS(e,t,n){return sd(e,[t],n).get(t.symbolId)??[]}function sd(e,t,n){let r=iO(e)?sO(e,t,{semantic:n.semantic!==!1,semanticEvidence:n.semanticEvidence}):oO(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 nO=J("caller-rows",{clearGroups:["whole-project"]}),rO=2e4;function iO(e){return(e.get("SELECT COUNT(*) AS count FROM global_symbols")?.count??0)>rO}function oO(e,t){return nO.get(e,()=>{let n=xe(e),r=wa(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 sO(e,t,n){let r=n.semantic&&n.semanticEvidence?t.flatMap(a=>{let c=aO(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=wt(Q(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 aO(e,t){let n=Ft().join(", "),r=_S().join(", ");return e.get(`SELECT
381
+ AND der.end_line - der.start_line >= 2`,n)?.n??0)>0}function Ee(e,t){let n=te(t),r=Y(t);return r==="entry"||r==="worker"||J0(n)||od(e,n)}function de(e,t,n){let r=te(n);if(ir(e,r)||B0(e,t,r)||CS(e,t,r)||K0(t,r))return!0;let i=e.config.entryRoots;return i?!!(i.files?.some(o=>te(o)===r)||i.pathPrefixes?.some(o=>r.startsWith(te(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=J("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}))ir(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 qt(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 wS=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",...wS]),q0=new Set(["default"]);function K0(e,t){let n=T(e);return n===""?!1:DS(t)?wS.has(n):ES(t)?W0.has(n):kS(t)?G0.has(n):PS(t)?z0.has(n):TS(t)?V0.has(n):X0(t)?q0.has(n):!1}function J0(e){return DS(e)||ES(e)||kS(e)||Y0(e)||PS(e)||TS(e)}function DS(e){return/(?:^|\/)app(?:\/[^/]+)*\/route\.(?:ts|tsx|js|jsx|mjs|cjs)$/.test(e)}function ES(e){return/(?:^|\/)app(?:\/[^/]+)*\/(?:page|layout|template|loading|error|not-found|global-error|head|default)\.(?:ts|tsx|js|jsx|mjs|cjs)$/.test(e)}function kS(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 PS(e){return/(?:^|\/)app\/routes\/.+\.(?:ts|tsx|js|jsx|mjs|cjs)$/.test(e)}function TS(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(RS(r)+"/")&&e.includes(RS(i)+".")}function RS(e){return/^[A-Za-z0-9_$+-]+$/.test(e)?e:"`"+e.replace(/`/g,"``")+"`"}import{SymbolInformation_Kind as z}from"@c4312/scip";var wa=new Map(Object.entries(z).filter(([e,t])=>Number.isInteger(Number(e))&&typeof t=="string").map(([e,t])=>[Number(e),t])),_S=new Map([...wa.entries()].map(([e,t])=>[t.toLowerCase(),e]));function so(e){return wa.get(e)??"Unknown"}function Ft(){return[z.Function,z.Method,z.Macro,z.Constructor,z.Getter,z.Setter,z.StaticMethod,z.SingletonMethod,z.AbstractMethod,z.ProtocolMethod,z.TraitMethod]}function FS(){return[z.Class,z.Interface,z.Struct,z.Trait,z.Type,z.TypeAlias,z.Enum,z.Union,z.Protocol]}function $ne(){return[z.Constant,z.Variable,z.Value,z.Field,z.Property,z.StaticDataMember,z.StaticField,z.StaticProperty,z.StaticVariable,z.EnumMember]}function dt(e,t,n={}){let r=Da(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 NS(e,t,n){return ad(e,[t],n).get(t.symbolId)??[]}function ad(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=J("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=Da(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=wt(Q(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=Ft().join(", "),r=FS().join(", ");return e.get(`SELECT
382
382
  d.id AS documentId,
383
383
  gs.id AS symbolId,
384
384
  gs.symbol,
@@ -397,11 +397,11 @@ Thumbs.db
397
397
  LEFT JOIN chunks c ON c.document_id = der.document_id
398
398
  JOIN documents d ON d.id = COALESCE(der.document_id, c.document_id)
399
399
  WHERE gs.id = ?
400
- LIMIT 1`,t.symbolId)??null}function wa(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)&&pn(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(cO(e,i)),n.semantic!==!1&&n.semanticEvidence&&c(pO(n.semanticEvidence.calleeMap(e,t)));let l=r?t:o;return l.length>0&&c(mO(e,l)),s}function cO(e,t){let n=new Map,r=lO(t,n),i=Xt(e);for(let[o,s]of r){let a=pn(e,o);if(!a)continue;let c=Rl(s);for(let l of a){let u=c.get(l.line);if(!u)continue;let d=uO(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 lO(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 uO(e,t,n,r){let i=Is(t,n.get(r.calleeLeaf)??[]);if(i.length===0)return null;let o=dO(e,t,i,r.calleeQualifier);return o||ws(e,t,i,r.memberAccess)}function dO(e,t,n,r){if(!r||M(t)!=="clojure")return null;let o=re(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 mO(e,t){if(t.length===0)return new Map;let r=od(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
400
+ LIMIT 1`,t.symbolId)??null}function Da(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)&&pn(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=Xt(e);for(let[o,s]of r){let a=pn(e,o);if(!a)continue;let c=vl(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=ws(t,n.get(r.calleeLeaf)??[]);if(i.length===0)return null;let o=mO(e,t,i,r.calleeQualifier);return o||Ds(e,t,i,r.memberAccess)}function mO(e,t,n,r){if(!r||M(t)!=="clojure")return null;let o=re(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=sd(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
401
  FROM mentions m
402
402
  JOIN chunks c ON m.chunk_id = c.id
403
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=od(r.map(f=>f.symbol_id)).flatMap(f=>e.all(`SELECT gs.id AS symbol_id, gs.symbol,
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=sd(r.map(f=>f.symbol_id)).flatMap(f=>e.all(`SELECT gs.id AS symbol_id, gs.symbol,
405
405
  COALESCE(der.document_id, def_chunk.document_id) AS document_id
406
406
  FROM global_symbols gs
407
407
  LEFT JOIN defn_enclosing_ranges der ON der.symbol_id = gs.id
@@ -413,10 +413,10 @@ Thumbs.db
413
413
  AND m.symbol_id IN (${f.map(()=>"?").join(",")})
414
414
  GROUP BY m.symbol_id
415
415
  ) def_chunk ON def_chunk.symbol_id = gs.id
416
- WHERE gs.id IN (${f.map(()=>"?").join(",")})`,...f,...f)),a=od([...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=fO(t);for(let[f,p]of m){let y=[...i.get(f)??[]].sort((S,b)=>S.start_line-b.start_line||S.end_line-b.end_line),h=[...p].sort((S,b)=>S.startLine-b.startLine||S.endLine-b.endLine),C=new Set,x=0;for(let S of h){for(;x<y.length&&y[x].start_line<=S.endLine;)C.add(y[x]),x+=1;for(let D of C)D.end_line<S.startLine&&C.delete(D);let b=new Set,v=[],R=null,E=()=>{if(R)return R;let D=d.get(S.documentId)??"",k=new Set;if(D){let L=og(e,D),ne=Math.max(0,S.startLine),X=Math.min(L.length-1,S.endLine);for(let F=ne;F<=X;F+=1)for(let ae of L[F])k.add(ae)}return R=k,k};for(let D of C){if(D.symbol_id===S.symbolId)continue;let k=l.get(D.symbol_id);if(!k)continue;if(!(D.start_line>=S.startLine&&D.end_line<=S.endLine)){if(!(D.start_line<=S.endLine&&D.end_line>=S.startLine))continue;let F=T(k.symbol);if(!F||!E().has(F))continue}let ne=`${k.symbol}|${D.chunk_id}`;b.has(ne)||(b.add(ne),v.push({...k,chunkId:D.chunk_id,source:"scip-chunk"}))}u.set(S.symbolId,v)}}return u}var FS=500;function od(e){let t=[...new Set(e)],n=[];for(let r=0;r<t.length;r+=FS)n.push(t.slice(r,r+FS));return n}function fO(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 pO(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 NS(e,t,n={}){let r=new Map;if(t&&t.length===0)return r;let i=N(e,{includeIgnored:!1}),o=Xt(e),s=t??xe(e),a=new Set(s.map(l=>l.symbolId)),c=xO(s);return gO(e,r,i,o,a,c),hO(e,r,s,a),CO(e,r,i,o,a,c),n.semantic!==!1&&n.semanticEvidence&&vO(r,n.semanticEvidence.callerMap(e,RO(s))),r}function gO(e,t,n,r,i,o){for(let s of n){if(!M(s))continue;let a=pn(e,s);if(a)for(let c of a){if(o&&!o.has(c.calleeLeaf))continue;let l=Is(s,r.get(c.calleeLeaf)??[]);if(!l||l.length===0)continue;let u=ws(e,s,l,c.memberAccess);u&&i.has(u.symbolId)&&u.file!==s&&ad(t,u.symbolId,s)}}}function hO(e,t,n,r){let i=bO(n);for(let o of yO(e,r))e.isIgnored(o.relative_path)||SO(o,i.get(o.symbol_id))||ad(t,o.symbol_id,o.relative_path)}function yO(e,t){return _r(e,t?[...t]:void 0)}function bO(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 SO(e,t){return!!t&&t.docId===e.document_id&&e.chunk_start>=t.startLine&&e.chunk_end<=t.endLine}function CO(e,t,n,r,i,o){for(let s of n){if(M(s)!=="rust")continue;let a=Un(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&&ad(t,u.symbolId,s)}}}function ad(e,t,n){let r=e.get(t);r||(r=new Set,e.set(t,r)),r.add(n)}function xO(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 RO(e){return e.filter(t=>"relativePath"in t&&"symbol"in t&&"leaf"in t)}function vO(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 Ct(e,t,n){return LS(e,t,n)}function AS(e,t,n){return sd(e,t,n)}function cd(e,t,n={}){return NS(e,t,n)}function ao(e,t,n={}){return gg(e,t,n)}function MS(e,t,n={}){let r=cd(e,t,{semantic:n.semantic,semanticEvidence:n.semanticEvidence});return n.sourceFallback===!1?r:nn(r,ao(e,t))}function nn(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 OS(e,t,n){let r=t.identifierResolution==="strict"?Fr:fg,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&&$t(u)))&&!e.isIgnored(u)&&!t.skipPath?.(u))try{if(i&&!Ds(P(e,u),i))continue;s+=1;let m=(p,g,y,h)=>{if(t.candidateNames&&!t.candidateNames.has(p))return;a+=1;let C=t.resolveTargets?t.resolveTargets({sourceFile:u,name:p,kind:g,defaultTargets:h}):h();for(let x of C)c+=1,n({sourceFile:u,name:p,target:x,occurrences:y,kind:g})},f=Yt(e,u);for(let[p,g]of f)m(p,"identifier",g.length,()=>r(e,u,p));for(let p of Un(e,u,{includeCrossLanguageDispatchNames:t.includeCrossLanguageDispatchNames,includeRustAttributeNames:t.includeRustAttributeNames})){let g=p.kind==="cross-language-dispatch"?()=>Fr(e,u,p.name):()=>r(e,u,p.name);m(p.name,p.kind,p.occurrences,g)}}finally{t.afterPath?.(u),o%10===0&&w("source-reference-scan.progress",()=>{},()=>({scannedPaths:o,currentPath:l,candidateMatchedPaths:s,visitedNames:a,visitedHits:c}))}}function O(e){return e.endLine-e.startLine+1}function jS(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=IO(e,{scope:n,files:r,requireFunctionLikeSymbol:u,requireCallableSymbol:d}),h=new Map,C=new Map,x=b=>{let v=h.get(b);if(v!==void 0)return v;let R=Ee(e,b);return h.set(b,R),R},S=b=>{let v=C.get(b);if(v!==void 0)return v;let R=Y(b);return C.set(b,R),R};for(let b of y){let v=b.relativePath;if(e.isIgnored(v)||a&&x(v)||!wO(b,{requireFunctionLikeSymbol:u,requireCallableSymbol:d})||s!==void 0&&b.symbol===s)continue;let R=O(b);R<i||R>o||c&&DO(v)||l&&de(e,b.symbol,v)||m&&Ie(b.symbol)||S(v)!=="test"&&(hr(b.symbol)||!f&&Ho(e,v,b.startLine)||g.push(b))}return p?g.sort((b,v)=>O(v)-O(b)):g}function IO(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=>Q(e,r)):t.requireCallableSymbol?Ri(e,{scope:t.scope,symbolMatches:le,sqlPrefilter:"callable"}):t.requireFunctionLikeSymbol?Ri(e,{scope:t.scope,symbolMatches:ee,sqlPrefilter:"function-like"}):Zp(e,t.scope)}function wO(e,t){return t.requireCallableSymbol?le(e.symbol):t.requireFunctionLikeSymbol?ee(e.symbol):e.isFunctionLike}function DO(e){return(e.split("/").pop()??"").includes("types")}var _=class{constructor(t){this.db=t}db;scopedDefinitions(t){return xl(this.db,t)}definitionsForFile(t){return Q(this.db,t)}productionCallableDefinitions(t={}){return jS(this.db,t)}calleeMap(t,n={}){return wa(this.db,t,{...n,semanticEvidence:H})}crossFileCallerMap(t,n={}){return cd(this.db,t,{...n,semanticEvidence:H})}sourceFallbackCallerFiles(t,n={}){return ao(this.db,t,n)}callerFileMap(t,n={}){return MS(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 Un(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 Y(t)}hasSuppressionComment(t){return Ho(this.db,t.relativePath,t.startLine)}sourceFiles(){return $e(this.db)}scanSourceReferences(t,n){OS(this.db,t,n)}callableSignature(t){let n=at(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 EO}from"fs";function or(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=EO(e);return{indexSizeBytes:t.size,lastBuilt:t.mtime}}catch{return{indexSizeBytes:0,lastBuilt:null}}}function PO(e){return/[*?]/.test(e)?e.replace(/\*\*/g,"%").replace(/\*/g,"%").replace(/\?/g,"_"):`%${e}%`}function TO(e,t){let n=PO(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 Da(n.split("/"),t.split("/"))}function Da(e,t){if(e.length===0)return t.length===0;let[n,...r]=e;return n==="**"?Da(r,t)||t.length>0&&Da(e,t.slice(1)):t.length===0||!FO(n??"",t[0]??"")?!1:Da(r,t.slice(1))}function FO(e,t){let n="^";for(let r of e)r==="*"?n+="[^/]*":r==="?"?n+="[^/]":n+=LO(r);return n+="$",new RegExp(n).test(t)}function LO(e){return/[\\^$.*+?()[\]{}|]/.test(e)?`\\${e}`:e}import{basename as NO}from"path";function AO(e,t){let n=B(e,t);if(!n)return[];let r=T(n.symbol),o=new _(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:MO(NO(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:jO(c,OO(e,n))}function MO(e){return e.replace(/\.[^.]+$/,"")}function OO(e,t){let n=T(t.symbol);return n?(G(e,t.relativePath)?.clojureMembers??[]).filter(r=>r.ownerName===n).map(r=>({startLine:r.startLine,endLine:r.endLine,name:r.memberName})):[]}function jO(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 ld(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=Jt(i?.documentation??null),s=e.isIgnored(r.relativePath)?[]:[{relativePath:r.relativePath,startLine:r.startLine,endLine:r.endLine,signature:$O(o,i?.display_name??null,r.symbol),source:BO(e,r.relativePath,r.startLine,r.endLine)}],a=Dt(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 BO(e,t,n,r){let i=P(e,t);if(!i)return null;let s=i.split(`
416
+ WHERE gs.id IN (${f.map(()=>"?").join(",")})`,...f,...f)),a=sd([...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((S,b)=>S.start_line-b.start_line||S.end_line-b.end_line),h=[...p].sort((S,b)=>S.startLine-b.startLine||S.endLine-b.endLine),C=new Set,x=0;for(let S of h){for(;x<y.length&&y[x].start_line<=S.endLine;)C.add(y[x]),x+=1;for(let D of C)D.end_line<S.startLine&&C.delete(D);let b=new Set,v=[],R=null,E=()=>{if(R)return R;let D=d.get(S.documentId)??"",k=new Set;if(D){let L=sg(e,D),ne=Math.max(0,S.startLine),X=Math.min(L.length-1,S.endLine);for(let F=ne;F<=X;F+=1)for(let ae of L[F])k.add(ae)}return R=k,k};for(let D of C){if(D.symbol_id===S.symbolId)continue;let k=l.get(D.symbol_id);if(!k)continue;if(!(D.start_line>=S.startLine&&D.end_line<=S.endLine)){if(!(D.start_line<=S.endLine&&D.end_line>=S.startLine))continue;let F=T(k.symbol);if(!F||!E().has(F))continue}let ne=`${k.symbol}|${D.chunk_id}`;b.has(ne)||(b.add(ne),v.push({...k,chunkId:D.chunk_id,source:"scip-chunk"}))}u.set(S.symbolId,v)}}return u}var LS=500;function sd(e){let t=[...new Set(e)],n=[];for(let r=0;r<t.length;r+=LS)n.push(t.slice(r,r+LS));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 AS(e,t,n={}){let r=new Map;if(t&&t.length===0)return r;let i=N(e,{includeIgnored:!1}),o=Xt(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=pn(e,s);if(a)for(let c of a){if(o&&!o.has(c.calleeLeaf))continue;let l=ws(s,r.get(c.calleeLeaf)??[]);if(!l||l.length===0)continue;let u=Ds(e,s,l,c.memberAccess);u&&i.has(u.symbolId)&&u.file!==s&&cd(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))||cd(t,o.symbol_id,o.relative_path)}function bO(e,t){return _r(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=Un(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&&cd(t,u.symbolId,s)}}}function cd(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 Ct(e,t,n){return NS(e,t,n)}function MS(e,t,n){return ad(e,t,n)}function ld(e,t,n={}){return AS(e,t,n)}function ao(e,t,n={}){return hg(e,t,n)}function OS(e,t,n={}){let r=ld(e,t,{semantic:n.semantic,semanticEvidence:n.semanticEvidence});return n.sourceFallback===!1?r:nn(r,ao(e,t))}function nn(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"?Fr:pg,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&&$t(u)))&&!e.isIgnored(u)&&!t.skipPath?.(u))try{if(i&&!Es(P(e,u),i))continue;s+=1;let m=(p,g,y,h)=>{if(t.candidateNames&&!t.candidateNames.has(p))return;a+=1;let C=t.resolveTargets?t.resolveTargets({sourceFile:u,name:p,kind:g,defaultTargets:h}):h();for(let x of C)c+=1,n({sourceFile:u,name:p,target:x,occurrences:y,kind:g})},f=Yt(e,u);for(let[p,g]of f)m(p,"identifier",g.length,()=>r(e,u,p));for(let p of Un(e,u,{includeCrossLanguageDispatchNames:t.includeCrossLanguageDispatchNames,includeRustAttributeNames:t.includeRustAttributeNames})){let g=p.kind==="cross-language-dispatch"?()=>Fr(e,u,p.name):()=>r(e,u,p.name);m(p.name,p.kind,p.occurrences,g)}}finally{t.afterPath?.(u),o%10===0&&w("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,C=new Map,x=b=>{let v=h.get(b);if(v!==void 0)return v;let R=Ee(e,b);return h.set(b,R),R},S=b=>{let v=C.get(b);if(v!==void 0)return v;let R=Y(b);return C.set(b,R),R};for(let b of y){let v=b.relativePath;if(e.isIgnored(v)||a&&x(v)||!DO(b,{requireFunctionLikeSymbol:u,requireCallableSymbol:d})||s!==void 0&&b.symbol===s)continue;let R=O(b);R<i||R>o||c&&EO(v)||l&&de(e,b.symbol,v)||m&&Ie(b.symbol)||S(v)!=="test"&&(hr(b.symbol)||!f&&Ho(e,v,b.startLine)||g.push(b))}return p?g.sort((b,v)=>O(v)-O(b)):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=>Q(e,r)):t.requireCallableSymbol?Ri(e,{scope:t.scope,symbolMatches:le,sqlPrefilter:"callable"}):t.requireFunctionLikeSymbol?Ri(e,{scope:t.scope,symbolMatches:ee,sqlPrefilter:"function-like"}):eg(e,t.scope)}function DO(e,t){return t.requireCallableSymbol?le(e.symbol):t.requireFunctionLikeSymbol?ee(e.symbol):e.isFunctionLike}function EO(e){return(e.split("/").pop()??"").includes("types")}var _=class{constructor(t){this.db=t}db;scopedDefinitions(t){return Rl(this.db,t)}definitionsForFile(t){return Q(this.db,t)}productionCallableDefinitions(t={}){return BS(this.db,t)}calleeMap(t,n={}){return Da(this.db,t,{...n,semanticEvidence:H})}crossFileCallerMap(t,n={}){return ld(this.db,t,{...n,semanticEvidence:H})}sourceFallbackCallerFiles(t,n={}){return ao(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 Un(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 Y(t)}hasSuppressionComment(t){return Ho(this.db,t.relativePath,t.startLine)}sourceFiles(){return $e(this.db)}scanSourceReferences(t,n){jS(this.db,t,n)}callableSignature(t){let n=at(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 kO}from"fs";function or(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,...PO(e.config.dbPath)}}function PO(e){try{let t=kO(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 _O(e,t){let n=TO(t);return N(e,{like:n,includeIgnored:!1}).filter(r=>FO(t,r)).map(r=>({relativePath:r}))}function FO(e,t){if(!/[*?]/.test(e))return t.includes(e);let n=e.includes("/")?e:`**/${e}`;return Ea(n.split("/"),t.split("/"))}function Ea(e,t){if(e.length===0)return t.length===0;let[n,...r]=e;return n==="**"?Ea(r,t)||t.length>0&&Ea(e,t.slice(1)):t.length===0||!LO(n??"",t[0]??"")?!1:Ea(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 _(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?(G(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 ud(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=Jt(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=Dt(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=P(e,t);if(!i)return null;let s=i.split(`
418
418
  `).slice(n,r+1).join(`
419
- `).trimEnd();return s.length>0?s:null}function $O(e,t,n){let r=Kt(e);if(r&&!HO(r))return r;let i=(t??"").trim();return i?ee(n)&&!i.endsWith("()")?`${i}()`:i:I(n)}function HO(e){return e.startsWith("undefined")||e.includes("|")||e.includes("```")}function ud(e,t){let n=Oe(e,t);return n?e.all(`SELECT DISTINCT d2.relative_path
419
+ `).trimEnd();return s.length>0?s:null}function HO(e,t,n){let r=Kt(e);if(r&&!UO(r))return r;let i=(t??"").trim();return i?ee(n)&&!i.endsWith("()")?`${i}()`:i:I(n)}function UO(e){return e.startsWith("undefined")||e.includes("|")||e.includes("```")}function dd(e,t){let n=Oe(e,t);return n?e.all(`SELECT DISTINCT d2.relative_path
420
420
  FROM mentions m
421
421
  JOIN chunks c ON m.chunk_id = c.id
422
422
  JOIN documents d1 ON c.document_id = d1.id
@@ -432,7 +432,7 @@ Thumbs.db
432
432
  WHERE d1.relative_path = ?
433
433
  AND d2.relative_path <> d1.relative_path
434
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 dd(e,t){let n=Oe(e,t);return n?e.all(`SELECT DISTINCT d1.relative_path
435
+ ORDER BY d2.relative_path`,n).filter(i=>!e.isIgnored(i.relative_path)).map(i=>({relativePath:i.relative_path})):[]}function md(e,t){let n=Oe(e,t);return n?e.all(`SELECT DISTINCT d1.relative_path
436
436
  FROM mentions m
437
437
  JOIN chunks c ON m.chunk_id = c.id
438
438
  JOIN documents d1 ON c.document_id = d1.id
@@ -447,9 +447,9 @@ Thumbs.db
447
447
  JOIN documents d2 ON sym_def.document_id = d2.id
448
448
  WHERE d2.relative_path = ?
449
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 md(e,t){let n=Br(e,t);if(n.length===0)return{files:[],symbols:[],dependsOn:[],dependedOnBy:[]};let r=n.map(()=>"?").join(", "),o=e.all(`SELECT relative_path FROM documents
450
+ ORDER BY d1.relative_path`,n,n).filter(i=>!e.isIgnored(i.relative_path)).map(i=>({relativePath:i.relative_path})):[]}function fd(e,t){let n=Br(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
451
  WHERE relative_path IN (${r})
452
- ORDER BY relative_path`,...n).map(d=>d.relative_path).filter(d=>!e.isIgnored(d)),s=hs(e,o,{onlyDocumented:!0,sort:!0}).map(({relativePath:d,...m})=>m),c=e.all(`SELECT DISTINCT d2.relative_path
452
+ ORDER BY relative_path`,...n).map(d=>d.relative_path).filter(d=>!e.isIgnored(d)),s=ys(e,o,{onlyDocumented:!0,sort:!0}).map(({relativePath:d,...m})=>m),c=e.all(`SELECT DISTINCT d2.relative_path
453
453
  FROM mentions m
454
454
  JOIN chunks c ON m.chunk_id = c.id
455
455
  JOIN documents d1 ON c.document_id = d1.id
@@ -480,7 +480,7 @@ Thumbs.db
480
480
  JOIN documents d2 ON sym_def.document_id = d2.id
481
481
  WHERE d2.relative_path IN (${r})
482
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 fd(e,t){let n=Br(e,t);return n.length===0?[]:GO([...UO(e,n),...WO(e,n)]).filter(r=>!e.isIgnored(r.relative_path)).map(zO)}function UO(e,t){let n=t.map(()=>"?").join(", ");return e.all(`SELECT DISTINCT d1.relative_path, gs.symbol
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 pd(e,t){let n=Br(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
484
  FROM mentions m
485
485
  JOIN chunks c ON m.chunk_id = c.id
486
486
  JOIN documents d1 ON c.document_id = d1.id
@@ -507,8 +507,8 @@ Thumbs.db
507
507
  AND m.role != 1
508
508
  AND ${e.localSymbolPredicate}
509
509
  ${e.pathExclusionsFor("d1")}
510
- ORDER BY d1.relative_path`,...t,...t,...t)}function WO(e,t){let n=new _(e);return t.flatMap(r=>n.definitionsForFile(r).filter(i=>le(i.symbol)).map(i=>({relative_path:r,symbol:i.symbol})))}function GO(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 zO(e){return{consumer:e.relative_path,symbol:e.symbol,shortName:I(e.symbol)}}var co=new WeakMap,BS=oe({kind:"definition-exclusions",invalidation:K("definition-exclusions"),serialize:e=>JSON.stringify(e),deserialize:VO});function HS(e,t){let n=M(t);if(!(n==="rust"||n==="typescript"||n==="tsx"||n==="javascript"))return[];let i=P(e,t);if(!i)return[];let o=ce(e,t,i),s=BS.read(e,t,o);if(s)return s;let a=n==="rust"?ej(e,t):YO(e,t);return BS.write(e,t,o,a),a}function VO(e){try{let t=JSON.parse(e);if(!Array.isArray(t))return null;let n=t.map(qO);return n.some(r=>r===null)?null:n}catch{return null}}function qO(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?mj(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 US=new Set(["describe","it","test","fdescribe","fit","xdescribe","xit","beforeEach","afterEach","beforeAll","afterAll","before","after","suite","bench","benchmark"]),KO=/\b(?:describe|it|test|fdescribe|fit|xdescribe|xit|beforeEach|afterEach|beforeAll|afterAll|before|after|suite|bench|benchmark)\s*\(/,JO=/\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 YO(e,t){let n=P(e,t);if(!n||!XO(n))return[];let r=q(e,t);if(!r)return[];let i=co.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&&US.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(...WS(r,new Set(["function_declaration","method_definition","class_declaration","interface_declaration","type_alias_declaration","enum_declaration","variable_declarator","export_statement"]),new Set(["comment"]))),co.set(r,a),a}function XO(e){if(e.includes("scip-query"))return!0;let t=!1;for(let n of US)if(e.includes(n)){t=!0;break}return t&&KO.test(e)?!0:e.includes("use")&&JO.test(e)}var QO=/scip-query[\s:-]*ignore[\s:-]*(?:dead(?:-code)?|stale)?/i;function ZO(e){return QO.test(e)}function WS(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(ZO(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 ej(e,t){let n=q(e,t);if(!n)return[];let r=co.get(n);if(r)return r;let i=[],o=tj(n);return o?(co.set(n,o),o):(GS(n.rootNode,i,!1,!1),i.push(...WS(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(...uj(n.rootNode)),co.set(n,i),i)}function tj(e){return fj(e.rootNode)?[{startLine:0,endLine:e.rootNode.endPosition.row,reason:"generated file (@generated header)",disposition:"exclude"}]:null}function GS(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"?nj(e,t,n,r):r&&lj(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"?rj(e,t,n):e.type==="mod_item"&&pd(e).some(s=>/#\[\s*cfg\s*\(\s*test\s*\)/.test(s))&&(i=!0);for(let s of e.namedChildren)GS(s,t,i,o)}function nj(e,t,n,r){let i=pd(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(zS(s)){o={reason:"#[allow(dead_code)]",disposition:"exclude"};break}let a=aj(s);if(a){o=a;break}}o&&t.push({startLine:e.startPosition.row,endLine:e.endPosition.row,reason:o.reason,disposition:o.disposition})}function rj(e,t,n){let r=pd(e),i=e.namedChildren.find(o=>o.type==="type_identifier")?.text;r.some(cj)&&t.push({startLine:e.startPosition.row,endLine:e.endPosition.row,reason:"#[derive(...)] - generated impl may access fields",disposition:"implicit-usage",containerName:i}),r.some(zS)&&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 pd(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 ij=new Set(["test","bench","tokio::test","async_std::test"]),oj=new Set(["no_mangle","export_name","link_name","used","macro_export","proc_macro","proc_macro_derive","proc_macro_attribute"]),sj=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 aj(e){if(/#\[\s*cfg\s*\(\s*test\s*\)/.test(e))return{reason:"#[cfg(test)]",disposition:"exclude"};let t=dj(e);return t?ij.has(t)?{reason:`#[${t}]`,disposition:"exclude"}:oj.has(t)?{reason:`Rust ABI/export attribute #[${t}]`,disposition:"implicit-usage"}:sj.has(t)?null:{reason:`Rust attribute macro #[${t}]`,disposition:"implicit-usage"}:null}function cj(e){return/#\[\s*derive\s*\(/.test(e)}function zS(e){return/#\[\s*allow\s*\(\s*dead_code\s*\)/.test(e)}function lj(e){return e.type==="const_item"||e.type==="type_item"||e.type==="static_item"||e.type==="associated_type"}function uj(e){let t=pj(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 dj(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 mj(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 fj(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 $S=/\bwith\s*=\s*"([^"]+)"/g;function pj(e){let t=new Set;for(let n of e.descendantsOfType("attribute_item")){$S.lastIndex=0;let r;for(;(r=$S.exec(n.text))!==null;){let i=r[1],o=i.split("::").pop()??i;o&&t.add(o)}}return t}function VS(e){let t=gd(e);return(n,r,i,o)=>t(n,r,i,o)?.disposition==="exclude"}function gd(e){let t=new Map,n=r=>{let i=t.get(r);if(i)return i;let o=HS(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 Ss(o))l.add(u);for(let u of l){let d=a.containers.get(u);d&&c.push(...d)}return gj(c)}}function gj(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 hd(e,t={}){Cc(e,{groups:t.semanticProvider===!0?["whole-project","semantic-provider"]:["whole-project"]})}function qS(e,t,n={}){Cc(e,{groups:n.definitions===!0?["source-file","definition-catalog"]:["source-file"],file:t.replace(/\\/g,"/")})}function KS(e,t){if(t.isIgnoredPath(e.relativePath))return je("ignored-file");if(fn(e.symbol))return je("module-like-symbol");if(!Ea(e.symbol))return je("non-value-symbol");if(!e.isFunctionLike&&e.enclosingSymbol&&Ea(e.enclosingSymbol))return je("nested-non-callable-value");if(!t.includeTests&&!hj(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"):hr(e.symbol)?je("rust-test-module"):!t.includeMembers&&!yj(e)?je("member"):e.endLine-e.startLine+1<t.minLoc?je("below-min-loc"):{accepted:!0}}function hj(e){return Y(e)!=="test"}function je(e){return{accepted:!1,rejectionReason:e}}function Ea(e){return ee(e)||e.endsWith("().")||e.endsWith(".")}function yj(e){return le(e.symbol)||Ss(e.symbol).length===0}function ka(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 zr(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 JS(){return new Map}function YS(e,t,n){let r=new Map;for(let i of sg(e,n))e.isIgnored(i.relative_path)||t.has(i.relative_path)||Ta(r,i.symbol_id,i.relative_path,i.ref_count,"scip-mention");return r}function XS(e,t,n,r={}){let i=new Set;if(r.conservative||n.size===0){for(let o of cg(e,t))i.add(o.symbol_id);return i}for(let o of ag(e,t))e.isIgnored(o.relative_path)||n.has(o.relative_path)||i.add(o.symbol_id);return i}function yd(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 Pa(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 QS(e){return e?.occurrences??0}function Ta(e,t,n,r,i="source-fallback"){if(r<=0)return;let o=eC(e,t,n);o.occurrences+=r,o.sources.add(i)}function ZS(e,t,n,r,i){if(r<=0)return;let o=eC(e,t,n);o.occurrences=Math.max(r,o.occurrences),o.sources.add(i)}function eC(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 bj=new Set(["componentDidCatch","componentDidMount","componentDidUpdate","componentWillUnmount","getDerivedStateFromError","getDerivedStateFromProps","getSnapshotBeforeUpdate","render","shouldComponentUpdate","UNSAFE_componentWillMount","UNSAFE_componentWillReceiveProps","UNSAFE_componentWillUpdate"]);function Vr(e,t){if(!t.parentTypeName||!/\.[cm]?[jt]sx?$/.test(t.relativePath))return!1;let n=q(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:bj.has(t.leaf)&&/\bextends\s+(?:React\.)?(?:Component|PureComponent)\b/.test(o)}var Sj=1e3,Cj=300;function sr(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=w("dead.candidates",()=>{let b=se(xj(e,{scope:n,minLoc:r,includeTests:i,includeMembers:s}),c);return u=b.length,b},()=>({definitions:u})),m=0,f=o?w("dead.inactive-barrels",()=>{let b=new Set(vS(e));return m=b.size,b},()=>({paths:m})):new Set,p=0,g=a?JS():w("dead.mention-reference-counts",()=>{let b=YS(e,f,d.map(v=>v.symbolId));return p=b.size,b},()=>({definitions:d.length,symbolsWithReferences:p})),y=0,h=a?w("dead.mentioned-symbol-ids",()=>{let b=XS(e,d.map(v=>v.symbolId),f,{conservative:f.size===0});return y=b.size,b},()=>({definitions:d.length,referencedSymbols:y})):new Set,C=a?d.filter(b=>!h.has(b.symbolId)):d.filter(b=>!Pa(g,b.symbolId,b.relativePath));a?w("dead.source-fallback.dead-code-only",()=>kj(e,C,g,{inactiveBarrelPaths:f}),()=>({definitions:C.length,testReferencesIncluded:!0})):w("dead.source-fallback.ast",()=>Ej(e,C,g,{inactiveBarrelPaths:f}),()=>({definitions:C.length,testReferencesIncluded:!0}));let x=a?C.filter(b=>!yd(g,b.symbolId)):C.filter(b=>!Pa(g,b.symbolId,b.relativePath));w("dead.caller-map-supplement",()=>Lj(e,x,g,{inactiveBarrelPaths:f,includeSemantic:!a&&l}),()=>({definitions:x.length,semantic:!a&&l}));let S=a?C.filter(b=>!yd(g,b.symbolId)):d;return Dj(e,Ij(S,g))}function xj(e,t){let n=VS(e),r=[];for(let i of Ri(e,{scope:t.scope,symbolMatches:Ea,sqlPrefilter:"function-like"}))KS(i,{minLoc:t.minLoc,includeTests:t.includeTests,includeMembers:t.includeMembers,isIgnoredPath:s=>e.isIgnored(s),isExcludedRegion:n,isDeclarationOnlyCallable:()=>vj(e,i),isFrameworkContractCallable:()=>Vr(e,i)}).accepted&&r.push(i);return r}var Rj=["method_signature","abstract_method_signature","call_signature","construct_signature"];function vj(e,t){if(!t.parentTypeName||!/\.[cm]?[jt]sx?$/.test(t.relativePath))return!1;let n=q(e,t.relativePath);if(n)return n.rootNode.descendantsOfType([...Rj]).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 Ij(e,t){return e.map(n=>wj(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 wj(e,t){let n=t.get(e.symbolId)??new Map,r=QS(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=gd(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(Ee(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 Ej(e,t,n,r){if(t.length===0)return;let i=new _(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)||Ta(n,c.target.symbolId,c.sourceFile,Fj(c),"source-fallback"))})}function kj(e,t,n,r){if(t.length===0)return;let i=new _(e),o=Pj(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=Es(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?Tj(u,d,f,()=>l(u),{permissive:m!=="cross-language-dispatch"}):[]},afterPath:u=>{c.delete(u),qS(e,u)}},u=>{let d=u.kind==="identifier"&&u.sourceFile===u.target.relativePath?Math.max(0,u.occurrences-1):u.occurrences;u.kind==="identifier"&&tC(e,{sourceFile:u.sourceFile,name:u.name,target:u.target,occurrences:d})||Ta(n,u.target.symbolId,u.sourceFile,d,"source-fallback")})}function Pj(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 Tj(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"&&tC(e,t)}function Fj(e){return e.kind==="identifier"&&e.target.relativePath===e.sourceFile?Math.max(0,e.occurrences-1):e.occurrences}function tC(e,t){return t.occurrences>1?!1:re(e,t.sourceFile).some(n=>n.used||n.sourcePath!==t.target.relativePath?!1:n.importedName===t.name||n.localName===t.name)}function Lj(e,t,n,r){let i=r.includeSemantic!==!1,o=i&&t.length>=Sj&&N(e).length>=Cj,s=(u,d)=>{d===u.relativePath||e.isIgnored(d)||r.inactiveBarrelPaths.has(d)||ZS(n,u.symbolId,d,1,"caller-map")};if(o?w("dead.caller-map.per-symbol-non-semantic",()=>{for(let u of t){let d=Ct(e,u,{semantic:!1,semanticEvidence:H});for(let m of d)s(u,m.file)}},()=>({definitions:t.length,semantic:!1})):w("dead.caller-map.per-symbol",()=>{for(let u of t){let d=Ct(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=w("dead.caller-map.semantic-candidates",()=>{let u=t.filter(d=>!Pa(n,d.symbolId,d.relativePath));return a=u.length,u},()=>({definitions:t.length,semanticCandidates:a}));if(c.length===0)return;let l=hy(e,c);for(let u of c){let d=l.get(u.symbolId);if(d)for(let m of d)s(u,m)}}function Nj(e,t={}){let{limit:n=30,scope:r}=t,i=r?"AND def_d.relative_path LIKE ?":"",o=r?[`%${r}%`]:[],a=e.all(`SELECT
510
+ ORDER BY d1.relative_path`,...t,...t,...t)}function GO(e,t){let n=new _(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 co=new WeakMap,$S=oe({kind:"definition-exclusions",invalidation:K("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=P(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=P(e,t);if(!n||!QO(n))return[];let r=q(e,t);if(!r)return[];let i=co.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"]))),co.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=q(e,t);if(!n)return[];let r=co.get(n);if(r)return r;let i=[],o=nj(n);return o?(co.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)),co.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"&&gd(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=gd(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=gd(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 gd(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=hd(e);return(n,r,i,o)=>t(n,r,i,o)?.disposition==="exclude"}function hd(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 Cs(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 yd(e,t={}){xc(e,{groups:t.semanticProvider===!0?["whole-project","semantic-provider"]:["whole-project"]})}function KS(e,t,n={}){xc(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(fn(e.symbol))return je("module-like-symbol");if(!ka(e.symbol))return je("non-value-symbol");if(!e.isFunctionLike&&e.enclosingSymbol&&ka(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"):hr(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 Y(e)!=="test"}function je(e){return{accepted:!1,rejectionReason:e}}function ka(e){return ee(e)||e.endsWith("().")||e.endsWith(".")}function bj(e){return le(e.symbol)||Cs(e.symbol).length===0}function Pa(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 zr(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 ag(e,n))e.isIgnored(i.relative_path)||t.has(i.relative_path)||_a(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 lg(e,t))i.add(o.symbol_id);return i}for(let o of cg(e,t))e.isIgnored(o.relative_path)||n.has(o.relative_path)||i.add(o.symbol_id);return i}function bd(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 Ta(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 _a(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 Vr(e,t){if(!t.parentTypeName||!/\.[cm]?[jt]sx?$/.test(t.relativePath))return!1;let n=q(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 sr(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=w("dead.candidates",()=>{let b=se(Rj(e,{scope:n,minLoc:r,includeTests:i,includeMembers:s}),c);return u=b.length,b},()=>({definitions:u})),m=0,f=o?w("dead.inactive-barrels",()=>{let b=new Set(IS(e));return m=b.size,b},()=>({paths:m})):new Set,p=0,g=a?YS():w("dead.mention-reference-counts",()=>{let b=XS(e,f,d.map(v=>v.symbolId));return p=b.size,b},()=>({definitions:d.length,symbolsWithReferences:p})),y=0,h=a?w("dead.mentioned-symbol-ids",()=>{let b=QS(e,d.map(v=>v.symbolId),f,{conservative:f.size===0});return y=b.size,b},()=>({definitions:d.length,referencedSymbols:y})):new Set,C=a?d.filter(b=>!h.has(b.symbolId)):d.filter(b=>!Ta(g,b.symbolId,b.relativePath));a?w("dead.source-fallback.dead-code-only",()=>Pj(e,C,g,{inactiveBarrelPaths:f}),()=>({definitions:C.length,testReferencesIncluded:!0})):w("dead.source-fallback.ast",()=>kj(e,C,g,{inactiveBarrelPaths:f}),()=>({definitions:C.length,testReferencesIncluded:!0}));let x=a?C.filter(b=>!bd(g,b.symbolId)):C.filter(b=>!Ta(g,b.symbolId,b.relativePath));w("dead.caller-map-supplement",()=>Nj(e,x,g,{inactiveBarrelPaths:f,includeSemantic:!a&&l}),()=>({definitions:x.length,semantic:!a&&l}));let S=a?C.filter(b=>!bd(g,b.symbolId)):d;return Ej(e,wj(S,g))}function Rj(e,t){let n=qS(e),r=[];for(let i of Ri(e,{scope:t.scope,symbolMatches:ka,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:()=>Vr(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=q(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=>Dj(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 Dj(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 Ej(e,t){let n=hd(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(Ee(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 kj(e,t,n,r){if(t.length===0)return;let i=new _(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)&&(Fj(e,c)||_a(n,c.target.symbolId,c.sourceFile,Lj(c),"source-fallback"))})}function Pj(e,t,n,r){if(t.length===0)return;let i=new _(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=ks(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?_j(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})||_a(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 _j(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 Fj(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:re(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?w("dead.caller-map.per-symbol-non-semantic",()=>{for(let u of t){let d=Ct(e,u,{semantic:!1,semanticEvidence:H});for(let m of d)s(u,m.file)}},()=>({definitions:t.length,semantic:!1})):w("dead.caller-map.per-symbol",()=>{for(let u of t){let d=Ct(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=w("dead.caller-map.semantic-candidates",()=>{let u=t.filter(d=>!Ta(n,d.symbolId,d.relativePath));return a=u.length,u},()=>({definitions:t.length,semanticCandidates:a}));if(c.length===0)return;let l=yy(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
512
  gs.symbol,
513
513
  COUNT(*) AS ref_count,
514
514
  COUNT(DISTINCT ref_d.id) AS file_count,
@@ -532,14 +532,14 @@ Thumbs.db
532
532
  ${i}
533
533
  GROUP BY gs.id
534
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:Aj(e,r,n)}function Aj(e,t,n){return xe(e,{scope:t}).filter(r=>!e.isIgnored(r.relativePath)).map(r=>Mj(e,r)).filter(r=>r.refCount>0).sort((r,i)=>i.refCount-r.refCount||i.fileCount-r.fileCount).slice(0,n)}function Mj(e,t){let r=Ct(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 Oj(e,t,n={}){return qj(e,t,n)?.map(r=>({symbol:r.symbol,shortName:r.shortName,fromFile:r.fromFile}))??[]}function jj(e,t){let n=B(e,t),r=Hj(e,t);if(r.length>0&&!Wj(n))return r;let i=Uj(e,t,n);return bd(t)&&i.length>0?i:Gj([...r,...i])}function Bj(e,t,n={}){let r=Oe(e,t);if(!r)return[];let i=rC(e,r),o=n.semantic===!1?null:nC(e,r);return(o?$j(o,i):i).filter(a=>!a.used).map(a=>({symbol:a.symbol,shortName:a.shortName,importedIn:a.importer}))}function $j(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 Hj(e,t){return e.all(`SELECT DISTINCT gs.symbol, d.relative_path AS importer
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=Ct(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 Sd(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
536
  FROM mentions m
537
537
  JOIN chunks c ON m.chunk_id = c.id
538
538
  JOIN documents d ON c.document_id = d.id
539
539
  JOIN global_symbols gs ON m.symbol_id = gs.id
540
540
  WHERE gs.symbol LIKE ?
541
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 Uj(e,t,n=B(e,t)){let r=n?.relativePath??null,i=n?T(n.symbol):t.replace(/\(\)$/,""),o=n?fn(n.symbol):!1,s=new Set;for(let c of N(e,{includeIgnored:!1}))for(let l of re(e,c))zj(l,c,{targetFile:r,targetLeaf:i,targetIsModule:o,targetPattern:t})&&s.add(c);let a=bd(t)?t.trim():null;return[...s].sort().map(c=>({symbol:a??n?.symbol??i,shortName:a??(n?I(n.symbol):i),fromFile:c}))}function Wj(e){return!!(e&&(e.symbol.startsWith("scip-clojure ")||M(e.relativePath)==="clojure"))}function Gj(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 zj(e,t,n){return!e.sourcePath||n.targetFile&&te(e.sourcePath)!==te(n.targetFile)?!1:e.kind==="side-effect"||n.targetFile&&Xj(t)||e.kind==="namespace"&&Vj(e,n.targetPattern)||n.targetIsModule||e.kind==="named"&&e.importedName===n.targetLeaf?!0:e.kind==="namespace"&&e.usedMembers.includes(n.targetLeaf)}function Vj(e,t){let n=t.trim().replace(/\(\)$/,"");return bd(n)?e.importedName===n||e.localName===n:!1}function bd(e){let t=e.trim().replace(/\(\)$/,"");return t.includes(".")&&!t.includes("/")&&!t.includes(":")}function qj(e,t,n={}){let r=Oe(e,t);return r?Kj(e,r,n)??(n.semantic===!1?null:nC(e,r))??rC(e,r):null}function Kj(e,t,n){let i=e.all(`SELECT DISTINCT
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?fn(n.symbol):!1,s=new Set;for(let c of N(e,{includeIgnored:!1}))for(let l of re(e,c))Vj(l,c,{targetFile:r,targetLeaf:i,targetIsModule:o,targetPattern:t})&&s.add(c);let a=Sd(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&&te(e.sourcePath)!==te(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 Sd(n)?e.importedName===n||e.localName===n:!1}function Sd(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
543
  gs.symbol,
544
544
  def_d.relative_path AS from_file,
545
545
  imp_d.relative_path AS importer,
@@ -565,7 +565,7 @@ Thumbs.db
565
565
  LEFT JOIN documents def_d ON sym_def.document_id = def_d.id
566
566
  WHERE imp_d.relative_path = ?
567
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?[]:Wi(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 nC(e,t){let n=Wi(e,t);return n.length>0?n.map(r=>{let i=iC(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 rC(e,t){let n=Jj(t,P(e,t));return re(e,t).map(r=>{let i=iC(r.importedName,r.localName,r.kind),o=r.kind==="side-effect"||Yj(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 Jj(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 Yj(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 iC(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 Xj(e){return/\.(?:c|h|cc|cpp|cxx|hpp|hh|hxx)$/i.test(e)}function Qj(e,t){let n=B(e,t);if(!n)return[];let i=new _(e).definitionsForFile(n.relativePath).filter(o=>o.symbol!==n.symbol).filter(o=>Cf(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:eB(i,Zj(e,n))}function Zj(e,t){let n=T(t.symbol);if(!n)return[];let r=I(t.symbol);return(G(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 eB(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 tB(e,t){let n=B(e,t);if(!n)return[];let r=e.get(`SELECT COUNT(DISTINCT c.document_id) AS file_count
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?[]:Wi(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=Wi(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,P(e,t));return re(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 _(e).definitionsForFile(n.relativePath).filter(o=>o.symbol!==n.symbol).filter(o=>Rf(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(G(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
569
  FROM mentions m
570
570
  JOIN chunks c ON m.chunk_id = c.id
571
571
  JOIN (
@@ -577,7 +577,7 @@ Thumbs.db
577
577
  ) sym_def ON sym_def.symbol_id = m.symbol_id
578
578
  WHERE m.symbol_id = ?
579
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 nB(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
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
581
  FROM mentions m
582
582
  JOIN chunks c ON m.chunk_id = c.id
583
583
  JOIN documents d ON c.document_id = d.id
@@ -594,7 +594,7 @@ Thumbs.db
594
594
  AND m.role != 1
595
595
  AND def_d.id != d.id
596
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 rB(e,t={}){return iB(e,t).map(n=>({name:I(n.symbol),count:n.file_count,symbol:n.symbol,definedIn:n.defined_in}))}function iB(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,
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
598
  COUNT(DISTINCT c.document_id) AS file_count,
599
599
  def_d.relative_path AS defined_in
600
600
  FROM mentions m
@@ -616,7 +616,7 @@ Thumbs.db
616
616
  GROUP BY gs.id
617
617
  HAVING file_count > 1
618
618
  ORDER BY file_count DESC
619
- LIMIT ?`,...o,n)}function oB(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
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
620
  FROM mentions m
621
621
  JOIN chunks c ON m.chunk_id = c.id
622
622
  JOIN documents d ON c.document_id = d.id
@@ -636,7 +636,7 @@ Thumbs.db
636
636
  ${i}
637
637
  GROUP BY d.id
638
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 sB(e,t,n){let r=Oe(e,t)??t,i=Oe(e,n)??n,o=e.get(`SELECT COUNT(DISTINCT gs.id) AS shared
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
640
  FROM global_symbols gs
641
641
  WHERE (
642
642
  -- Defined in file1, referenced in file2
@@ -668,7 +668,7 @@ Thumbs.db
668
668
  JOIN documents d ON c.document_id = d.id
669
669
  WHERE m.symbol_id = gs.id AND m.role != 1 AND d.relative_path = ?
670
670
  )
671
- )`,r,i,i,r);return{...oC(r,i,o?.shared??0)}}function aB(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
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
672
  def_d.relative_path AS file1,
673
673
  ref_d.relative_path AS file2,
674
674
  COUNT(DISTINCT gs.id) AS shared
@@ -690,7 +690,7 @@ Thumbs.db
690
690
  ${i}
691
691
  GROUP BY def_d.id, ref_d.id
692
692
  ORDER BY shared DESC
693
- LIMIT ?`,...o,n).filter(a=>!e.isIgnored(a.file1)&&!e.isIgnored(a.file2)).map(a=>oC(a.file1,a.file2,a.shared))}function oC(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 lo(e,t={}){return cC(e,t).cycles}function cC(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((S,b)=>S<b?S:b)),C=[...y.slice(h,-1),...y.slice(0,h),y[h]],x=C.join(" -> ");d.has(x)||(d.add(x),o.push({path:C,kind:cB(C)}))}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 cB(e){for(let r of e){let i=Y(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":Gr(t)||Gr(n)||sC(t,n)||sC(n,t)||aC(t,n)||aC(n,t)||Y(t)==="entry"||Y(n)==="entry"?"module-hierarchy":"real"}function sC(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 aC(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 lB}from"fs";import{join as lC}from"path";function ar(e,t){let n=_a(e),r=_a(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 uB(e){return _a(e).replace(/\/\*\*?$/,"")}function uC(e,t){let n=_a(t),r=uB(n),i=n.endsWith("/**"),o=[],s=(a,c)=>{let l;try{l=lB(a,{withFileTypes:!0})}catch{return}for(let u of l){if(u.name.startsWith("."))continue;let d=c?`${c}/${u.name}`:u.name;ar(n,d)&&o.push(d),i&&u.isDirectory()&&s(lC(a,u.name),d)}};return s(lC(e,r),r),o.sort()}function _a(e){return e.replace(/\\/g,"/").replace(/^\.\//,"").replace(/\/+$/,"")}function Fa(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 cr="architecture:";function dC(e,t,n){let r=dB(e,t);if(!n||n.boundaries.length===0)return{configured:!1,boundaries:[],edges:[],forbiddenEdges:[],reciprocalPairs:[],cycles:[],coverage:{totalFiles:r.length,mappedFiles:0,unmappedFiles:[],ambiguousFiles:[]},policyCoverage:{declaredRows:0,totalBoundaries:0,missingRows:[],requiresCompletePolicy:!1}};let i=new Map,o=new Map(n.boundaries.map(h=>[h.name,new Set])),s=[],a=[];for(let h of r){let C=n.boundaries.filter(x=>x.paths.some(S=>ar(S,h))).map(x=>x.name).sort();if(C.length===0)s.push(h);else if(C.length>1)a.push({file:h,boundaries:C});else{let x=C[0];i.set(h,x),o.get(x).add(h)}}let c=new Map;for(let[h,C]of e){let x=i.get(h);if(x)for(let S of C){let b=i.get(S);if(!b||x===b)continue;let v=Sd(x,b),R=c.get(v);R||(R={from:x,to:b,fileEdges:[],importers:new Set,importedFiles:new Set},c.set(v,R)),R.fileEdges.push({fromFile:h,toFile:S}),R.importers.add(h),R.importedFiles.add(S)}}let l=[...c.values()].map(h=>mB(h,n)).sort(gB),u=new Map(l.map(h=>[Sd(h.from,h.to),h])),d=new Map(n.boundaries.map(h=>[h.name,new Set]));for(let h of l)d.get(h.from).add(h.to);let m=[];for(let h of l){if(h.from>=h.to)continue;let C=u.get(Sd(h.to,h.from));C&&m.push({boundaries:[h.from,h.to],forward:h,reverse:C})}let{components:f}=Fa(d),p=f.filter(h=>h.length>1).map(h=>pB(h,l,n.requireAcyclic===!0)).sort((h,C)=>C.boundaries.length-h.boundaries.length||h.boundaries.join("/").localeCompare(C.boundaries.join("/"))),g=n.allowedDependencies??{},y=n.boundaries.map(h=>h.name).filter(h=>!Object.hasOwn(g,h)).sort();return{configured:!0,boundaries:n.boundaries.map(h=>({name:h.name,paths:[...h.paths],fileCount:o.get(h.name).size,dependencyPolicyDeclared:Object.hasOwn(g,h.name)})).sort((h,C)=>h.name.localeCompare(C.name)),edges:l,forbiddenEdges:l.filter(h=>h.policyStatus==="forbidden"),reciprocalPairs:m,cycles:p,coverage:{totalFiles:r.length,mappedFiles:i.size,unmappedFiles:s,ambiguousFiles:a},policyCoverage:{declaredRows:n.boundaries.length-y.length,totalBoundaries:n.boundaries.length,missingRows:y,requiresCompletePolicy:n.requireCompletePolicy===!0}}}function qr(e,t={}){let n=ie(e,t.scope,{scipEdges:"imports-only",sourceEdges:"imports-and-reexports"}),r=N(e,{includeIgnored:!1}).filter(i=>!t.scope||i.includes(t.scope));return dC(n,r,e.config.architecture)}function Cd(e){let t=e.forbiddenEdges.map(n=>`${cr}forbidden-edge:${encodeURIComponent(n.from)}:${encodeURIComponent(n.to)}`);if(e.policyCoverage.requiresCompletePolicy)for(let n of e.policyCoverage.missingRows)t.push(`${cr}missing-policy-row:${encodeURIComponent(n)}`);for(let n of e.cycles)n.violatesPolicy&&t.push(`${cr}cycle:${n.boundaries.map(r=>encodeURIComponent(r)).sort().join("|")}`);return[...new Set(t)].sort()}function mC(e){return!!e&&(Object.keys(e.allowedDependencies??{}).length>0||e.requireCompletePolicy===!0||e.requireAcyclic===!0)}function dB(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 mB(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:fB(t,e.from,e.to),fileEdgeCount:n.length,importerCount:e.importers.size,importedFileCount:e.importedFiles.size,examples:n.slice(0,5)}}function fB(e,t,n){return!e.allowedDependencies||!Object.hasOwn(e.allowedDependencies,t)?"undeclared":e.allowedDependencies[t].includes(n)?"allowed":"forbidden"}function pB(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 Sd(e,t){return`${e}\0${t}`}function gB(e,t){return e.from.localeCompare(t.from)||e.to.localeCompare(t.to)}function hB(e,t={}){let{limit:n=20,scope:r,minFanIn:i=2,minFanOut:o=2,scanLimit:s}=t,a=new _(e);return se(a.productionCallableDefinitions({scope:r,requireCallableSymbol:!0,includeSuppressed:!0,sortByLocDesc:typeof s=="number"&&s>0}),s).map(u=>yB(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 yB(e,t,n){let r=[...new Set(Ct(e,t,{limit:500,semantic:n,semanticEvidence:H}).map(l=>l.file))].sort(),i=new Map;for(let l of dt(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 uo(e,t={}){let{scope:n,minLoc:r=3,scanLimit:i}=t,o=new _(e),s=t.semantic!==!1,a=0,c=w("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=>!Vr(e,R));return a=v.length,v},()=>({definitions:a})),l=0,u=w("isolated.strict-callees",()=>{let b=o.symbolsWithNonSelfCallees(c,{additive:!1,semantic:!1});return l=b.size,b},()=>({definitions:c.length,symbols:l})),d=c.filter(b=>!u.has(b.symbolId)),m=0,f=w("isolated.scip-callers",()=>{let b=o.crossFileCallerMap(d,{semantic:!1});return m=b.size,b},()=>({definitions:d.length,symbols:m})),p=new Set(f.keys());for(let b of o.frameworkReferencedSymbolIds(d))p.add(b);let g=d.filter(b=>!p.has(b.symbolId));if(s&&g.length>0){for(let b of In(e,g).keys())p.add(b);for(let b of o.symbolsWithNonSelfCallees(g,{additive:!1,semantic:!0}))u.add(b);g=g.filter(b=>!p.has(b.symbolId)).filter(b=>!u.has(b.symbolId))}let y=0,h=w("isolated.source-fallback-callers",()=>{let b=o.sourceFallbackCallerFiles(g,{skipPath:v=>Y(v)==="test"});return y=b.size,b},()=>({definitions:g.length,symbols:y}));for(let b of h.keys())p.add(b);let C=g.filter(b=>!p.has(b.symbolId)),x=0,S=w("isolated.additive-callees",()=>{let b=o.symbolsWithNonSelfCallees(C,{additive:!0,semantic:s});return x=b.size,b},()=>({definitions:C.length,symbols:x}));for(let b of S)u.add(b);return C.filter(b=>!u.has(b.symbolId)).sort((b,v)=>O(v)-O(b)||b.relativePath.localeCompare(v.relativePath)||b.startLine-v.startLine).map(b=>({symbol:b.symbol,shortName:I(b.symbol),relativePath:b.relativePath,startLine:b.startLine,endLine:b.endLine,loc:O(b)}))}import{SymbolInformation_Kind as ke}from"@c4312/scip";var fC=500;function bB(e){let t=parseInt(e,10);if(!isNaN(t))return t;let n=e.toLowerCase(),r=TS.get(n);if(r!==void 0)return r;for(let[i,o]of Ia)if(o.toLowerCase().includes(n))return i;return null}function SB(e,t,n={}){let{scope:r,limit:i=100}=n,o=bB(t);return o===null?[]:xB(e,r).map(a=>({row:a,resolvedKind:gC(a)})).filter(a=>a.resolvedKind===o).slice(0,i).map(({row:a,resolvedKind:c})=>({symbol:a.symbol,shortName:I(a.symbol),kind:c,kindName:so(c),relativePath:a.relative_path,startLine:a.start_line,endLine:a.end_line}))}function CB(e,t={}){let n=RB(e,t.scope);for(let r of vB(e,t.scope)){let i=gC(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:so(r),count:i}))}function xB(e,t){return xe(e,{scope:t}).map(IB)}function RB(e,t){let n=new Map;for(let r of pC(N(e,{scope:t,includeIgnored:!1}))){let i=r.map(()=>"?").join(", "),o=e.all(`SELECT gs.kind AS kind, COUNT(*) AS count
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 lo(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((S,b)=>S<b?S:b)),C=[...y.slice(h,-1),...y.slice(0,h),y[h]],x=C.join(" -> ");d.has(x)||(d.add(x),o.push({path:C,kind:lB(C)}))}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=Y(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":Gr(t)||Gr(n)||aC(t,n)||aC(n,t)||cC(t,n)||cC(n,t)||Y(t)==="entry"||Y(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 ar(e,t){let n=Fa(e),r=Fa(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 Fa(e).replace(/\/\*\*?$/,"")}function dC(e,t){let n=Fa(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;ar(n,d)&&o.push(d),i&&u.isDirectory()&&s(uC(a,u.name),d)}};return s(uC(e,r),r),o.sort()}function Fa(e){return e.replace(/\\/g,"/").replace(/^\.\//,"").replace(/\/+$/,"")}function La(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 cr="architecture:";function mC(e,t,n){let r=mB(e,t);if(!n||n.boundaries.length===0)return{configured:!1,boundaries:[],edges:[],forbiddenEdges:[],reciprocalPairs:[],cycles:[],coverage:{totalFiles:r.length,mappedFiles:0,unmappedFiles:[],ambiguousFiles:[]},policyCoverage:{declaredRows:0,totalBoundaries:0,missingRows:[],requiresCompletePolicy:!1}};let i=new Map,o=new Map(n.boundaries.map(h=>[h.name,new Set])),s=[],a=[];for(let h of r){let C=n.boundaries.filter(x=>x.paths.some(S=>ar(S,h))).map(x=>x.name).sort();if(C.length===0)s.push(h);else if(C.length>1)a.push({file:h,boundaries:C});else{let x=C[0];i.set(h,x),o.get(x).add(h)}}let c=new Map;for(let[h,C]of e){let x=i.get(h);if(x)for(let S of C){let b=i.get(S);if(!b||x===b)continue;let v=Cd(x,b),R=c.get(v);R||(R={from:x,to:b,fileEdges:[],importers:new Set,importedFiles:new Set},c.set(v,R)),R.fileEdges.push({fromFile:h,toFile:S}),R.importers.add(h),R.importedFiles.add(S)}}let l=[...c.values()].map(h=>fB(h,n)).sort(hB),u=new Map(l.map(h=>[Cd(h.from,h.to),h])),d=new Map(n.boundaries.map(h=>[h.name,new Set]));for(let h of l)d.get(h.from).add(h.to);let m=[];for(let h of l){if(h.from>=h.to)continue;let C=u.get(Cd(h.to,h.from));C&&m.push({boundaries:[h.from,h.to],forward:h,reverse:C})}let{components:f}=La(d),p=f.filter(h=>h.length>1).map(h=>gB(h,l,n.requireAcyclic===!0)).sort((h,C)=>C.boundaries.length-h.boundaries.length||h.boundaries.join("/").localeCompare(C.boundaries.join("/"))),g=n.allowedDependencies??{},y=n.boundaries.map(h=>h.name).filter(h=>!Object.hasOwn(g,h)).sort();return{configured:!0,boundaries:n.boundaries.map(h=>({name:h.name,paths:[...h.paths],fileCount:o.get(h.name).size,dependencyPolicyDeclared:Object.hasOwn(g,h.name)})).sort((h,C)=>h.name.localeCompare(C.name)),edges:l,forbiddenEdges:l.filter(h=>h.policyStatus==="forbidden"),reciprocalPairs:m,cycles:p,coverage:{totalFiles:r.length,mappedFiles:i.size,unmappedFiles:s,ambiguousFiles:a},policyCoverage:{declaredRows:n.boundaries.length-y.length,totalBoundaries:n.boundaries.length,missingRows:y,requiresCompletePolicy:n.requireCompletePolicy===!0}}}function qr(e,t={}){let n=ie(e,t.scope,{scipEdges:"imports-only",sourceEdges:"imports-and-reexports"}),r=N(e,{includeIgnored:!1}).filter(i=>!t.scope||i.includes(t.scope));return mC(n,r,e.config.architecture)}function xd(e){let t=e.forbiddenEdges.map(n=>`${cr}forbidden-edge:${encodeURIComponent(n.from)}:${encodeURIComponent(n.to)}`);if(e.policyCoverage.requiresCompletePolicy)for(let n of e.policyCoverage.missingRows)t.push(`${cr}missing-policy-row:${encodeURIComponent(n)}`);for(let n of e.cycles)n.violatesPolicy&&t.push(`${cr}cycle:${n.boundaries.map(r=>encodeURIComponent(r)).sort().join("|")}`);return[...new Set(t)].sort()}function fC(e){return!!e&&(Object.keys(e.allowedDependencies??{}).length>0||e.requireCompletePolicy===!0||e.requireAcyclic===!0)}function mB(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 fB(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:pB(t,e.from,e.to),fileEdgeCount:n.length,importerCount:e.importers.size,importedFileCount:e.importedFiles.size,examples:n.slice(0,5)}}function pB(e,t,n){return!e.allowedDependencies||!Object.hasOwn(e.allowedDependencies,t)?"undeclared":e.allowedDependencies[t].includes(n)?"allowed":"forbidden"}function gB(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 Cd(e,t){return`${e}\0${t}`}function hB(e,t){return e.from.localeCompare(t.from)||e.to.localeCompare(t.to)}function yB(e,t={}){let{limit:n=20,scope:r,minFanIn:i=2,minFanOut:o=2,scanLimit:s}=t,a=new _(e);return se(a.productionCallableDefinitions({scope:r,requireCallableSymbol:!0,includeSuppressed:!0,sortByLocDesc:typeof s=="number"&&s>0}),s).map(u=>bB(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 bB(e,t,n){let r=[...new Set(Ct(e,t,{limit:500,semantic:n,semanticEvidence:H}).map(l=>l.file))].sort(),i=new Map;for(let l of dt(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 uo(e,t={}){let{scope:n,minLoc:r=3,scanLimit:i}=t,o=new _(e),s=t.semantic!==!1,a=0,c=w("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=>!Vr(e,R));return a=v.length,v},()=>({definitions:a})),l=0,u=w("isolated.strict-callees",()=>{let b=o.symbolsWithNonSelfCallees(c,{additive:!1,semantic:!1});return l=b.size,b},()=>({definitions:c.length,symbols:l})),d=c.filter(b=>!u.has(b.symbolId)),m=0,f=w("isolated.scip-callers",()=>{let b=o.crossFileCallerMap(d,{semantic:!1});return m=b.size,b},()=>({definitions:d.length,symbols:m})),p=new Set(f.keys());for(let b of o.frameworkReferencedSymbolIds(d))p.add(b);let g=d.filter(b=>!p.has(b.symbolId));if(s&&g.length>0){for(let b of In(e,g).keys())p.add(b);for(let b of o.symbolsWithNonSelfCallees(g,{additive:!1,semantic:!0}))u.add(b);g=g.filter(b=>!p.has(b.symbolId)).filter(b=>!u.has(b.symbolId))}let y=0,h=w("isolated.source-fallback-callers",()=>{let b=o.sourceFallbackCallerFiles(g,{skipPath:v=>Y(v)==="test"});return y=b.size,b},()=>({definitions:g.length,symbols:y}));for(let b of h.keys())p.add(b);let C=g.filter(b=>!p.has(b.symbolId)),x=0,S=w("isolated.additive-callees",()=>{let b=o.symbolsWithNonSelfCallees(C,{additive:!0,semantic:s});return x=b.size,b},()=>({definitions:C.length,symbols:x}));for(let b of S)u.add(b);return C.filter(b=>!u.has(b.symbolId)).sort((b,v)=>O(v)-O(b)||b.relativePath.localeCompare(v.relativePath)||b.startLine-v.startLine).map(b=>({symbol:b.symbol,shortName:I(b.symbol),relativePath:b.relativePath,startLine:b.startLine,endLine:b.endLine,loc:O(b)}))}import{SymbolInformation_Kind as ke}from"@c4312/scip";var pC=500;function SB(e){let t=parseInt(e,10);if(!isNaN(t))return t;let n=e.toLowerCase(),r=_S.get(n);if(r!==void 0)return r;for(let[i,o]of wa)if(o.toLowerCase().includes(n))return i;return null}function CB(e,t,n={}){let{scope:r,limit:i=100}=n,o=SB(t);return o===null?[]:RB(e,r).map(a=>({row:a,resolvedKind:hC(a)})).filter(a=>a.resolvedKind===o).slice(0,i).map(({row:a,resolvedKind:c})=>({symbol:a.symbol,shortName:I(a.symbol),kind:c,kindName:so(c),relativePath:a.relative_path,startLine:a.start_line,endLine:a.end_line}))}function xB(e,t={}){let n=vB(e,t.scope);for(let r of IB(e,t.scope)){let i=hC(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:so(r),count:i}))}function RB(e,t){return xe(e,{scope:t}).map(wB)}function vB(e,t){let n=new Map;for(let r of gC(N(e,{scope:t,includeIgnored:!1}))){let i=r.map(()=>"?").join(", "),o=e.all(`SELECT gs.kind AS kind, COUNT(*) AS count
694
694
  FROM defn_enclosing_ranges der
695
695
  JOIN global_symbols gs ON der.symbol_id = gs.id
696
696
  JOIN documents d ON der.document_id = d.id
@@ -698,7 +698,7 @@ Thumbs.db
698
698
  AND gs.kind != 0
699
699
  AND gs.symbol NOT LIKE '%#'
700
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 vB(e,t){let n=[];for(let r of pC(N(e,{scope:t,includeIgnored:!1}))){let i=r.map(()=>"?").join(", ");n.push(...e.all(`SELECT gs.symbol,
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 IB(e,t){let n=[];for(let r of gC(N(e,{scope:t,includeIgnored:!1}))){let i=r.map(()=>"?").join(", ");n.push(...e.all(`SELECT gs.symbol,
702
702
  gs.kind,
703
703
  gs.documentation,
704
704
  gs.enclosing_symbol,
@@ -711,11 +711,11 @@ Thumbs.db
711
711
  WHERE (gs.kind IS NULL OR gs.kind = 0 OR gs.symbol LIKE '%#')
712
712
  ${e.symbolNoiseFor("gs")}
713
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 pC(e){let t=[];for(let n=0;n<e.length;n+=fC)t.push(e.slice(n,n+fC));return t}function IB(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 gC(e){return e.kind!==null&&e.kind!==0?wB(e.kind,e.symbol,e.documentation):DB(e.symbol,e.documentation,e.enclosing_symbol)}function wB(e,t,n){let r=(n??"").toLowerCase();if(ue(t)==="type"){if(r.includes("type "))return ke.TypeAlias;if(r.includes("interface "))return ke.Interface;if(r.includes("struct "))return ke.Struct;if(r.includes("trait "))return ke.Trait;if(r.includes("class "))return ke.Class}return e}function DB(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 ")?ke.TypeAlias:a.includes("interface ")?ke.Interface:a.includes("struct ")?ke.Struct:a.includes("trait ")?ke.Trait:a.includes("class ")?ke.Class:ke.Class:s==="method"?o?.suffix==="type"?ke.Method:ke.Function:s==="namespace"?ke.Module:s!=="term"?null:a.includes("async def ")||a.includes("def ")?ke.Function:(n?ue(n):o?.suffix??null)==="type"?ke.Field:ke.Variable}function EB(e,t={}){let{limit:n=10,scope:r,minDepth:i=3}=t,o=ie(e,r),{components:s,componentOf:a}=Fa(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 C of y){let x=a.get(C);x!==h&&c.get(h).add(x)}}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 C of c.get(g)){let x=u[C];x>h&&(h=x,y=l[C])}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(S=>m[S]),C=h.map(S=>S[0]);if(h.length<i)continue;let x=C.join(" ");f.has(x)||(f.add(x),p.push(kB(C,h)))}return p.sort((g,y)=>y.depth-g.depth),PB(p).slice(0,n)}function kB(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 PB(e){let t=[];for(let n of e)t.some(r=>TB(n.chain,r.chain))||t.push(n);return t}function TB(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 _B(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 xd(e,t,n={}){let r=B(e,t);if(!r)return null;let i=n.semantic!==!1,o=Ct(e,r,{semantic:i,semanticEvidence:H}).filter(a=>ee(a.symbol)).slice(0,50),s=zr(dt(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 mt(e,t){let n=new Set;for(let r of e)t.has(r)&&n.add(r);return n}function Pe(e,t){let n=new Set;for(let r of e)t.has(r)||n.add(r);return n}function kn(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 hC(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 Rd(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 Kr(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 Jr(e,t){let n=0;for(let r of e){let i=t.get(r)??0;n+=i*i}return Math.sqrt(n)}function yC(e,t,n,r={}){let i=0,o=0,s=0,a=r.medianIdf??Kr(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 bC(e,t,n,r){let i=0,o=r.medianIdf??Kr(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 La(e,t,n={}){let{minSimilarity:r=.4,limit:i=20}=n,o=$B(e,t,{semantic:n.semantic!==!1});if(!o)return[];if(!ee(o.symbol))return[];if(o.callees.size===0)return SC(e,t,{minSimilarity:r,limit:i,scanLimit:n.scanLimit,candidateMode:n.sourceCandidateMode??"full"});let s=LB(e,o,r,{scanLimit:n.scanLimit,semantic:n.semantic!==!1});return s.length>0?s.slice(0,i):SC(e,t,{minSimilarity:r,limit:i,scanLimit:n.scanLimit,candidateMode:n.sourceCandidateMode??"full"})}function Dd(e,t,n,r={}){let i=B(e,t),o=B(e,n);if(!i||!o)return null;let s=La(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:FB(s)}}function FB(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 LB(e,t,n,r){let i=Yr(e).calleeIndex({minCallees:3,scanLimit:r.scanLimit,semantic:r.semantic}),o=KB(t,i.corpus),s=zB(o,i),a=NB(o,i),c=Kr(a),l=Jr(o.callees,a),u=[];for(let d of s){if(d.callees.size<3)continue;let m=Jr(d.callees,a),f=vC(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 NB(e,t){let n=new Map(t.docFreq);for(let r of e.callees)n.set(r,(n.get(r)??0)+1);return Rd(n,t.corpus.length+1)}function vC(e,t,n,r){let i=MB(e,t,n,r);if(!OB(i,r))return null;let{similarity:o,significantShared:s,trivialShared:a}=i,c=s.length>0?s:a,l=kC(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:[...Pe(e.callees,t.callees)].map(I),uniqueToB:[...Pe(t.callees,e.callees)].map(I),...l}}function AB(e,t,n,r){let i=r.magnitudeA??Jr(e.callees,n),o=r.magnitudeB??Jr(t.callees,n),s=0,a=0,c=0,l=r.medianIdf??Kr(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 MB(e,t,n,r){return r.magnitudeA===void 0||r.magnitudeB===void 0?yC(e.callees,t.callees,n,{medianIdf:r.medianIdf}):bC(e.callees,t.callees,n,{medianIdf:r.medianIdf,magnitudeA:r.magnitudeA,magnitudeB:r.magnitudeB})}function OB(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 mo(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 w("similar.all",()=>{let C=Yr(e).calleeIndex({minCallees:o,scope:i,scanLimit:a,semantic:c}),x=C.corpus;u=x.length;let S=t.focusFiles,b=[],v=0;return w("similar.all.pair-scan",()=>{for(let R=0;R<x.length;R+=1){let E=x[R],D=S?.has(E.file)??!1,k=C.weightedMagnitudes[R],L=new Set;for(let ne of E.callees){let X=C.candidateIndexesByCallee.get(ne);if(X)for(let F of X)F<=R||S&&!D&&!S.has(x[F].file)||L.add(F)}l&&(m+=L.size,L.size>0&&(d+=1));for(let ne of L){let X=x[ne];if(s&&E.file===X.file){l&&(p+=1);continue}if(IC(E,X)){l&&(g+=1);continue}l&&(f+=1);let F=vC(E,X,C.idfWeights,{minSimilarity:n,requireSignificantShared:2,requireSharedCount:4,medianIdf:C.medianIdf,magnitudeA:k,magnitudeB:C.weightedMagnitudes[ne]});F&&(jB(b,F,r,v),l&&(y+=1),v+=1)}}},()=>({corpusSize:u,candidateSets:d,candidatePairs:m,comparedPairs:f,crossFileSkips:p,signatureSkips:g,insertedResults:y,topResults:b.length})),w("similar.all.sort-project",()=>(b.sort((R,E)=>E.result.similarity-R.result.similarity||R.order-E.order),b.map(R=>R.result)),()=>({topResults:b.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 Ed(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 w("similar.all-count",()=>{let h=Yr(e).calleeIndex({minCallees:i,scope:r,scanLimit:s,semantic:a}),C=h.corpus;l=C.length;let x=t.focusFiles;return w("similar.all-count.pair-scan",()=>{for(let S=0;S<C.length;S+=1){let b=C[S],v=x?.has(b.file)??!1,R=h.weightedMagnitudes[S],E=new Set;for(let D of b.callees){let k=h.candidateIndexesByCallee.get(D);if(k)for(let L of k)L<=S||x&&!v&&!x.has(C[L].file)||E.add(L)}c&&(d+=E.size,E.size>0&&(u+=1));for(let D of E){let k=C[D];if(o&&b.file===k.file){c&&(f+=1);continue}if(IC(b,k)){c&&(p+=1);continue}c&&(m+=1),AB(b,k,h.idfWeights,{minSimilarity:n,requireSignificantShared:2,requireSharedCount:4,medianIdf:h.medianIdf,magnitudeA:R,magnitudeB:h.weightedMagnitudes[D]})&&(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 IC(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 wC=oe({kind:"source-fingerprints",invalidation:K("source-fingerprints"),serialize:p$,deserialize:f$});function jB(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 BB=["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 $B(e,t,n){let r=B(e,t);if(!r||!ee(r.symbol))return null;let i=new _(e),o=dt(e,r,{semantic:n.semantic,semanticEvidence:H});return{symbol:r.symbol,file:r.relativePath,callees:Na(o.map(s=>s.symbol)),paramCount:i.callableSignature(r)?.paramCount??-1}}var HB=J("callee-fingerprint-corpus",{clearGroups:["whole-project","definition-catalog"]}),UB=J("callee-fingerprint-index",{clearGroups:["whole-project","definition-catalog"]});function DC(e,t){let{minCallees:n,scope:r,excludeSymbol:i,scanLimit:o}=t,s=t.semantic!==!1,a=HB.get(e,()=>new Map),c=`${n}|${r??""}|${o??""}|${s}`,l=!0,u=0,d=0;return w("similar.callee-fingerprints.resolve",()=>{let m=a.get(c);if(l=m!==void 0,m||(m=VB(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 WB(e,t){let{minCallees:n,scope:r,scanLimit:i}=t,o=t.semantic!==!1,s=UB.get(e,()=>new Map),a=`${n}|${r??""}|${i??""}|${o}`,c=!0,l=0,u=0,d=0;return w("similar.callee-index.resolve",()=>{let m=s.get(a);return c=m!==void 0,m||(m=GB(DC(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 Yr(e){return{calleeCorpus:t=>DC(e,t),calleeIndex:t=>WB(e,t),sourceCorpus:(t={})=>LC(e,t),sourceIndex:(t={})=>RC(e,t),sourceCandidates:(t,n)=>(n.candidateMode??"full")==="target-pruned"?o$(e,t,{minSimilarity:n.minSimilarity,scanLimit:n.scanLimit}):i$(t,RC(e,{scanLimit:n.scanLimit}))}}function GB(e){let t=U(),n=0,r=w("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=w("similar.callee-index.idf-weights",()=>Rd(r,e.length),()=>({corpusSize:e.length,uniqueCallees:r.size})),s=w("similar.callee-index.weighted-magnitudes",()=>e.map(m=>Jr(m.callees,o)),()=>({corpusSize:e.length})),a=0,c=0,l=0,u=w("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=w("similar.callee-index.median-idf",()=>Kr(o),()=>({uniqueCallees:o.size}));return{corpus:e,candidateIndexesByCallee:u,docFreq:r,idfWeights:o,weightedMagnitudes:s,medianIdf:d,ubiquityThreshold:i}}function zB(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 VB(e,t){let{minCallees:n,scope:r,scanLimit:i,semantic:o}=t,s=U(),a=new _(e),c=0,l=w("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=w("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 w("similar.callee-fingerprints.shape",()=>{let g=l.map(C=>({symbol:C.symbol,file:C.relativePath,callees:Na((d.get(C.symbolId)??[]).map(x=>x.symbol)),paramCount:a.callableSignature(C)?.paramCount??-1})),y=qB(g);s&&(p=y.filter((C,x)=>C.callees.size!==g[x].callees.size).length);let h=y.filter(C=>C.callees.size>=n);return m=h.length,s&&(f=h.reduce((C,x)=>C+x.callees.size,0)),h},()=>({candidateCount:c,fingerprintCount:m,retainedCalleeCount:f,minCallees:n,siblingSaturatedFingerprints:p}))}var EC=5;function qB(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)>=EC);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 KB(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>=EC);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 Na(e){return new Set([...e].filter(t=>!JB(t)))}function JB(e){return BB.some(t=>e.includes(t))}function SC(e,t,n){let r=ZB(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 w("similar.source-shape",()=>{let m=Yr(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=mt(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:[...Pe(r.tokens,f.tokens)].sort(),uniqueToB:[...Pe(f.tokens,r.tokens)].sort(),...kC([...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 kC(e,t){let n=e.flatMap(Id),r=e.flatMap(y=>CC(y,t)),i=vd(n,PC),o=vd(n,TC),s=vd(r,wd),a=[...new Set(r.filter(xC))],c=e.filter(y=>{let h=CC(y,t);return h.some(C=>wd.has(C))&&h.some(xC)}).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=>_C.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:YB(p,g)}}function YB(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 vd(e,t){return[...new Set(e.filter(n=>t.has(n)))]}function Id(e){return e.replace(/([a-z0-9])([A-Z])/g,"$1 $2").toLowerCase().split(/[^a-z0-9]+/).filter(t=>t.length>1)}function CC(e,t){if(t==="source-tokens")return Id(e);let n=T(e);return Id(n.length>0?n:XB(e))}function XB(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 xC(e){return e.length>3&&!wd.has(e)&&!PC.has(e)&&!TC.has(e)&&!_C.has(e)&&!QB.has(e)}var wd=new Set(["archive","assign","book","cancel","create","delete","ensure","export","import","notify","persist","publish","restore","schedule","send","set","submit","sync","update","upload","validate","write"]),PC=new Set(["access","auth","authorize","cache","context","db","find","get","guard","list","permission","permissions","prisma","query","request","response","role","route","session","sql","where"]),TC=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"]),_C=new Set(["bytes","crypto","data","false","get","hex","id","key","map","name","num","random","result","secret","set","string","to","token","true","type","value"]),QB=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 ZB(e,t){let n=B(e,t);if(!n||!ee(n.symbol))return null;let r=e$(e,n);return r?{symbol:n.symbol,file:n.relativePath,tokens:r}:null}function e$(e,t){let n=T(t.symbol),r=u$(e,t.relativePath,t.startLine,t.endLine,n),i=MC(r,n);return i.size>0?i:null}var t$=J("source-fingerprint-corpus",{clearGroups:["whole-project","definition-catalog"]}),n$=J("source-fingerprint-index",{clearGroups:["whole-project","definition-catalog"]});function FC(e){return`${e.scanLimit??""}`}function LC(e,t={}){let n=t$.get(e,()=>new Map),r=FC(t),i=n.get(r);return i||(i=l$(e,t),n.set(r,i)),i}function RC(e,t={}){let n=n$.get(e,()=>new Map),r=FC(t),i=n.get(r);return i||(i=r$(LC(e,t)),n.set(r,i)),i}function r$(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 i$(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 o$(e,t,n){let r=U(),i=new _(e),o=s$(t.tokens.size,n.minSimilarity),s=0,a=0,c=0,l=w("similar.source-shape.target-files",()=>{let p=[...t.tokens],g=[];for(let y of N(e,{includeIgnored:!1})){s+=1;let h=P(e,y);h&&(a+=1,a$(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=w("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 w("similar.source-shape.target-fingerprints",()=>{let p=NC(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 a$(e,t,n){if(t.length<n)return!1;let r=e.toLowerCase(),i=0;for(let o of t)if(c$(r,o)&&(i+=1,i>=n))return!0;return!1}function c$(e,t){return t==="num"?/\b\d+\b/.test(e):e.includes(t)}function l$(e,t={}){let n=new _(e),{scanLimit:r}=t,i=se(n.productionCallableDefinitions({sortByLocDesc:typeof r=="number"&&r>0}),r);return NC(e,i)}function NC(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=P(e,i);if(!s)continue;let a=ce(e,i,s),c=m$(e,i,a),l=!1,u=null;for(let d of o){let m=d$(d),f=c.get(m),p=f?new Set(f.tokens):null;p||(u??=Ce(e,i),p=MC(AC(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&&g$(e,i,a,c)}return t.map(i=>r.get(i.symbol)).filter(i=>!!i)}function u$(e,t,n,r,i){let o=Ce(e,t);return o.length===0?"":AC(o,n,r,i)}function AC(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&&y$(c)||(s=a,c.trim()===""&&a>o+1))break}return e.slice(o,s+1).join(`
714
+ ORDER BY d.relative_path, der.start_line, der.end_line, gs.symbol`,...r))}return n}function gC(e){let t=[];for(let n=0;n<e.length;n+=pC)t.push(e.slice(n,n+pC));return t}function wB(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 hC(e){return e.kind!==null&&e.kind!==0?DB(e.kind,e.symbol,e.documentation):EB(e.symbol,e.documentation,e.enclosing_symbol)}function DB(e,t,n){let r=(n??"").toLowerCase();if(ue(t)==="type"){if(r.includes("type "))return ke.TypeAlias;if(r.includes("interface "))return ke.Interface;if(r.includes("struct "))return ke.Struct;if(r.includes("trait "))return ke.Trait;if(r.includes("class "))return ke.Class}return e}function EB(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 ")?ke.TypeAlias:a.includes("interface ")?ke.Interface:a.includes("struct ")?ke.Struct:a.includes("trait ")?ke.Trait:a.includes("class ")?ke.Class:ke.Class:s==="method"?o?.suffix==="type"?ke.Method:ke.Function:s==="namespace"?ke.Module:s!=="term"?null:a.includes("async def ")||a.includes("def ")?ke.Function:(n?ue(n):o?.suffix??null)==="type"?ke.Field:ke.Variable}function kB(e,t={}){let{limit:n=10,scope:r,minDepth:i=3}=t,o=ie(e,r),{components:s,componentOf:a}=La(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 C of y){let x=a.get(C);x!==h&&c.get(h).add(x)}}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 C of c.get(g)){let x=u[C];x>h&&(h=x,y=l[C])}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(S=>m[S]),C=h.map(S=>S[0]);if(h.length<i)continue;let x=C.join(" ");f.has(x)||(f.add(x),p.push(PB(C,h)))}return p.sort((g,y)=>y.depth-g.depth),TB(p).slice(0,n)}function PB(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 TB(e){let t=[];for(let n of e)t.some(r=>_B(n.chain,r.chain))||t.push(n);return t}function _B(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 FB(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 Rd(e,t,n={}){let r=B(e,t);if(!r)return null;let i=n.semantic!==!1,o=Ct(e,r,{semantic:i,semanticEvidence:H}).filter(a=>ee(a.symbol)).slice(0,50),s=zr(dt(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 mt(e,t){let n=new Set;for(let r of e)t.has(r)&&n.add(r);return n}function Pe(e,t){let n=new Set;for(let r of e)t.has(r)||n.add(r);return n}function kn(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 yC(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 vd(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 Kr(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 Jr(e,t){let n=0;for(let r of e){let i=t.get(r)??0;n+=i*i}return Math.sqrt(n)}function bC(e,t,n,r={}){let i=0,o=0,s=0,a=r.medianIdf??Kr(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 SC(e,t,n,r){let i=0,o=r.medianIdf??Kr(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 Na(e,t,n={}){let{minSimilarity:r=.4,limit:i=20}=n,o=HB(e,t,{semantic:n.semantic!==!1});if(!o)return[];if(!ee(o.symbol))return[];if(o.callees.size===0)return CC(e,t,{minSimilarity:r,limit:i,scanLimit:n.scanLimit,candidateMode:n.sourceCandidateMode??"full"});let s=NB(e,o,r,{scanLimit:n.scanLimit,semantic:n.semantic!==!1});return s.length>0?s.slice(0,i):CC(e,t,{minSimilarity:r,limit:i,scanLimit:n.scanLimit,candidateMode:n.sourceCandidateMode??"full"})}function Ed(e,t,n,r={}){let i=B(e,t),o=B(e,n);if(!i||!o)return null;let s=Na(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:LB(s)}}function LB(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 NB(e,t,n,r){let i=Yr(e).calleeIndex({minCallees:3,scanLimit:r.scanLimit,semantic:r.semantic}),o=JB(t,i.corpus),s=VB(o,i),a=AB(o,i),c=Kr(a),l=Jr(o.callees,a),u=[];for(let d of s){if(d.callees.size<3)continue;let m=Jr(d.callees,a),f=IC(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 AB(e,t){let n=new Map(t.docFreq);for(let r of e.callees)n.set(r,(n.get(r)??0)+1);return vd(n,t.corpus.length+1)}function IC(e,t,n,r){let i=OB(e,t,n,r);if(!jB(i,r))return null;let{similarity:o,significantShared:s,trivialShared:a}=i,c=s.length>0?s:a,l=PC(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:[...Pe(e.callees,t.callees)].map(I),uniqueToB:[...Pe(t.callees,e.callees)].map(I),...l}}function MB(e,t,n,r){let i=r.magnitudeA??Jr(e.callees,n),o=r.magnitudeB??Jr(t.callees,n),s=0,a=0,c=0,l=r.medianIdf??Kr(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 OB(e,t,n,r){return r.magnitudeA===void 0||r.magnitudeB===void 0?bC(e.callees,t.callees,n,{medianIdf:r.medianIdf}):SC(e.callees,t.callees,n,{medianIdf:r.medianIdf,magnitudeA:r.magnitudeA,magnitudeB:r.magnitudeB})}function jB(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 mo(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 w("similar.all",()=>{let C=Yr(e).calleeIndex({minCallees:o,scope:i,scanLimit:a,semantic:c}),x=C.corpus;u=x.length;let S=t.focusFiles,b=[],v=0;return w("similar.all.pair-scan",()=>{for(let R=0;R<x.length;R+=1){let E=x[R],D=S?.has(E.file)??!1,k=C.weightedMagnitudes[R],L=new Set;for(let ne of E.callees){let X=C.candidateIndexesByCallee.get(ne);if(X)for(let F of X)F<=R||S&&!D&&!S.has(x[F].file)||L.add(F)}l&&(m+=L.size,L.size>0&&(d+=1));for(let ne of L){let X=x[ne];if(s&&E.file===X.file){l&&(p+=1);continue}if(wC(E,X)){l&&(g+=1);continue}l&&(f+=1);let F=IC(E,X,C.idfWeights,{minSimilarity:n,requireSignificantShared:2,requireSharedCount:4,medianIdf:C.medianIdf,magnitudeA:k,magnitudeB:C.weightedMagnitudes[ne]});F&&(BB(b,F,r,v),l&&(y+=1),v+=1)}}},()=>({corpusSize:u,candidateSets:d,candidatePairs:m,comparedPairs:f,crossFileSkips:p,signatureSkips:g,insertedResults:y,topResults:b.length})),w("similar.all.sort-project",()=>(b.sort((R,E)=>E.result.similarity-R.result.similarity||R.order-E.order),b.map(R=>R.result)),()=>({topResults:b.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 kd(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 w("similar.all-count",()=>{let h=Yr(e).calleeIndex({minCallees:i,scope:r,scanLimit:s,semantic:a}),C=h.corpus;l=C.length;let x=t.focusFiles;return w("similar.all-count.pair-scan",()=>{for(let S=0;S<C.length;S+=1){let b=C[S],v=x?.has(b.file)??!1,R=h.weightedMagnitudes[S],E=new Set;for(let D of b.callees){let k=h.candidateIndexesByCallee.get(D);if(k)for(let L of k)L<=S||x&&!v&&!x.has(C[L].file)||E.add(L)}c&&(d+=E.size,E.size>0&&(u+=1));for(let D of E){let k=C[D];if(o&&b.file===k.file){c&&(f+=1);continue}if(wC(b,k)){c&&(p+=1);continue}c&&(m+=1),MB(b,k,h.idfWeights,{minSimilarity:n,requireSignificantShared:2,requireSharedCount:4,medianIdf:h.medianIdf,magnitudeA:R,magnitudeB:h.weightedMagnitudes[D]})&&(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 wC(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:K("source-fingerprints"),serialize:g$,deserialize:p$});function BB(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 $B=["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 HB(e,t,n){let r=B(e,t);if(!r||!ee(r.symbol))return null;let i=new _(e),o=dt(e,r,{semantic:n.semantic,semanticEvidence:H});return{symbol:r.symbol,file:r.relativePath,callees:Aa(o.map(s=>s.symbol)),paramCount:i.callableSignature(r)?.paramCount??-1}}var UB=J("callee-fingerprint-corpus",{clearGroups:["whole-project","definition-catalog"]}),WB=J("callee-fingerprint-index",{clearGroups:["whole-project","definition-catalog"]});function EC(e,t){let{minCallees:n,scope:r,excludeSymbol:i,scanLimit:o}=t,s=t.semantic!==!1,a=UB.get(e,()=>new Map),c=`${n}|${r??""}|${o??""}|${s}`,l=!0,u=0,d=0;return w("similar.callee-fingerprints.resolve",()=>{let m=a.get(c);if(l=m!==void 0,m||(m=qB(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 GB(e,t){let{minCallees:n,scope:r,scanLimit:i}=t,o=t.semantic!==!1,s=WB.get(e,()=>new Map),a=`${n}|${r??""}|${i??""}|${o}`,c=!0,l=0,u=0,d=0;return w("similar.callee-index.resolve",()=>{let m=s.get(a);return c=m!==void 0,m||(m=zB(EC(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 Yr(e){return{calleeCorpus:t=>EC(e,t),calleeIndex:t=>GB(e,t),sourceCorpus:(t={})=>NC(e,t),sourceIndex:(t={})=>vC(e,t),sourceCandidates:(t,n)=>(n.candidateMode??"full")==="target-pruned"?s$(e,t,{minSimilarity:n.minSimilarity,scanLimit:n.scanLimit}):o$(t,vC(e,{scanLimit:n.scanLimit}))}}function zB(e){let t=U(),n=0,r=w("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=w("similar.callee-index.idf-weights",()=>vd(r,e.length),()=>({corpusSize:e.length,uniqueCallees:r.size})),s=w("similar.callee-index.weighted-magnitudes",()=>e.map(m=>Jr(m.callees,o)),()=>({corpusSize:e.length})),a=0,c=0,l=0,u=w("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=w("similar.callee-index.median-idf",()=>Kr(o),()=>({uniqueCallees:o.size}));return{corpus:e,candidateIndexesByCallee:u,docFreq:r,idfWeights:o,weightedMagnitudes:s,medianIdf:d,ubiquityThreshold:i}}function VB(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 qB(e,t){let{minCallees:n,scope:r,scanLimit:i,semantic:o}=t,s=U(),a=new _(e),c=0,l=w("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=w("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 w("similar.callee-fingerprints.shape",()=>{let g=l.map(C=>({symbol:C.symbol,file:C.relativePath,callees:Aa((d.get(C.symbolId)??[]).map(x=>x.symbol)),paramCount:a.callableSignature(C)?.paramCount??-1})),y=KB(g);s&&(p=y.filter((C,x)=>C.callees.size!==g[x].callees.size).length);let h=y.filter(C=>C.callees.size>=n);return m=h.length,s&&(f=h.reduce((C,x)=>C+x.callees.size,0)),h},()=>({candidateCount:c,fingerprintCount:m,retainedCalleeCount:f,minCallees:n,siblingSaturatedFingerprints:p}))}var kC=5;function KB(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 JB(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 Aa(e){return new Set([...e].filter(t=>!YB(t)))}function YB(e){return $B.some(t=>e.includes(t))}function CC(e,t,n){let r=e$(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 w("similar.source-shape",()=>{let m=Yr(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=mt(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:[...Pe(r.tokens,f.tokens)].sort(),uniqueToB:[...Pe(f.tokens,r.tokens)].sort(),...PC([...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 PC(e,t){let n=e.flatMap(wd),r=e.flatMap(y=>xC(y,t)),i=Id(n,TC),o=Id(n,_C),s=Id(r,Dd),a=[...new Set(r.filter(RC))],c=e.filter(y=>{let h=xC(y,t);return h.some(C=>Dd.has(C))&&h.some(RC)}).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=>FC.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:XB(p,g)}}function XB(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 Id(e,t){return[...new Set(e.filter(n=>t.has(n)))]}function wd(e){return e.replace(/([a-z0-9])([A-Z])/g,"$1 $2").toLowerCase().split(/[^a-z0-9]+/).filter(t=>t.length>1)}function xC(e,t){if(t==="source-tokens")return wd(e);let n=T(e);return wd(n.length>0?n:QB(e))}function QB(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 RC(e){return e.length>3&&!Dd.has(e)&&!TC.has(e)&&!_C.has(e)&&!FC.has(e)&&!ZB.has(e)}var Dd=new Set(["archive","assign","book","cancel","create","delete","ensure","export","import","notify","persist","publish","restore","schedule","send","set","submit","sync","update","upload","validate","write"]),TC=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"]),FC=new Set(["bytes","crypto","data","false","get","hex","id","key","map","name","num","random","result","secret","set","string","to","token","true","type","value"]),ZB=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 e$(e,t){let n=B(e,t);if(!n||!ee(n.symbol))return null;let r=t$(e,n);return r?{symbol:n.symbol,file:n.relativePath,tokens:r}:null}function t$(e,t){let n=T(t.symbol),r=d$(e,t.relativePath,t.startLine,t.endLine,n),i=OC(r,n);return i.size>0?i:null}var n$=J("source-fingerprint-corpus",{clearGroups:["whole-project","definition-catalog"]}),r$=J("source-fingerprint-index",{clearGroups:["whole-project","definition-catalog"]});function LC(e){return`${e.scanLimit??""}`}function NC(e,t={}){let n=n$.get(e,()=>new Map),r=LC(t),i=n.get(r);return i||(i=u$(e,t),n.set(r,i)),i}function vC(e,t={}){let n=r$.get(e,()=>new Map),r=LC(t),i=n.get(r);return i||(i=i$(NC(e,t)),n.set(r,i)),i}function i$(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 o$(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 s$(e,t,n){let r=U(),i=new _(e),o=a$(t.tokens.size,n.minSimilarity),s=0,a=0,c=0,l=w("similar.source-shape.target-files",()=>{let p=[...t.tokens],g=[];for(let y of N(e,{includeIgnored:!1})){s+=1;let h=P(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=w("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 w("similar.source-shape.target-fingerprints",()=>{let p=AC(e,d);return r&&(m=p.length),p},()=>({symbol:t.symbol,definitionCount:u,fingerprintCount:m})).filter(p=>p.symbol!==t.symbol)}function a$(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(l$(r,o)&&(i+=1,i>=n))return!0;return!1}function l$(e,t){return t==="num"?/\b\d+\b/.test(e):e.includes(t)}function u$(e,t={}){let n=new _(e),{scanLimit:r}=t,i=se(n.productionCallableDefinitions({sortByLocDesc:typeof r=="number"&&r>0}),r);return AC(e,i)}function AC(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=P(e,i);if(!s)continue;let a=ce(e,i,s),c=f$(e,i,a),l=!1,u=null;for(let d of o){let m=m$(d),f=c.get(m),p=f?new Set(f.tokens):null;p||(u??=Ce(e,i),p=OC(MC(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&&h$(e,i,a,c)}return t.map(i=>r.get(i.symbol)).filter(i=>!!i)}function d$(e,t,n,r,i){let o=Ce(e,t);return o.length===0?"":MC(o,n,r,i)}function MC(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&&b$(c)||(s=a,c.trim()===""&&a>o+1))break}return e.slice(o,s+1).join(`
717
717
  `)}return e.slice(t,Math.min(e.length,t+8)).join(`
718
- `)}function d$(e){return`${e.symbol}\0${e.startLine}\0${e.endLine}\0${e.leaf}`}function m$(e,t,n){return wC.read(e,t,n)??new Map}function f$(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 p$(e){let t={entries:[...e.values()].sort((n,r)=>n.key.localeCompare(r.key))};return JSON.stringify(t)}function g$(e,t,n,r){wC.write(e,t,n,new Map(r))}function MC(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=h$(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 h$(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 y$(e){return/^\s*(?:def|fun|fn|function|class|trait|module|object|enum|interface|public|private|protected)\b/.test(e)}function Lt(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 Nt(e){let t=OC(e.profile?.name),n=()=>{let r=[];t=OC(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 b$(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 S$(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?w(`pairwise-profile:${e.profile.name}`,n,()=>({...C$(e.profile?.metadata),...t})):n()}function b$(e,t){if(e.candidateIndex)return jC(e,t,-1);let n=[];for(let r=0;r<e.profiles.length;r+=1)r!==t&&n.push(r);return n}function S$(e,t){if(e.candidateIndex)return jC(e,t,t);let n=[];for(let r=t+1;r<e.profiles.length;r+=1)n.push(r);return n}function jC(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 OC(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 C$(e){return typeof e=="function"?e():e??{}}function x$(e,t={}){let{minSimilarity:n=.5,limit:r=20,scope:i,filePattern:o}=t,s=t.minDeps??(o?1:3),{profiles:a,distinctiveDeps:c}=R$(e,{scope:i,minDeps:s}),l=Lt(a,u=>u.deps);return Nt({profiles:a,limit:r,filePattern:o,overrunFactor:5,candidateIndex:l,profile:{name:"similar-files"},compare:(u,d)=>I$(u,d,n,c)})}function R$(e,t){let{scope:n,minDeps:r}=t,i=ie(e,n),{universalDeps:o,distinctiveDeps:s}=v$(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 v$(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 I$(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=kn(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 Pn(e){let t=[],n=[],r=[];for(let l of e.primitiveGroups)l.values.length!==0&&BC(l.bucket,n,r).push(`${l.reasonPrefix}: ${l.values.join(", ")}`);for(let l of e.nameGroups)w$(l.names,l.label,e.genericWords,e.stripPrefixes??[],t,BC(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 Aa(e,t){if(e.size===0||t.size===0)return 0;let i=mt(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(kn(e,t),i)}function Tn(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 Ma(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 V(e,t){return[...e].filter(n=>n.startsWith(t)).map(n=>n.slice(t.length)).sort()}function Le(e){return[...e].sort()}function w$(e,t,n,r,i,o){let s=[],a=[];for(let c of e)D$(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 D$(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 BC(e,t,n){return e==="generic"?t:n}function fo(e,t={}){let{minSimilarity:n=.62,minTokens:r=8,limit:i=20,scope:o,scanLimit:s,filePattern:a,focusFiles:c}=t,l=nt(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=Lt(l,d=>d.tokens);return Nt({profiles:l,limit:i,filePattern:a,focusFiles:c,candidateIndex:u,profile:{name:"react-component-duplicates"},compare:(d,m)=>E$(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$(e,t,n){let r=mt(e.tokens,t.tokens);if(r.size<6||!k$(r))return null;let i=kn(e.tokens,t.tokens);if(i<n)return null;let o=V(r,"component:"),s=V(r,"native:"),a=V(r,"prop:"),c=V(r,"event:"),l=V(r,"binding:"),u=P$({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(Pe(e.tokens,t.tokens)).slice(0,25),uniqueToB:Le(Pe(t.tokens,e.tokens)).slice(0,25),locA:e.profile.loc,locB:t.profile.loc}}function k$(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 Tn([{name:"component",count:t},{name:"shape",count:n}],[{min:{component:1},reason:"shared custom component"},{min:{shape:4},reason:"shared JSX structure"}]).pass}function P$(e){return Pn({genericWords:_$,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:T$})}function T$(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 _$=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 po(e,t={}){let{minSimilarity:n=.45,minSharedBehaviors:r=6,limit:i=20,scope:o,scanLimit:s,filePattern:a,focusFiles:c}=t,l=nt(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=Lt(l,d=>d.tokens);return Nt({profiles:l,limit:i,filePattern:a,focusFiles:c,candidateIndex:u,profile:{name:"react-hook-candidates"},compare:(d,m)=>F$(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 F$(e,t,n,r){let i=mt(e.tokens,t.tokens);if(i.size<r||!A$(i))return null;let o=Aa(e.tokens,t.tokens);if(o<n)return null;let s=V(i,"hook:"),a=V(i,"react-hook:"),c=V(i,"effect:"),l=V(i,"state:"),u=V(i,"request:"),d=V(i,"handler:"),m=V(i,"handler-verb:"),f=L$({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(Pe(e.tokens,t.tokens)).slice(0,25),uniqueToB:Le(Pe(t.tokens,e.tokens)).slice(0,25),reason:M$({sharedHooks:s,sharedReactHooks:a,sharedEffects:c,sharedState:l,sharedRequests:u,sharedHandlers:d,sharedHandlerVerbs:m}),locA:e.profile.loc,locB:t.profile.loc}}function L$(e){return Pn({genericWords:O$,stripPrefixes:j$,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:N$})}function N$(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 A$(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 Tn([{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 M$(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 O$=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"]),j$=[/^use(?=[A-Z])/,/^handle(?=[A-Z])/,/^is(?=[A-Z])/,/^has(?=[A-Z])/];function kd(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 nt(e).reactProfiles({scope:a,scanLimit:c}).filter(d=>d.kind==="component").filter(d=>!l||d.file.includes(l)||d.name.includes(l)).map(d=>B$(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 B$(e,t){let n=Math.max(80,Math.floor(t.minComponentLines/2)),r=Ma(e,$$({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=H$(e),c=U$(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:W$(c,a),reasons:i,loc:e.loc}}function $$(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 H$(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=>z$.has(m))>=0,s=n.some(m=>G$.has(m));if($C(r)||$C(e.name))return"component";let c=V$.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 $C(e){let t=e.split(/[^A-Za-z0-9]+/).filter(Boolean).map(n=>n.toLowerCase());return t.at(-1)&&HC.has(t.at(-1))?!0:[...HC].some(n=>e.endsWith(q$(n)))}function U$(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 W$(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 G$=new Set(["component","components","panel","panels","partial","partials"]),HC=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"]),z$=new Set(["landing","page","pages","route","routes","screen","screens","view","views"]),V$=new Set(["page","route","screen"]);function q$(e){return e.charAt(0).toUpperCase()+e.slice(1)}function go(e,t={}){let{minSimilarity:n=.62,minTokens:r=8,limit:i=20,scope:o,scanLimit:s,filePattern:a,focusFiles:c}=t,l=K$(e,{scope:o,minTokens:r,scanLimit:s}),u=Lt(l,d=>d.tokens);return Nt({profiles:l,limit:i,filePattern:a,focusFiles:c,candidateIndex:u,profile:{name:"vue-component-duplicates"},compare:(d,m)=>Y$(d,m,n),sort:(d,m)=>m.similarity-d.similarity||d.fileA.localeCompare(m.fileA)||d.fileB.localeCompare(m.fileB)})}function K$(e,t){return nt(e).vueProfiles({scope:t.scope,minTemplateTokens:t.minTokens,scanLimit:t.scanLimit}).map(n=>({file:n.file,tokens:n.templateTokens,loc:J$(n)}))}function J$(e){return e.totalLines}function Y$(e,t,n){let r=mt(e.tokens,t.tokens);if(r.size<6||!X$(r))return null;let i=kn(e.tokens,t.tokens);if(i<n)return null;let o=V(r,"component:"),s=V(r,"prop:"),a=V(r,"event:"),c=V(r,"directive:"),l=V(r,"slot:"),u=V(r,"id:"),d=Q$({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(Pe(e.tokens,t.tokens)).slice(0,25),uniqueToB:Le(Pe(t.tokens,e.tokens)).slice(0,25),locA:e.loc,locB:t.loc}}function X$(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 Tn([{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 Q$(e){return Pn({genericWords:e1,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:Z$})}function Z$(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 e1=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 ho(e,t={}){let{minSimilarity:n=.45,minSharedBehaviors:r=6,limit:i=20,scope:o,scanLimit:s,filePattern:a,focusFiles:c}=t,l=nt(e).vueProfiles({scope:o,minBehaviorTokens:Math.max(3,r),scanLimit:s}).map(d=>({file:d.file,tokens:d.behaviorTokens,profile:d})),u=Lt(l,d=>d.tokens);return Nt({profiles:l,limit:i,filePattern:a,focusFiles:c,candidateIndex:u,profile:{name:"vue-composable-candidates"},compare:(d,m)=>t1(d,m,n,r),sort:(d,m)=>m.similarity-d.similarity||d.fileA.localeCompare(m.fileA)||d.fileB.localeCompare(m.fileB)})}function t1(e,t,n,r){let i=mt(e.tokens,t.tokens);if(i.size<r||!i1(i))return null;let o=Aa(e.tokens,t.tokens);if(o<n)return null;let s=V(i,"composable:"),a=V(i,"store:"),c=V(i,"reactivity:"),l=V(i,"lifecycle:"),u=V(i,"request:"),d=V(i,"function:"),m=V(i,"function-verb:"),f=V(i,"template-binding:"),p=V(i,"template-event:"),g=n1({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(Pe(e.tokens,t.tokens)).slice(0,25),uniqueToB:Le(Pe(t.tokens,e.tokens)).slice(0,25),reason:o1({sharedComposables:s,sharedStores:a,sharedRequests:u,sharedLifecycle:l,sharedFunctions:d,sharedFunctionVerbs:m,sharedBindings:f}),locA:e.profile.totalLines,locB:t.profile.totalLines}}function n1(e){return Pn({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:r1})}function r1(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 i1(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 Tn([{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 o1(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 Pd(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 nt(e).vueProfiles({scope:a,scanLimit:c}).filter(d=>!l||d.file.includes(l)).map(d=>a1(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 a1(e,t){let n=Ma(e,c1(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=l1(e.file),a=u1(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:d1(a,s),reasons:r,loc:c}}function c1(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 l1(e){return e.toLowerCase().split(/[^a-z0-9]+/).filter(Boolean).some(r=>m1.has(r))||/(?:view|page|route)\.vue$/i.test(e)||/(?:^|\/)(views|pages|routes)\//i.test(e)?"route-page":"component"}function u1(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 d1(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 m1=new Set(["landing","page","pages","route","routes","view","views"]);function f1(e,t={}){let{minSimilarity:n=.5,limit:r=15,scope:i,minChainLength:o=3,maxChainLength:s=8}=t,a=ie(e,i),c=x1(a,o,s);if(c.length===0)return[];let l=p1(c);return l.length<2?[]:C1(y1(l,n,r),r)}function p1(e){let t=g1(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 g1(e){let{nodeFreq:t,tailFreq:n}=h1(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 h1(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 y1(e,t,n){let r=[];for(let i=0;i<e.length;i++){for(let o=i+1;o<e.length;o++){let s=b1(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 b1(e,t,n){if(!S1(e.filtered,t.filtered))return null;let{distance:r,ops:i}=R1(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:v1(e.original,t.original),commonSuffix:I1(e.original,t.original)}}function S1(e,t){let n=new Set(e);return t.some(r=>n.has(r))}function C1(e,t){let n=[];for(let r of e)if(n.some(o=>UC(r.chainA,o.chainA)&&UC(r.chainB,o.chainB))||n.push(r),n.length>=t)break;return n}function x1(e,t,n){let r=[];for(let o of e.keys()){if(r.length>=500)break;WC(e,o,[o],new Set([o]),t,n,r,500)}return r}function WC(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),WC(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 R1(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 v1(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 I1(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 UC(e,t){if(e.length>t.length)return!1;let n=t.join("\u2192"),r=e.join("\u2192");return n.includes(r)}function ft(e){let t=w1(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?w(`candidate-pipeline:${e.profile.name}`,n,()=>({...D1(e.profile?.metadata),...t})):n()}function w1(e){return{pipeline:e,loadedCandidates:0,filteredCandidates:0,scannedCandidates:0,evaluatedCandidates:0,matchedResults:0,emittedResults:0,scanLimitApplied:!1,resultLimitApplied:!1}}function D1(e){return typeof e=="function"?e():e??{}}function yo(e,t={}){let{scope:n,minLoc:r=10,minCallees:i=6,limit:o=20,scanLimit:s}=t,a=new _(e);return ft({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)=>E1(c,l.get(c.symbolId)??[],i),orderResults:(c,l)=>l.clusters.length-c.clusters.length||l.loc-c.loc,limit:o})}function E1(e,t,n){let r=new Set(t.map(l=>l.symbol));if(r.size<n)return null;let i=F1(r,t),o=L1(r,i);if(o.length<2)return null;let s=N1(o,i);if(s.length===0)return null;let a=I(e.symbol),c=k1(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 k1(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=P1(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 P1(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=T1(e);return _1.has(r)?`caller verb suggests orchestration: ${r}`:null}function T1(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 _1=new Set(["apply","build","check","collect","create","diff","execute","find","handle","load","prepare","process","render","resolve","run","select","sync","update","validate","verify","write"]);function F1(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 L1(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 N1(e,t){return e.filter(n=>n.size>=3).map(n=>A1(n,e,t)).filter(n=>n.isolation>.5).sort((n,r)=>r.isolation-n.isolation)}function A1(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 Xr}from"path";import{spawnSync as M1}from"child_process";import{createHash as O1}from"crypto";import{existsSync as j1}from"fs";import{dirname as GC,join as B1}from"path";import{fileURLToPath as $1}from"url";var qC=j("definition-consumer-file-usage",{clearGroups:["whole-project","source-file"]}),zC=oe({kind:"consumer-file-usage",invalidation:K("consumer-file-usage"),serialize:Y1,deserialize:X1});function rn(e,t){return{forDefinitions(n,r){return H1(e,t,n,r)}}}function on(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 ja(e,t,n){return JC(e,t,n).partition}function H1(e,t,n,r){let i=KC(n.length),o=U()?Te(e):null,s=o?U1(n,r,o):void 0,a=s?{workIdentity:s,workOutcome:"computed"}:{};return w("consumer-evidence.product",()=>{let c=w("consumer-evidence.provenance",()=>W1(e,t,n,r),()=>({...a,definitions:n.length,semantic:r.semantic,sourceFallback:r.sourceFallback!==!1})),l=new Map;i={...i,...c.counters};let u=G1(n,c.sources);return w("consumer-evidence.classify",()=>{let d=z1(e,n,c.sources,u);for(let m of n){let f=d.get(m.symbolId)??q1();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 U1(e,t,n){let r=O1("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 KC(e){return{definitions:e,indexedFiles:0,semanticFiles:0,fallbackFiles:0,totalFiles:0,realFiles:0,reexportOnlyFiles:0,importOnlyFiles:0}}function W1(e,t,n,r){let i=KC(n.length),o=new Map;return Td(o,i,"indexed",t.crossFileCallerMap(n,{semantic:!1})),r.semantic&&Td(o,i,"semantic",In(e,n)),r.sourceFallback!==!1&&Td(o,i,"source-fallback",t.sourceFallbackCallerFiles(n)),i.totalFiles=[...o.values()].reduce((s,a)=>s+a.size,0),{sources:o,counters:i}}function G1(e,t){return{definitions:e.length,consumerFiles:[...t.values()].reduce((n,r)=>n+r.size,0),nativeAttempted:!1,nativeUsed:!1,nativeReason:"not-attempted"}}function Td(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 z1(e,t,n,r){let i=iH(e,t,n,r);return i||V1(e,t,n)}function V1(e,t,n){let r=new Map;for(let i of t){let o=n.get(i.symbolId)??new Map;r.set(i.symbolId,JC(e,i,[...o.keys()],o))}return r}function JC(e,t,n,r=new Map){let i=[],o=0,s=0,a=T(t.symbol),c=[];for(let l of n){let u;Q1(e,l,t.relativePath,a)?(o++,u="reexport-only"):_d(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 q1(){return{partition:{realConsumers:[],barrelConsumers:0,importOnlyConsumers:0},files:[]}}function _d(e,t,n){if(!n)return!1;let r=M(t);if(!r)return!1;let i=qC.get(e,t,()=>YC(e,t,r));return i.importedLeaves.has(n)&&!i.usedLeaves.has(n)}function YC(e,t,n){let r=at(e).forFile(t,{text:!0,ast:!0}),i=r.text;if(!i)return J1();let o=ce(e,t,i),s=zC.read(e,t,o);if(s)return s;let a=K1(r.ast,n);return zC.write(e,t,o,a),a}function K1(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 J1(){return{importedLeaves:new Set,usedLeaves:new Set}}function Y1(e){return JSON.stringify({importedLeaves:[...e.importedLeaves],usedLeaves:[...e.usedLeaves]})}function X1(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 Q1(e,t,n,r){if(!r)return!1;let i=at(e).forFile(t,{lines:!0,reexports:!0}),o=i.lines??[];if(o.length===0)return!1;let s=i.reexports??[];return XC(o,s,r)}function XC(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 Z1="SCIP_QUERY_NATIVE_CONSUMER_CLASSIFY",eH="SCIP_QUERY_NATIVE_KERNELS_BIN",tH="SCIP_QUERY_NATIVE_CONSUMER_CLASSIFY_MIN_FILES",VC=1e3,nH=5e3,rH=64*1024*1024,Oa;function iH(e,t,n,r){let i=process.env[Z1]?.toLowerCase();if(i!=="1"&&i!=="true")return r.nativeReason=i==="0"||i==="false"?"disabled":"opt-in-required",null;if(r.consumerFiles<dH())return r.nativeReason="below-threshold",null;let o=mH();if(!o)return r.nativeReason="binary-missing",null;r.nativeAttempted=!0;let s=oH(e,t,n),a=M1(o,["consumer-classify"],{input:JSON.stringify(s),encoding:"utf8",timeout:nH,maxBuffer:rH});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=aH(c,t);return l?(r.nativeUsed=!0,r.nativeReason="used",l):(r.nativeReason="invalid-response",null)}catch{return r.nativeReason="invalid-json",null}}function oH(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=qC.get(e,a,()=>YC(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=at(e).forFile(t,{lines:!0,reexports:!0}),i=r.lines??[],o=r.reexports??[];return i.length===0||o.length===0?[]:[...n].filter(s=>XC(i,o,s))}function aH(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=cH(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 cH(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(lH)||!uH(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 lH(e){return e==="indexed"||e==="semantic"||e==="source-fallback"}function uH(e){return e==="real"||e==="reexport-only"||e==="import-only"}function dH(){let e=process.env[tH];if(!e)return VC;let t=Number(e);return Number.isFinite(t)&&t>=0?t:VC}function mH(){if(Oa!==void 0)return Oa;let e=process.env[eH],t=process.platform==="win32"?"scip-query-kernels.exe":"scip-query-kernels";return Oa=[...e?[e]:[],...fH().map(r=>B1(r,"target","release",t))].find(r=>j1(r))??null,Oa}function fH(){let e=new Set,t=GC($1(import.meta.url));for(let n=0;n<5;n++)e.add(t),t=GC(t);return[...e]}var pH=20,gH=1,hH=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"]]),yH=new Set(["components","contracts","hooks","lib","services","shared","stores","utils"]),bH=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 SH(e,t={}){let n=Nd(t.limit,pH),r=Nd(t.minConsumers,gH),i=new _(e),o=i.fileDependencyGraph(t.scope),s=BH(N(e,{includeIgnored:!1})),a=UH(e.config.locality?.architecturalBoundarySegments,t.architecturalBoundarySegments);return(t.target?CH(e,i,t.target):xH(e,t.scope,t.scanLimit)).map(u=>RH(e,i,o,u,t,s,a)).filter(u=>u.consumerFiles.length>=r||t.target).sort(jH).slice(0,n)}function CH(e,t,n){let r=wH(e,n);if(r)return[nx(r)];let i=B(e,n);if(!i)return[];let o=t.definitionsForFile(i.relativePath).find(s=>s.symbolId===i.symbolId);return o?[DH(o)]:[{unit:{kind:"symbol",file:i.relativePath,shortName:I(i.symbol),symbol:i.symbol,startLine:i.startLine,endLine:i.endLine}}]}function xH(e,t,n){let r=N(e,{scope:t,includeIgnored:!1}),i=Nd(n,r.length);return r.slice(0,i).map(o=>nx(o))}function RH(e,t,n,r,i,o,s){let a=r.definition?vH(e,t,r.definition,i.semantic):IH(n,r.unit.file),c=r.definition?a.length>0?"exact":"none":a.length>0?"file-level":"none",l=r.unit.file,u=xt(Xr.dirname(l)),d=kH(a),m=EH(u),f=Md([...QC(u),...d?QC(d):[]]),p=PH(r.unit,u,d,a),g=TH(p,r.unit,u,d,a,o,s),y=AH(r.unit,c,d,a,u,g.whyNoSuggestedHome),h=MH(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:OH(p,g.suggestedHome,c)}}function vH(e,t,n,r){let i=on(rn(e,t).forDefinitions([n],{semantic:r!==!1,sourceFallback:!0}));return ax(i.get(n.symbolId)??[])}function IH(e,t){let n=[];for(let[r,i]of e.entries())r!==t&&i.has(t)&&n.push(r);return ax(n)}function wH(e,t){let n=gn(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 DH(e){return{definition:e,unit:{kind:"symbol",file:e.relativePath,shortName:I(e.symbol),symbol:e.symbol,startLine:e.startLine,endLine:e.endLine}}}function nx(e){return{unit:{kind:"file",file:e,shortName:Xr.basename(e)}}}function EH(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:Ad(i)})}return t}function QC(e){return e==="."?[]:rx(e).map(({marker:t,prefix:n})=>`${t}: ${n}`)}function Ad(e){return Md(rx(e).map(({marker:t})=>t))}function rx(e){let t=e.split("/").filter(Boolean),n=[];for(let r=0;r<t.length;r+=1){let i=hH.get(t[r]);i&&n.push({marker:i,prefix:t.slice(0,r+1).join("/")})}return n}function kH(e){if(e.length===0)return null;let t=e.map(r=>xt(Xr.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 PH(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":ex(n,"package")?"package-level-shared":ex(n,"app")?"app-level-shared":tx(n,["feature","domain","module"])||tx(t,["feature","domain","module"])?"feature-local-shared":"sibling-folder":"no-exact-consumers"}function TH(e,t,n,r,i,o,s){let a=_H(e,r);if(a)return _n(a);let c=$H(t.file),l=FH(e,n,c,i,s);if(l)return l;let u=r;if(xt(n)===xt(u))return _n(`${n} is already the nearest common owner for its consumers.`);let d=LH(u,n,c,s);return d||NH(u,n,c,o,s)}function _H(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 FH(e,t,n,r,i){if(e==="same-file"){let o=r[0]??null;return o?Fd(o):_n("No same-file consumer path was available.")}if(e==="sibling-folder"&&r.length===1){let o=xt(Xr.dirname(r[0])),s=sx(t,n,o,i);return s?_n(s):Fd(o)}return null}function LH(e,t,n,r){return GH(e)?ix(e,t,n,r,`Nearest shared owner ${e} is outside source root ${n}.`):null}function NH(e,t,n,r,i){if(e===".")return _n("The nearest common owner is the repository root.");let o=`${e}/shared`,s=ix(o,t,n,i,`Proposed home ${o} is outside source root ${n}.`);return s.confidence==="withheld"||r.has(o)?s:_n(`${o} does not exist in the indexed project.`)}function ix(e,t,n,r,i){if(!ox(e,n))return _n(i);let o=sx(t,n,e,r);return o?_n(o):Fd(e)}function Fd(e){return{suggestedHome:e,confidence:"exact",whyNoSuggestedHome:null}}function _n(e){return{suggestedHome:null,confidence:"withheld",whyNoSuggestedHome:e}}function AH(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 MH(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 OH(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 jH(e,t){return ZC(t)-ZC(e)||e.candidatePath.localeCompare(t.candidatePath)}function ZC(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 BH(e){let t=new Set(["."]);for(let n of e){let r=xt(Xr.dirname(n));for(;!t.has(r)&&(t.add(r),r!==".");)r=xt(Xr.dirname(r))}return t}function $H(e){let t=Ld(e),n=t.indexOf("src");return n>=0?t.slice(0,n+1).join("/"):t.length<=1?".":t[0]}function ox(e,t){let n=xt(e),r=xt(t);return r==="."||n===r||n.startsWith(`${r}/`)}function HH(e,t,n){let r=Ld(e),i=Ld(t);return(ox(e,t)?r.slice(i.length):r).some(s=>n.has(s.toLowerCase()))}function sx(e,t,n,r){return xt(e)===xt(n)||!HH(e,t,r)?null:`${e} is a named architectural boundary; an exact move to ${n} needs human design.`}function UH(...e){let t=new Set(bH);for(let n of e)for(let r of n??[]){let i=WH(r);i&&t.add(i)}return t}function WH(e){let t=e.trim().toLowerCase();return t===""?null:t}function ex(e,t){return Ad(e).includes(t)}function tx(e,t){let n=Ad(e);return t.some(r=>n.includes(r))}function GH(e){let t=e.split("/").filter(Boolean),n=t[t.length-1];return n?yH.has(n):!1}function xt(e){let t=gn(e);return t===""?".":t}function Ld(e){let t=gn(e);return t==="."?[]:t.split("/").filter(Boolean)}function Nd(e,t){return!Number.isFinite(e)||e===void 0||e<1?t:Math.floor(e)}function ax(e){return Md([...e]).sort((t,n)=>t.localeCompare(n))}function Md(e){return[...new Set(e)]}function Od(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=AS(e,l,{limit:500,semanticEvidence:H});for(let f of l)for(let p of zH(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 zH(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 VH(e,t,n)){if(o.has(u))continue;let d=Q(e,u),m=d.length>0?wt(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=wi(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)||!qH(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 VH(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
718
+ `)}function m$(e){return`${e.symbol}\0${e.startLine}\0${e.endLine}\0${e.leaf}`}function f$(e,t,n){return DC.read(e,t,n)??new Map}function p$(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 g$(e){let t={entries:[...e.values()].sort((n,r)=>n.key.localeCompare(r.key))};return JSON.stringify(t)}function h$(e,t,n,r){DC.write(e,t,n,new Map(r))}function OC(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=y$(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 y$(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 b$(e){return/^\s*(?:def|fun|fn|function|class|trait|module|object|enum|interface|public|private|protected)\b/.test(e)}function Lt(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 Nt(e){let t=jC(e.profile?.name),n=()=>{let r=[];t=jC(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 S$(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 C$(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?w(`pairwise-profile:${e.profile.name}`,n,()=>({...x$(e.profile?.metadata),...t})):n()}function S$(e,t){if(e.candidateIndex)return BC(e,t,-1);let n=[];for(let r=0;r<e.profiles.length;r+=1)r!==t&&n.push(r);return n}function C$(e,t){if(e.candidateIndex)return BC(e,t,t);let n=[];for(let r=t+1;r<e.profiles.length;r+=1)n.push(r);return n}function BC(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 jC(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 x$(e){return typeof e=="function"?e():e??{}}function R$(e,t={}){let{minSimilarity:n=.5,limit:r=20,scope:i,filePattern:o}=t,s=t.minDeps??(o?1:3),{profiles:a,distinctiveDeps:c}=v$(e,{scope:i,minDeps:s}),l=Lt(a,u=>u.deps);return Nt({profiles:a,limit:r,filePattern:o,overrunFactor:5,candidateIndex:l,profile:{name:"similar-files"},compare:(u,d)=>w$(u,d,n,c)})}function v$(e,t){let{scope:n,minDeps:r}=t,i=ie(e,n),{universalDeps:o,distinctiveDeps:s}=I$(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 I$(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 w$(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=kn(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 Pn(e){let t=[],n=[],r=[];for(let l of e.primitiveGroups)l.values.length!==0&&$C(l.bucket,n,r).push(`${l.reasonPrefix}: ${l.values.join(", ")}`);for(let l of e.nameGroups)D$(l.names,l.label,e.genericWords,e.stripPrefixes??[],t,$C(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 Ma(e,t){if(e.size===0||t.size===0)return 0;let i=mt(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(kn(e,t),i)}function Tn(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 Oa(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 V(e,t){return[...e].filter(n=>n.startsWith(t)).map(n=>n.slice(t.length)).sort()}function Le(e){return[...e].sort()}function D$(e,t,n,r,i,o){let s=[],a=[];for(let c of e)E$(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 E$(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 $C(e,t,n){return e==="generic"?t:n}function fo(e,t={}){let{minSimilarity:n=.62,minTokens:r=8,limit:i=20,scope:o,scanLimit:s,filePattern:a,focusFiles:c}=t,l=nt(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=Lt(l,d=>d.tokens);return Nt({profiles:l,limit:i,filePattern:a,focusFiles:c,candidateIndex:u,profile:{name:"react-component-duplicates"},compare:(d,m)=>k$(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 k$(e,t,n){let r=mt(e.tokens,t.tokens);if(r.size<6||!P$(r))return null;let i=kn(e.tokens,t.tokens);if(i<n)return null;let o=V(r,"component:"),s=V(r,"native:"),a=V(r,"prop:"),c=V(r,"event:"),l=V(r,"binding:"),u=T$({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(Pe(e.tokens,t.tokens)).slice(0,25),uniqueToB:Le(Pe(t.tokens,e.tokens)).slice(0,25),locA:e.profile.loc,locB:t.profile.loc}}function P$(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 Tn([{name:"component",count:t},{name:"shape",count:n}],[{min:{component:1},reason:"shared custom component"},{min:{shape:4},reason:"shared JSX structure"}]).pass}function T$(e){return Pn({genericWords:F$,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:_$})}function _$(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 F$=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 po(e,t={}){let{minSimilarity:n=.45,minSharedBehaviors:r=6,limit:i=20,scope:o,scanLimit:s,filePattern:a,focusFiles:c}=t,l=nt(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=Lt(l,d=>d.tokens);return Nt({profiles:l,limit:i,filePattern:a,focusFiles:c,candidateIndex:u,profile:{name:"react-hook-candidates"},compare:(d,m)=>L$(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 L$(e,t,n,r){let i=mt(e.tokens,t.tokens);if(i.size<r||!M$(i))return null;let o=Ma(e.tokens,t.tokens);if(o<n)return null;let s=V(i,"hook:"),a=V(i,"react-hook:"),c=V(i,"effect:"),l=V(i,"state:"),u=V(i,"request:"),d=V(i,"handler:"),m=V(i,"handler-verb:"),f=N$({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(Pe(e.tokens,t.tokens)).slice(0,25),uniqueToB:Le(Pe(t.tokens,e.tokens)).slice(0,25),reason:O$({sharedHooks:s,sharedReactHooks:a,sharedEffects:c,sharedState:l,sharedRequests:u,sharedHandlers:d,sharedHandlerVerbs:m}),locA:e.profile.loc,locB:t.profile.loc}}function N$(e){return Pn({genericWords:j$,stripPrefixes:B$,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:A$})}function A$(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 M$(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 Tn([{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 O$(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 j$=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"]),B$=[/^use(?=[A-Z])/,/^handle(?=[A-Z])/,/^is(?=[A-Z])/,/^has(?=[A-Z])/];function Pd(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 nt(e).reactProfiles({scope:a,scanLimit:c}).filter(d=>d.kind==="component").filter(d=>!l||d.file.includes(l)||d.name.includes(l)).map(d=>$$(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 $$(e,t){let n=Math.max(80,Math.floor(t.minComponentLines/2)),r=Oa(e,H$({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=U$(e),c=W$(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:G$(c,a),reasons:i,loc:e.loc}}function H$(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 U$(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=>V$.has(m))>=0,s=n.some(m=>z$.has(m));if(HC(r)||HC(e.name))return"component";let c=q$.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 HC(e){let t=e.split(/[^A-Za-z0-9]+/).filter(Boolean).map(n=>n.toLowerCase());return t.at(-1)&&UC.has(t.at(-1))?!0:[...UC].some(n=>e.endsWith(K$(n)))}function W$(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 G$(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 z$=new Set(["component","components","panel","panels","partial","partials"]),UC=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"]),V$=new Set(["landing","page","pages","route","routes","screen","screens","view","views"]),q$=new Set(["page","route","screen"]);function K$(e){return e.charAt(0).toUpperCase()+e.slice(1)}function go(e,t={}){let{minSimilarity:n=.62,minTokens:r=8,limit:i=20,scope:o,scanLimit:s,filePattern:a,focusFiles:c}=t,l=J$(e,{scope:o,minTokens:r,scanLimit:s}),u=Lt(l,d=>d.tokens);return Nt({profiles:l,limit:i,filePattern:a,focusFiles:c,candidateIndex:u,profile:{name:"vue-component-duplicates"},compare:(d,m)=>X$(d,m,n),sort:(d,m)=>m.similarity-d.similarity||d.fileA.localeCompare(m.fileA)||d.fileB.localeCompare(m.fileB)})}function J$(e,t){return nt(e).vueProfiles({scope:t.scope,minTemplateTokens:t.minTokens,scanLimit:t.scanLimit}).map(n=>({file:n.file,tokens:n.templateTokens,loc:Y$(n)}))}function Y$(e){return e.totalLines}function X$(e,t,n){let r=mt(e.tokens,t.tokens);if(r.size<6||!Q$(r))return null;let i=kn(e.tokens,t.tokens);if(i<n)return null;let o=V(r,"component:"),s=V(r,"prop:"),a=V(r,"event:"),c=V(r,"directive:"),l=V(r,"slot:"),u=V(r,"id:"),d=Z$({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(Pe(e.tokens,t.tokens)).slice(0,25),uniqueToB:Le(Pe(t.tokens,e.tokens)).slice(0,25),locA:e.loc,locB:t.loc}}function Q$(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 Tn([{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 Z$(e){return Pn({genericWords:t1,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:e1})}function e1(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 t1=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 ho(e,t={}){let{minSimilarity:n=.45,minSharedBehaviors:r=6,limit:i=20,scope:o,scanLimit:s,filePattern:a,focusFiles:c}=t,l=nt(e).vueProfiles({scope:o,minBehaviorTokens:Math.max(3,r),scanLimit:s}).map(d=>({file:d.file,tokens:d.behaviorTokens,profile:d})),u=Lt(l,d=>d.tokens);return Nt({profiles:l,limit:i,filePattern:a,focusFiles:c,candidateIndex:u,profile:{name:"vue-composable-candidates"},compare:(d,m)=>n1(d,m,n,r),sort:(d,m)=>m.similarity-d.similarity||d.fileA.localeCompare(m.fileA)||d.fileB.localeCompare(m.fileB)})}function n1(e,t,n,r){let i=mt(e.tokens,t.tokens);if(i.size<r||!o1(i))return null;let o=Ma(e.tokens,t.tokens);if(o<n)return null;let s=V(i,"composable:"),a=V(i,"store:"),c=V(i,"reactivity:"),l=V(i,"lifecycle:"),u=V(i,"request:"),d=V(i,"function:"),m=V(i,"function-verb:"),f=V(i,"template-binding:"),p=V(i,"template-event:"),g=r1({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(Pe(e.tokens,t.tokens)).slice(0,25),uniqueToB:Le(Pe(t.tokens,e.tokens)).slice(0,25),reason:s1({sharedComposables:s,sharedStores:a,sharedRequests:u,sharedLifecycle:l,sharedFunctions:d,sharedFunctionVerbs:m,sharedBindings:f}),locA:e.profile.totalLines,locB:t.profile.totalLines}}function r1(e){return Pn({genericWords:a1,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:i1})}function i1(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 o1(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 Tn([{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 s1(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 a1=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 Td(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 nt(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=Oa(e,l1(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=u1(e.file),a=d1(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:m1(a,s),reasons:r,loc:c}}function l1(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 u1(e){return e.toLowerCase().split(/[^a-z0-9]+/).filter(Boolean).some(r=>f1.has(r))||/(?:view|page|route)\.vue$/i.test(e)||/(?:^|\/)(views|pages|routes)\//i.test(e)?"route-page":"component"}function d1(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 m1(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 f1=new Set(["landing","page","pages","route","routes","view","views"]);function p1(e,t={}){let{minSimilarity:n=.5,limit:r=15,scope:i,minChainLength:o=3,maxChainLength:s=8}=t,a=ie(e,i),c=R1(a,o,s);if(c.length===0)return[];let l=g1(c);return l.length<2?[]:x1(b1(l,n,r),r)}function g1(e){let t=h1(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 h1(e){let{nodeFreq:t,tailFreq:n}=y1(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 y1(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 b1(e,t,n){let r=[];for(let i=0;i<e.length;i++){for(let o=i+1;o<e.length;o++){let s=S1(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 S1(e,t,n){if(!C1(e.filtered,t.filtered))return null;let{distance:r,ops:i}=v1(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:I1(e.original,t.original),commonSuffix:w1(e.original,t.original)}}function C1(e,t){let n=new Set(e);return t.some(r=>n.has(r))}function x1(e,t){let n=[];for(let r of e)if(n.some(o=>WC(r.chainA,o.chainA)&&WC(r.chainB,o.chainB))||n.push(r),n.length>=t)break;return n}function R1(e,t,n){let r=[];for(let o of e.keys()){if(r.length>=500)break;GC(e,o,[o],new Set([o]),t,n,r,500)}return r}function GC(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),GC(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 v1(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 I1(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 w1(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 WC(e,t){if(e.length>t.length)return!1;let n=t.join("\u2192"),r=e.join("\u2192");return n.includes(r)}function ft(e){let t=D1(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?w(`candidate-pipeline:${e.profile.name}`,n,()=>({...E1(e.profile?.metadata),...t})):n()}function D1(e){return{pipeline:e,loadedCandidates:0,filteredCandidates:0,scannedCandidates:0,evaluatedCandidates:0,matchedResults:0,emittedResults:0,scanLimitApplied:!1,resultLimitApplied:!1}}function E1(e){return typeof e=="function"?e():e??{}}function yo(e,t={}){let{scope:n,minLoc:r=10,minCallees:i=6,limit:o=20,scanLimit:s}=t,a=new _(e);return ft({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)=>k1(c,l.get(c.symbolId)??[],i),orderResults:(c,l)=>l.clusters.length-c.clusters.length||l.loc-c.loc,limit:o})}function k1(e,t,n){let r=new Set(t.map(l=>l.symbol));if(r.size<n)return null;let i=L1(r,t),o=N1(r,i);if(o.length<2)return null;let s=A1(o,i);if(s.length===0)return null;let a=I(e.symbol),c=P1(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 P1(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=T1(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 T1(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=_1(e);return F1.has(r)?`caller verb suggests orchestration: ${r}`:null}function _1(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 F1=new Set(["apply","build","check","collect","create","diff","execute","find","handle","load","prepare","process","render","resolve","run","select","sync","update","validate","verify","write"]);function L1(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 N1(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 A1(e,t){return e.filter(n=>n.size>=3).map(n=>M1(n,e,t)).filter(n=>n.isolation>.5).sort((n,r)=>r.isolation-n.isolation)}function M1(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 Xr}from"path";import{spawnSync as O1}from"child_process";import{createHash as j1}from"crypto";import{existsSync as B1}from"fs";import{dirname as zC,join as $1}from"path";import{fileURLToPath as H1}from"url";var KC=j("definition-consumer-file-usage",{clearGroups:["whole-project","source-file"]}),VC=oe({kind:"consumer-file-usage",invalidation:K("consumer-file-usage"),serialize:X1,deserialize:Q1});function rn(e,t){return{forDefinitions(n,r){return U1(e,t,n,r)}}}function on(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 Ba(e,t,n){return YC(e,t,n).partition}function U1(e,t,n,r){let i=JC(n.length),o=U()?Te(e):null,s=o?W1(n,r,o):void 0,a=s?{workIdentity:s,workOutcome:"computed"}:{};return w("consumer-evidence.product",()=>{let c=w("consumer-evidence.provenance",()=>G1(e,t,n,r),()=>({...a,definitions:n.length,semantic:r.semantic,sourceFallback:r.sourceFallback!==!1})),l=new Map;i={...i,...c.counters};let u=z1(n,c.sources);return w("consumer-evidence.classify",()=>{let d=V1(e,n,c.sources,u);for(let m of n){let f=d.get(m.symbolId)??K1();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 W1(e,t,n){let r=j1("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 JC(e){return{definitions:e,indexedFiles:0,semanticFiles:0,fallbackFiles:0,totalFiles:0,realFiles:0,reexportOnlyFiles:0,importOnlyFiles:0}}function G1(e,t,n,r){let i=JC(n.length),o=new Map;return _d(o,i,"indexed",t.crossFileCallerMap(n,{semantic:!1})),r.semantic&&_d(o,i,"semantic",In(e,n)),r.sourceFallback!==!1&&_d(o,i,"source-fallback",t.sourceFallbackCallerFiles(n)),i.totalFiles=[...o.values()].reduce((s,a)=>s+a.size,0),{sources:o,counters:i}}function z1(e,t){return{definitions:e.length,consumerFiles:[...t.values()].reduce((n,r)=>n+r.size,0),nativeAttempted:!1,nativeUsed:!1,nativeReason:"not-attempted"}}function _d(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 V1(e,t,n,r){let i=oH(e,t,n,r);return i||q1(e,t,n)}function q1(e,t,n){let r=new Map;for(let i of t){let o=n.get(i.symbolId)??new Map;r.set(i.symbolId,YC(e,i,[...o.keys()],o))}return r}function YC(e,t,n,r=new Map){let i=[],o=0,s=0,a=T(t.symbol),c=[];for(let l of n){let u;Z1(e,l,t.relativePath,a)?(o++,u="reexport-only"):Fd(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 K1(){return{partition:{realConsumers:[],barrelConsumers:0,importOnlyConsumers:0},files:[]}}function Fd(e,t,n){if(!n)return!1;let r=M(t);if(!r)return!1;let i=KC.get(e,t,()=>XC(e,t,r));return i.importedLeaves.has(n)&&!i.usedLeaves.has(n)}function XC(e,t,n){let r=at(e).forFile(t,{text:!0,ast:!0}),i=r.text;if(!i)return Y1();let o=ce(e,t,i),s=VC.read(e,t,o);if(s)return s;let a=J1(r.ast,n);return VC.write(e,t,o,a),a}function J1(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 Y1(){return{importedLeaves:new Set,usedLeaves:new Set}}function X1(e){return JSON.stringify({importedLeaves:[...e.importedLeaves],usedLeaves:[...e.usedLeaves]})}function Q1(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 Z1(e,t,n,r){if(!r)return!1;let i=at(e).forFile(t,{lines:!0,reexports:!0}),o=i.lines??[];if(o.length===0)return!1;let s=i.reexports??[];return QC(o,s,r)}function QC(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 eH="SCIP_QUERY_NATIVE_CONSUMER_CLASSIFY",tH="SCIP_QUERY_NATIVE_KERNELS_BIN",nH="SCIP_QUERY_NATIVE_CONSUMER_CLASSIFY_MIN_FILES",qC=1e3,rH=5e3,iH=64*1024*1024,ja;function oH(e,t,n,r){let i=process.env[eH]?.toLowerCase();if(i!=="1"&&i!=="true")return r.nativeReason=i==="0"||i==="false"?"disabled":"opt-in-required",null;if(r.consumerFiles<mH())return r.nativeReason="below-threshold",null;let o=fH();if(!o)return r.nativeReason="binary-missing",null;r.nativeAttempted=!0;let s=sH(e,t,n),a=O1(o,["consumer-classify"],{input:JSON.stringify(s),encoding:"utf8",timeout:rH,maxBuffer:iH});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 sH(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=KC.get(e,a,()=>XC(e,a,l));o[a]={imported_leaves:[...d.importedLeaves],used_leaves:[...d.usedLeaves]}}let u=aH(e,a,c);u.length>0&&(s[a]=u)}return{definitions:i,file_usages:o,reexport_only_leaves:s}}function aH(e,t,n){if(n.size===0)return[];let r=at(e).forFile(t,{lines:!0,reexports:!0}),i=r.lines??[],o=r.reexports??[];return i.length===0||o.length===0?[]:[...n].filter(s=>QC(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=lH(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 lH(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(uH)||!dH(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 uH(e){return e==="indexed"||e==="semantic"||e==="source-fallback"}function dH(e){return e==="real"||e==="reexport-only"||e==="import-only"}function mH(){let e=process.env[nH];if(!e)return qC;let t=Number(e);return Number.isFinite(t)&&t>=0?t:qC}function fH(){if(ja!==void 0)return ja;let e=process.env[tH],t=process.platform==="win32"?"scip-query-kernels.exe":"scip-query-kernels";return ja=[...e?[e]:[],...pH().map(r=>$1(r,"target","release",t))].find(r=>B1(r))??null,ja}function pH(){let e=new Set,t=zC(H1(import.meta.url));for(let n=0;n<5;n++)e.add(t),t=zC(t);return[...e]}var gH=20,hH=1,yH=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"]]),bH=new Set(["components","contracts","hooks","lib","services","shared","stores","utils"]),SH=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 CH(e,t={}){let n=Ad(t.limit,gH),r=Ad(t.minConsumers,hH),i=new _(e),o=i.fileDependencyGraph(t.scope),s=$H(N(e,{includeIgnored:!1})),a=WH(e.config.locality?.architecturalBoundarySegments,t.architecturalBoundarySegments);return(t.target?xH(e,i,t.target):RH(e,t.scope,t.scanLimit)).map(u=>vH(e,i,o,u,t,s,a)).filter(u=>u.consumerFiles.length>=r||t.target).sort(BH).slice(0,n)}function xH(e,t,n){let r=DH(e,n);if(r)return[rx(r)];let i=B(e,n);if(!i)return[];let o=t.definitionsForFile(i.relativePath).find(s=>s.symbolId===i.symbolId);return o?[EH(o)]:[{unit:{kind:"symbol",file:i.relativePath,shortName:I(i.symbol),symbol:i.symbol,startLine:i.startLine,endLine:i.endLine}}]}function RH(e,t,n){let r=N(e,{scope:t,includeIgnored:!1}),i=Ad(n,r.length);return r.slice(0,i).map(o=>rx(o))}function vH(e,t,n,r,i,o,s){let a=r.definition?IH(e,t,r.definition,i.semantic):wH(n,r.unit.file),c=r.definition?a.length>0?"exact":"none":a.length>0?"file-level":"none",l=r.unit.file,u=xt(Xr.dirname(l)),d=PH(a),m=kH(u),f=Od([...ZC(u),...d?ZC(d):[]]),p=TH(r.unit,u,d,a),g=_H(p,r.unit,u,d,a,o,s),y=MH(r.unit,c,d,a,u,g.whyNoSuggestedHome),h=OH(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:jH(p,g.suggestedHome,c)}}function IH(e,t,n,r){let i=on(rn(e,t).forDefinitions([n],{semantic:r!==!1,sourceFallback:!0}));return cx(i.get(n.symbolId)??[])}function wH(e,t){let n=[];for(let[r,i]of e.entries())r!==t&&i.has(t)&&n.push(r);return cx(n)}function DH(e,t){let n=gn(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 EH(e){return{definition:e,unit:{kind:"symbol",file:e.relativePath,shortName:I(e.symbol),symbol:e.symbol,startLine:e.startLine,endLine:e.endLine}}}function rx(e){return{unit:{kind:"file",file:e,shortName:Xr.basename(e)}}}function kH(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:Md(i)})}return t}function ZC(e){return e==="."?[]:ix(e).map(({marker:t,prefix:n})=>`${t}: ${n}`)}function Md(e){return Od(ix(e).map(({marker:t})=>t))}function ix(e){let t=e.split("/").filter(Boolean),n=[];for(let r=0;r<t.length;r+=1){let i=yH.get(t[r]);i&&n.push({marker:i,prefix:t.slice(0,r+1).join("/")})}return n}function PH(e){if(e.length===0)return null;let t=e.map(r=>xt(Xr.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 TH(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":tx(n,"package")?"package-level-shared":tx(n,"app")?"app-level-shared":nx(n,["feature","domain","module"])||nx(t,["feature","domain","module"])?"feature-local-shared":"sibling-folder":"no-exact-consumers"}function _H(e,t,n,r,i,o,s){let a=FH(e,r);if(a)return _n(a);let c=HH(t.file),l=LH(e,n,c,i,s);if(l)return l;let u=r;if(xt(n)===xt(u))return _n(`${n} is already the nearest common owner for its consumers.`);let d=NH(u,n,c,s);return d||AH(u,n,c,o,s)}function FH(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 LH(e,t,n,r,i){if(e==="same-file"){let o=r[0]??null;return o?Ld(o):_n("No same-file consumer path was available.")}if(e==="sibling-folder"&&r.length===1){let o=xt(Xr.dirname(r[0])),s=ax(t,n,o,i);return s?_n(s):Ld(o)}return null}function NH(e,t,n,r){return zH(e)?ox(e,t,n,r,`Nearest shared owner ${e} is outside source root ${n}.`):null}function AH(e,t,n,r,i){if(e===".")return _n("The nearest common owner is the repository root.");let o=`${e}/shared`,s=ox(o,t,n,i,`Proposed home ${o} is outside source root ${n}.`);return s.confidence==="withheld"||r.has(o)?s:_n(`${o} does not exist in the indexed project.`)}function ox(e,t,n,r,i){if(!sx(e,n))return _n(i);let o=ax(t,n,e,r);return o?_n(o):Ld(e)}function Ld(e){return{suggestedHome:e,confidence:"exact",whyNoSuggestedHome:null}}function _n(e){return{suggestedHome:null,confidence:"withheld",whyNoSuggestedHome:e}}function MH(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 OH(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 jH(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 BH(e,t){return ex(t)-ex(e)||e.candidatePath.localeCompare(t.candidatePath)}function ex(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 $H(e){let t=new Set(["."]);for(let n of e){let r=xt(Xr.dirname(n));for(;!t.has(r)&&(t.add(r),r!==".");)r=xt(Xr.dirname(r))}return t}function HH(e){let t=Nd(e),n=t.indexOf("src");return n>=0?t.slice(0,n+1).join("/"):t.length<=1?".":t[0]}function sx(e,t){let n=xt(e),r=xt(t);return r==="."||n===r||n.startsWith(`${r}/`)}function UH(e,t,n){let r=Nd(e),i=Nd(t);return(sx(e,t)?r.slice(i.length):r).some(s=>n.has(s.toLowerCase()))}function ax(e,t,n,r){return xt(e)===xt(n)||!UH(e,t,r)?null:`${e} is a named architectural boundary; an exact move to ${n} needs human design.`}function WH(...e){let t=new Set(SH);for(let n of e)for(let r of n??[]){let i=GH(r);i&&t.add(i)}return t}function GH(e){let t=e.trim().toLowerCase();return t===""?null:t}function tx(e,t){return Md(e).includes(t)}function nx(e,t){let n=Md(e);return t.some(r=>n.includes(r))}function zH(e){let t=e.split("/").filter(Boolean),n=t[t.length-1];return n?bH.has(n):!1}function xt(e){let t=gn(e);return t===""?".":t}function Nd(e){let t=gn(e);return t==="."?[]:t.split("/").filter(Boolean)}function Ad(e,t){return!Number.isFinite(e)||e===void 0||e<1?t:Math.floor(e)}function cx(e){return Od([...e]).sort((t,n)=>t.localeCompare(n))}function Od(e){return[...new Set(e)]}function jd(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=MS(e,l,{limit:500,semanticEvidence:H});for(let f of l)for(let p of VH(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 VH(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 qH(e,t,n)){if(o.has(u))continue;let d=Q(e,u),m=d.length>0?wt(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=wi(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)||!KH(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 qH(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
719
  FROM mentions m
720
720
  JOIN chunks c ON m.chunk_id = c.id
721
721
  JOIN documents consumer_d ON consumer_d.id = c.document_id
@@ -723,48 +723,48 @@ Thumbs.db
723
723
  AND m.role != 1
724
724
  AND c.document_id != ?
725
725
  ${e.pathExclusionsFor("consumer_d")}
726
- ${r}`,...i).map(o=>o.relative_path).filter(o=>!e.isIgnored(o)))}function qH(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 jd(e,t,n={}){let r=Oe(e,t);if(!r)return null;let i=KH(e,r);if(!i||e.isIgnored(i.relative_path))return null;let o=[],s=0,a=JH(e,i.relative_path),c=n.semantic===!1?new Map:In(e,a);for(let l of a){let u=YH(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:XH(u)})}return{file:i.relative_path,symbols:o,totalExternalConsumers:s}}function KH(e,t){return e.get(`SELECT id, relative_path FROM documents
726
+ ${r}`,...i).map(o=>o.relative_path).filter(o=>!e.isIgnored(o)))}function KH(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 Bd(e,t,n={}){let r=Oe(e,t);if(!r)return null;let i=JH(e,r);if(!i||e.isIgnored(i.relative_path))return null;let o=[],s=0,a=YH(e,i.relative_path),c=n.semantic===!1?new Map:In(e,a);for(let l of a){let u=XH(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:QH(u)})}return{file:i.relative_path,symbols:o,totalExternalConsumers:s}}function JH(e,t){return e.get(`SELECT id, relative_path FROM documents
727
727
  WHERE relative_path = ?
728
728
  ${e.pathExclusionsFor("documents")}
729
- LIMIT 1`,t)??null}function JH(e,t){return new _(e).definitionsForFile(t).sort((n,r)=>n.startLine-r.startLine||n.endLine-r.endLine)}function YH(e,t,n,r){let i=e.all(`SELECT DISTINCT consumer_d.relative_path
729
+ LIMIT 1`,t)??null}function YH(e,t){return new _(e).definitionsForFile(t).sort((n,r)=>n.startLine-r.startLine||n.endLine-r.endLine)}function XH(e,t,n,r){let i=e.all(`SELECT DISTINCT consumer_d.relative_path
730
730
  FROM mentions m
731
731
  JOIN chunks c ON m.chunk_id = c.id
732
732
  JOIN documents consumer_d ON consumer_d.id = c.document_id
733
733
  WHERE m.symbol_id = ?
734
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 XH(e){return e>10?"high":e>0?"medium":"low"}function QH(e,t={}){let{scope:n,minLoc:r=1,maxDepth:i=5,scanLimit:o}=t,s=new _(e),a=ZH(e,n,r,o),c=new Bd;for(let g of a)c.add(g);let l=[],u=[];a.length>0&&l.push(cx(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 x of d)for(let S of y.get(x.symbolId)??[])m.has(S.symbol)||h.add(S.symbol);let C=[];for(let x of h){m.add(x);let S=lx(e,x);if(!S||e.isIgnored(S.relativePath)||Ee(e,S.relativePath)||de(e,S.symbol,S.relativePath)||s.fileKind(S.relativePath)==="test"||s.hasSuppressionComment(S))continue;let b=tU(e,S,c);b.removable?C.push(eU(S,"cascade")):b.blockingFiles.length>0&&u.push({shortName:I(S.symbol),file:S.relativePath,blockingFiles:b.blockingFiles.slice(0,3)})}if(C.length===0)break;for(let x of C)c.add(x);l.push(cx(e,g,C,c)),d=C.map(x=>x.definition).filter(x=>x!==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 ZH(e,t,n,r){let i=sr(e,{scope:t,minLoc:n,skipBarrels:!0,deadCodeOnly:!0,scanLimit:r,semantic:!1}),o=[];for(let s of i.symbols)s.kind==="dead-code"&&(Ee(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:lx(e,s.symbol)}));return o}function eU(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 lx(e,t){let n=e.get(`SELECT d.relative_path
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 QH(e){return e>10?"high":e>0?"medium":"low"}function ZH(e,t={}){let{scope:n,minLoc:r=1,maxDepth:i=5,scanLimit:o}=t,s=new _(e),a=eU(e,n,r,o),c=new $d;for(let g of a)c.add(g);let l=[],u=[];a.length>0&&l.push(lx(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 x of d)for(let S of y.get(x.symbolId)??[])m.has(S.symbol)||h.add(S.symbol);let C=[];for(let x of h){m.add(x);let S=ux(e,x);if(!S||e.isIgnored(S.relativePath)||Ee(e,S.relativePath)||de(e,S.symbol,S.relativePath)||s.fileKind(S.relativePath)==="test"||s.hasSuppressionComment(S))continue;let b=nU(e,S,c);b.removable?C.push(tU(S,"cascade")):b.blockingFiles.length>0&&u.push({shortName:I(S.symbol),file:S.relativePath,blockingFiles:b.blockingFiles.slice(0,3)})}if(C.length===0)break;for(let x of C)c.add(x);l.push(lx(e,g,C,c)),d=C.map(x=>x.definition).filter(x=>x!==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 eU(e,t,n,r){let i=sr(e,{scope:t,minLoc:n,skipBarrels:!0,deadCodeOnly:!0,scanLimit:r,semantic:!1}),o=[];for(let s of i.symbols)s.kind==="dead-code"&&(Ee(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:ux(e,s.symbol)}));return o}function tU(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 ux(e,t){let n=e.get(`SELECT d.relative_path
736
736
  FROM global_symbols gs
737
737
  JOIN defn_enclosing_ranges der ON der.symbol_id = gs.id
738
738
  JOIN documents d ON d.id = der.document_id
739
739
  WHERE gs.symbol = ?
740
- LIMIT 1`,t);return n?Q(e,n.relative_path).find(r=>r.symbol===t)??null:null}function tU(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 cx(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=Q(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 Bd=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 NV}from"crypto";import{existsSync as nc}from"fs";import{execFileSync as nU}from"child_process";var px=2e3,Ba=50,rU=64,iU=8,oU=3,sU=2160*60*60,aU=/\b(?:fix(?:es|ed)?|bug|regression|hotfix)\b/i,cU=3,lU=/#\d+|\b[A-Z][A-Z0-9]+-\d+\b/g,uU=/^([a-z][a-z0-9-]+)(?:\([^)]+\))?!?:/i;function dU(e){let t=J(e,{clearGroups:["whole-project"]});return(n,r,i)=>{let o=i??$d(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 $a(e){let t=J(e,{clearGroups:["whole-project"]});return(n,r,i,o)=>{let s=o??$d(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 mU=$a("git-commit-history");function ze(e,t={}){let n=t.historyMode??"bounded",r=t.head;return{capability:i=>fU(e,i,r),commitHistory:()=>bo(e,n,r),fileChurn:()=>hU(e,n,r),changeAmplification:()=>yU(e,n,r),trackedFiles:()=>SU(e,r),fileAddRecords:()=>xU(e,n,r),coChangePairs:(i={})=>kU(e,i,n,r),coChangePairsForFiles:(i,o={})=>hx(e,i,o,n,r),directionalCoChangePairsForFiles:(i,o={})=>PU(e,i,o,n,r)}}function bo(e,t="bounded",n){return mU(e,Qr(t),(r,i)=>pU(r,i,t),n)}function fU(e,t,n){let r=n??$d(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 $d(e){try{return At(e,["rev-parse","HEAD"]).trim()||null}catch{return null}}function At(e,t){return nU("git",["-C",e,...t],{encoding:"utf-8",maxBuffer:64*1024*1024,stdio:["ignore","pipe","ignore"]})}function pU(e,t,n){let r;try{r=At(e,["log","--no-merges","--name-only",...Ha(n),"--pretty=format:%x01%H%x00%ct%x00%s"])}catch{return null}return{head:t,...Gd(r,Ba)}}function gU(e){return aU.test(e.subject)}function hU(e,t,n){let r=bo(e,t,n);if(!r)return null;let i=new Map;for(let o of r.commits){let s=gU(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 yU(e,t,n){let r=bo(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:ux(i,.5),p90FilesPerCommit:ux(i,.9),commitsAnalyzed:i.length}}function ux(e,t){let n=Math.min(e.length-1,Math.floor(e.length*t));return e[n]}var bU=dU("git-tracked-files");function SU(e,t){return bU(e,n=>{try{let r=At(n,["ls-files"]);return new Set(r.split(`
741
- `).map(i=>i.trim()).filter(i=>i!==""))}catch{return null}},t)}var CU=$a("git-file-adds"),dx="__git__/file-adds",mx=oe({kind:"git-file-adds",invalidation:K("git-file-adds"),serialize:vU,deserialize:IU});function Hd(e){return ze(e).fileAddRecords()}function xU(e,t,n){let r=Qr(t);return CU(e,r,(i,o)=>RU(e,i,o,t),n)}function RU(e,t,n,r){let i=mx.read(e,fx(r),n);if(i)return i;let o=wU(t,r);return o&&mx.write(e,fx(r),n,o),o}function vU(e){return JSON.stringify([...e.entries()])}function IU(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 wU(e,t){let n;try{n=At(e,["log","--no-merges","--find-renames","--name-status",...Ha(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(`
740
+ LIMIT 1`,t);return n?Q(e,n.relative_path).find(r=>r.symbol===t)??null:null}function nU(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 lx(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=Q(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 $d=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 AV}from"crypto";import{existsSync as rc}from"fs";import{execFileSync as rU}from"child_process";var gx=2e3,$a=50,iU=64,oU=8,sU=3,aU=2160*60*60,cU=/\b(?:fix(?:es|ed)?|bug|regression|hotfix)\b/i,lU=3,uU=/#\d+|\b[A-Z][A-Z0-9]+-\d+\b/g,dU=/^([a-z][a-z0-9-]+)(?:\([^)]+\))?!?:/i;function mU(e){let t=J(e,{clearGroups:["whole-project"]});return(n,r,i)=>{let o=i??Hd(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 Ha(e){let t=J(e,{clearGroups:["whole-project"]});return(n,r,i,o)=>{let s=o??Hd(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 fU=Ha("git-commit-history");function ze(e,t={}){let n=t.historyMode??"bounded",r=t.head;return{capability:i=>pU(e,i,r),commitHistory:()=>bo(e,n,r),fileChurn:()=>yU(e,n,r),changeAmplification:()=>bU(e,n,r),trackedFiles:()=>CU(e,r),fileAddRecords:()=>RU(e,n,r),coChangePairs:(i={})=>PU(e,i,n,r),coChangePairsForFiles:(i,o={})=>yx(e,i,o,n,r),directionalCoChangePairsForFiles:(i,o={})=>TU(e,i,o,n,r)}}function bo(e,t="bounded",n){return fU(e,Qr(t),(r,i)=>gU(r,i,t),n)}function pU(e,t,n){let r=n??Hd(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 Hd(e){try{return At(e,["rev-parse","HEAD"]).trim()||null}catch{return null}}function At(e,t){return rU("git",["-C",e,...t],{encoding:"utf-8",maxBuffer:64*1024*1024,stdio:["ignore","pipe","ignore"]})}function gU(e,t,n){let r;try{r=At(e,["log","--no-merges","--name-only",...Ua(n),"--pretty=format:%x01%H%x00%ct%x00%s"])}catch{return null}return{head:t,...zd(r,$a)}}function hU(e){return cU.test(e.subject)}function yU(e,t,n){let r=bo(e,t,n);if(!r)return null;let i=new Map;for(let o of r.commits){let s=hU(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 bU(e,t,n){let r=bo(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:dx(i,.5),p90FilesPerCommit:dx(i,.9),commitsAnalyzed:i.length}}function dx(e,t){let n=Math.min(e.length-1,Math.floor(e.length*t));return e[n]}var SU=mU("git-tracked-files");function CU(e,t){return SU(e,n=>{try{let r=At(n,["ls-files"]);return new Set(r.split(`
741
+ `).map(i=>i.trim()).filter(i=>i!==""))}catch{return null}},t)}var xU=Ha("git-file-adds"),mx="__git__/file-adds",fx=oe({kind:"git-file-adds",invalidation:K("git-file-adds"),serialize:IU,deserialize:wU});function Ud(e){return ze(e).fileAddRecords()}function RU(e,t,n){let r=Qr(t);return xU(e,r,(i,o)=>vU(e,i,o,t),n)}function vU(e,t,n,r){let i=fx.read(e,px(r),n);if(i)return i;let o=DU(t,r);return o&&fx.write(e,px(r),n,o),o}function IU(e){return JSON.stringify([...e.entries()])}function wU(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 DU(e,t){let n;try{n=At(e,["log","--no-merges","--find-renames","--name-status",...Ua(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
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=DU(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 DU(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 gx=$a("git-co-change-pairs"),EU=$a("git-directional-co-change-pairs");function kU(e,t,n,r){let i=`all\0${Qr(n)}\0${Ud(t)}`,o=gx(e,i,()=>{let s=bo(e,n,r);return s?Wd(s,t):null},r);return o&&[...o]}function hx(e,t,n,r,i){if(t.size===0)return[];let o=`files\0${Qr(r)}\0${yx(t)}\0${Ud(n)}`,s=gx(e,o,()=>{let a=bo(e,r,i);return a?Wd(a,n,t):null},i);return s&&[...s]}function PU(e,t,n,r,i){if(t.size===0)return[];let o=n.maxFilesPerCommit??Ba;if(t.size>rU)return hx(e,t,n,r,i);let s=`directional\0${Qr(r)}\0${yx(t)}\0${Ud({...n,maxFilesPerCommit:o})}`,a=EU(e,s,(c,l)=>{let u=TU(c,l,t,o,r);return u?Wd(u,n,t):null},i);return a&&[...a]}function Ud(e){let t=e.minTogether??4,n=e.minConfidence??.6,r=e.maxFilesPerCommit??Ba;return`${t}\0${n}\0${r}`}function yx(e){return[...e].sort().join("\0")}function Wd(e,t,n){let{minTogether:r=4,minConfidence:i=.6,maxFilesPerCommit:o=Ba}=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=LU(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]}`,C=a.get(h)??{together:0,focusedTogether:0,broadTogether:0,lastTogetherAt:0,timestamps:[],subjects:[]};C.together+=1,f?C.broadTogether+=1:C.focusedTogether+=1,d.timestamp>C.lastTogetherAt&&(C.lastTogetherAt=d.timestamp),C.timestamps.push(d.timestamp),C.subjects.push(d.subject),a.set(h,C)}}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,C=Math.max(f/y,f/h);if(C<i)continue;let x=m.broadTogether/f,S=m.timestamps.filter(b=>b>=u).length;l.push({fileA:p,fileB:g,together:f,confidence:C,changesA:y,changesB:h,focusedTogether:m.focusedTogether,broadTogether:m.broadTogether,broadCommitRatio:x,lastTogetherAt:m.lastTogetherAt,recentTogether:S,commitScope:AU(m.broadTogether,f),recency:S>0?"recent":"stale",subjectContext:MU(m.subjects)})}return l.sort((d,m)=>m.together-d.together||m.confidence-d.confidence||d.fileA.localeCompare(m.fileA)),l}function TU(e,t,n,r,i){let o;try{o=_U(e,i)}catch{return null}if(o.length===0)return{head:t,commits:[],skippedBulkCommits:0,newestAnalyzedAt:0};let s;try{s=At(e,["log","--no-merges","--format=%H",...Ha(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=FU(e,o,r);if(c.length===0)return{head:t,commits:[],skippedBulkCommits:0,newestAnalyzedAt:l};let u;try{u=At(e,["show","--no-walk=unsorted","--name-only","--pretty=format:%x01%H%x00%ct%x00%s",...c])}catch{return null}let d=Gd(u,r);return{head:t,...d,newestAnalyzedAt:l}}function _U(e,t){return At(e,["log","--no-merges","--format=%H%x00%ct",...Ha(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 Ha(e){return e==="full"?[]:["-n",String(bx())]}function bx(){return xn(process.env.SCIP_QUERY_GIT_HISTORY_MAX_COMMITS)??px}function Qr(e){return e==="full"?"full":`bounded:${bx()}`}function fx(e){let t=Qr(e);return t===`bounded:${px}`?dx:`${dx}:${t}`}function FU(e,t,n){for(let i=0;i<t.length;i+=20){let o=t.slice(i,i+20),s;try{s=At(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=Gd(s,n);if(a.commits.length>0)return a.commits[0].timestamp}return 0}function Gd(e,t){let n=[],r=0;for(let i of e.split("")){if(i.trim()==="")continue;let o=i.indexOf(`
743
+ `)){let m=EU(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 EU(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 hx=Ha("git-co-change-pairs"),kU=Ha("git-directional-co-change-pairs");function PU(e,t,n,r){let i=`all\0${Qr(n)}\0${Wd(t)}`,o=hx(e,i,()=>{let s=bo(e,n,r);return s?Gd(s,t):null},r);return o&&[...o]}function yx(e,t,n,r,i){if(t.size===0)return[];let o=`files\0${Qr(r)}\0${bx(t)}\0${Wd(n)}`,s=hx(e,o,()=>{let a=bo(e,r,i);return a?Gd(a,n,t):null},i);return s&&[...s]}function TU(e,t,n,r,i){if(t.size===0)return[];let o=n.maxFilesPerCommit??$a;if(t.size>iU)return yx(e,t,n,r,i);let s=`directional\0${Qr(r)}\0${bx(t)}\0${Wd({...n,maxFilesPerCommit:o})}`,a=kU(e,s,(c,l)=>{let u=_U(c,l,t,o,r);return u?Gd(u,n,t):null},i);return a&&[...a]}function Wd(e){let t=e.minTogether??4,n=e.minConfidence??.6,r=e.maxFilesPerCommit??$a;return`${t}\0${n}\0${r}`}function bx(e){return[...e].sort().join("\0")}function Gd(e,t,n){let{minTogether:r=4,minConfidence:i=.6,maxFilesPerCommit:o=$a}=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=NU(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]}`,C=a.get(h)??{together:0,focusedTogether:0,broadTogether:0,lastTogetherAt:0,timestamps:[],subjects:[]};C.together+=1,f?C.broadTogether+=1:C.focusedTogether+=1,d.timestamp>C.lastTogetherAt&&(C.lastTogetherAt=d.timestamp),C.timestamps.push(d.timestamp),C.subjects.push(d.subject),a.set(h,C)}}let l=[],u=c-aU;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,C=Math.max(f/y,f/h);if(C<i)continue;let x=m.broadTogether/f,S=m.timestamps.filter(b=>b>=u).length;l.push({fileA:p,fileB:g,together:f,confidence:C,changesA:y,changesB:h,focusedTogether:m.focusedTogether,broadTogether:m.broadTogether,broadCommitRatio:x,lastTogetherAt:m.lastTogetherAt,recentTogether:S,commitScope:MU(m.broadTogether,f),recency:S>0?"recent":"stale",subjectContext:OU(m.subjects)})}return l.sort((d,m)=>m.together-d.together||m.confidence-d.confidence||d.fileA.localeCompare(m.fileA)),l}function _U(e,t,n,r,i){let o;try{o=FU(e,i)}catch{return null}if(o.length===0)return{head:t,commits:[],skippedBulkCommits:0,newestAnalyzedAt:0};let s;try{s=At(e,["log","--no-merges","--format=%H",...Ua(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=LU(e,o,r);if(c.length===0)return{head:t,commits:[],skippedBulkCommits:0,newestAnalyzedAt:l};let u;try{u=At(e,["show","--no-walk=unsorted","--name-only","--pretty=format:%x01%H%x00%ct%x00%s",...c])}catch{return null}let d=zd(u,r);return{head:t,...d,newestAnalyzedAt:l}}function FU(e,t){return At(e,["log","--no-merges","--format=%H%x00%ct",...Ua(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 Ua(e){return e==="full"?[]:["-n",String(Sx())]}function Sx(){return xn(process.env.SCIP_QUERY_GIT_HISTORY_MAX_COMMITS)??gx}function Qr(e){return e==="full"?"full":`bounded:${Sx()}`}function px(e){let t=Qr(e);return t===`bounded:${gx}`?mx:`${mx}:${t}`}function LU(e,t,n){for(let i=0;i<t.length;i+=20){let o=t.slice(i,i+20),s;try{s=At(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=zd(s,n);if(a.commits.length>0)return a.commits[0].timestamp}return 0}function zd(e,t){let n=[],r=0;for(let i of e.split("")){if(i.trim()==="")continue;let o=i.indexOf(`
746
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 LU(e){return e.length>=iU?!0:NU(e).size>=oU}function NU(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 AU(e,t){return e===0?"focused":e/t>=.5?"broad-sweep":"mixed"}function MU(e){let t=new Set,n=[],r=[];for(let i of e){!r.includes(i)&&r.length<cU&&r.push(i);for(let o of OU(i))t.add(o);for(let o of i.match(lU)??[])n.includes(o)||n.push(o)}return{subjectLabels:[...t].sort(),issueRefs:n,sampleSubjects:r,externalIssueLabelStatus:"unavailable"}}function OU(e){let t=new Set,n=uU.exec(e)?.[1]?.toLowerCase();return n&&t.add(jU(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 jU(e){return e==="feat"?"feature":e}import{existsSync as BU}from"fs";import{join as $U}from"path";function Vd(e){return zd.test(e)}var zd=/(?:^|\/)(?: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 So(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=vx(e),p=Jd(e,m,f),g=n.includeLinked===!0||l,y=[];for(let h of d){if(zd.test(h.fileA)||zd.test(h.fileB)||!Sx(e,h.fileA)||!Sx(e,h.fileB)||l&&!h.fileA.includes(t)&&!h.fileB.includes(t)||!l&&(Y(h.fileA)==="test"||Y(h.fileB)==="test"||GU(h.fileA,h.fileB)||UU(h.fileA,h.fileB)))continue;let C=p(h.fileA,h.fileB);if(!g&&C)continue;let x=qd(h.fileA,h.fileB),S=Kd(h,x,C);if(y.push({...h,structurallyLinked:C,partnerClass:x.partnerClass,partnerClassReasons:x.reasons,...S?{declaredCouplingSuggestion:S}:{}}),y.length>=o)break}return{available:!0,commitsAnalyzed:c.commits.length,findings:y}}function Sx(e,t){return BU($U(e.config.projectRoot,t))}function qd(e,t){let n=xx(e),r=xx(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=tW(n.tokens,r.tokens).filter(c=>!ZU.has(c));return Rx(e,t)||a.length>=2?(o(Rx(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 Kd(e,t,n){if(n||e.together<4||e.confidence<.75||e.commitScope==="broad-sweep"||e.recency==="stale"||!QU.has(t.partnerClass))return;let r=[e.fileA,e.fileB].sort();return{name:`co-change ${t.partnerClass}: ${nW(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 Jd(e,t=ie(e),n=vx(e)){return(r,i)=>zU(t,n,r,i)}var HU=/(?:^|\/)(?:locales|i18n)\//i;function Cx(e){return HU.test(e)}function UU(e,t){return Cx(e)&&Cx(t)?!0:WU(e,t)}function WU(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 GU(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 vx(e){return(e.config.declaredCouplings??[]).filter(t=>Array.isArray(t.files)&&t.files.length>=2).map(t=>new Set(t.files))}function zU(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 VU=/(?:^|\/)(?:readme|docs?|guides?|adr|architecture|design)(?:\/|$)|\.(?:md|mdx|rst|adoc|txt)$/i,qU=/(?:^|\/)(?:\.[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,KU=/(?:^|\/)(?:schemas?|contracts?|migrations?|models?|types?)(?:\/|$)|(?:^|\/)[^/]*(?:schema|contract|migration|model|types?)[^/]*|(?:\.schema)?\.(?:graphql|gql|proto|prisma)$/i,JU=/(?:^|\/)(?:scripts?|bin|tools?|tasks?|generators?|codegen|migrations?|seeds?)(?:\/|$)|(?:^|\/)[^/]*(?:generate|codegen|migrate|seed|script)[^/]*\.[cm]?[jt]s$/i,YU=/(?:^|\/)(?:models?|entities|domain|state|stores?|reducers?)(?:\/|$)|(?:^|\/)[^/]*(?:model|entity|state|store|reducer|viewmodel)[^/]*\.[^.]+$/i,XU=/(?:^|\/)(?:views?|pages?|components?|screens?|routes?|templates?)(?:\/|$)|(?:^|\/)[^/]*(?:view|page|component|screen|template)[^/]*\.[^.]+$|\.(?:vue|svelte|tsx|jsx)$/i,QU=new Set(["doc-code","config-code","schema-script","model-view","test-code"]),ZU=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 xx(e){let t=e.replace(/\\/g,"/"),n=new Set;return VU.test(t)&&n.add("doc"),qU.test(t)&&n.add("config"),KU.test(t)&&n.add("schema"),JU.test(t)&&n.add("script"),YU.test(t)&&n.add("model"),XU.test(t)&&n.add("view"),Y(t)==="test"&&n.add("test"),!n.has("doc")&&!n.has("config")&&n.add("code"),{tags:n,tokens:eW(t)}}function Rx(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 eW(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 tW(e,t){let n=new Set(t);return[...new Set(e.filter(r=>n.has(r)))].sort()}function nW(e){return e.map(t=>t.split("/").pop()?.replace(/\.[^.]+$/,"")||t).join(" + ")}import{execFileSync as lr}from"child_process";import{existsSync as rW,readFileSync as iW}from"fs";import{basename as Ix}from"path";function Ua(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 Co="Unable to compute git diff.";function Zr(e,t={}){let n=t.plan??Fn(e,t);return n.note?oW(n.note,n.changedFileLines):n.changedFiles.length===0?sW(n.changedFileLines):Wa(n.changedFiles,[kx(e,n.changedFiles,n.changedFiles,n.changedRanges)])}function Fn(e,t={}){let{base:n="HEAD"}=t;try{let r=aW(e.config.projectRoot,n),i=r.changedFileLines,o=fW(e,i),s=pW(e,r.changedRanges);return{changedFileLines:i,changedFiles:o,changedRanges:s,renamedFiles:uW(e.config.projectRoot,n,o,r),note:i.length===0?"No changed files found.":void 0}}catch{return{changedFileLines:[],changedFiles:[],changedRanges:[],renamedFiles:[],note:Co}}}function kx(e,t,n,r=[]){let i=new _(e),o=new Set(n),s=Ua(r),a=[],c=new Map,l=t.flatMap(S=>i.definitionsForFile(S)).filter(kW),u=l.filter(S=>hW(S,s)),d=bW(e,l,u,s),m=xW([...u,...d.definitions]).sort((S,b)=>S.relativePath.localeCompare(b.relativePath)||S.startLine-b.startLine),f=m.map(S=>S.symbolId),p=wW(e,f),g=DW(e,f,n),y=m.filter(S=>(p.get(S.symbolId)??0)===0),h=Ex(()=>In(e,y)),C=y.filter(S=>(h.get(S.symbolId)?.size??0)===0),x=Ex(()=>ao(e,C));for(let S of m)IW(e,S,o,a,c,h.get(S.symbolId)??new Set,x.get(S.symbolId)??new Set,p.get(S.symbolId)??0,g.get(S.symbolId)??new Set);return{changedSymbols:a,consumerEntries:[...c.entries()].map(([S,b])=>({file:S,symbols:[...b].sort()})),attributionNotes:d.notes}}function Wa(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=EW(n);return{changedFiles:[...e],changedSymbols:r,affectedConsumers:o,attributionNotes:i,summary:{totalChangedFiles:e.length,totalChangedSymbols:r.length,totalAffectedFiles:o.length}}}function oW(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 aW(e,t){let n=lr("git",["diff","--name-status","--find-renames",t],{encoding:"utf-8",cwd:e,timeout:3e4,maxBuffer:67108864}),r=lr("git",["diff","--name-status","--find-renames","--cached",t],{encoding:"utf-8",cwd:e,timeout:3e4,maxBuffer:64*1024*1024}),i=lr("git",["ls-files","--others","--exclude-standard"],{encoding:"utf-8",cwd:e,timeout:3e4,maxBuffer:64*1024*1024}),o=lr("git",["diff","--unified=0",t],{encoding:"utf-8",cwd:e,timeout:3e4,maxBuffer:64*1024*1024}),s=lr("git",["diff","--unified=0","--cached",t],{encoding:"utf-8",cwd:e,timeout:3e4,maxBuffer:64*1024*1024}),a=dW([n,r]);return{changedFileLines:[...new Set([...a.changedFiles,...Px(i)])],changedRanges:_x([...Dx(o),...Dx(s)]),renamedFiles:a.renamedFiles,deletedFiles:a.deletedFiles}}function Qd(e,t,n){try{return lr("git",["show",`${t}:./${n}`],{encoding:"utf-8",cwd:e,timeout:1e4,stdio:["ignore","pipe","ignore"]})}catch{return null}}function xo(e,t,n=[]){let r=cW(e,t,n);return i=>(r.has(i)||r.set(i,Qd(e,t,i)),r.get(i)??null)}function Ro(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 cW(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=lr("git",["cat-file","--batch"],{cwd:e,input:o,maxBuffer:256*1024*1024,timeout:1e4,stdio:["pipe","pipe","ignore"]});return lW(s,r)}catch{for(let o of r)i.set(o,Qd(e,t,o));return i}}function lW(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 uW(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)||!rW(`${e}/${a}`))continue;let c=s.filter(d=>!o.has(d)).filter(d=>Ix(d)===Ix(a));if(c.length===0)continue;let l=iW(`${e}/${a}`,"utf-8"),u=c.map(d=>({from:d,to:a,similarity:mW(Qd(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 dW(e){let t=new Set,n=new Map,r=new Set;for(let i of e.flatMap(o=>Px(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 mW(e,t){let n=new Set(wx(e)),r=new Set(wx(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 wx(e){return e.match(/[A-Za-z_$][\w$]*|[{}()[\].,]/g)??[]}function Px(e){return e.split(`
749
- `).map(t=>t.trim()).filter(t=>t.length>0)}function fW(e,t){let n=Tx(e),r=[];for(let i of t){let o=n(i);o&&!e.isIgnored(o)&&r.push(o)}return r}function pW(e,t){let n=Tx(e),r=[];for(let i of t){let o=n(i.file);o&&!e.isIgnored(o)&&r.push({...i,file:o})}return _x(r)}function Tx(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 Dx(e){let t=[],n=null;for(let r of e.split(`
751
- `)){if(r.startsWith("+++ ")){n=gW(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 gW(e){return e==="/dev/null"?null:e.startsWith("a/")||e.startsWith("b/")?e.slice(2):e}function _x(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 hW(e,t){let n=t.get(e.relativePath);return!n||n.length===0?!0:n.some(r=>Zd(e.startLine,e.endLine,r.startLine,r.endLine))}function yW(e,t,n){let r=new Map,i=[],o=Fx(e),s=RW(n);for(let a of t){let c=o.get(a.file)??[];if(c.some(d=>Zd(d.startLine,d.endLine,a.startLine,a.endLine)))continue;let l=s.get(a.file)??[],u=vW(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(Yd(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(Yd(a,"nearest-preceding"));continue}}i.push(Yd(a,"unattributed"))}return{definitions:[...r.values()],notes:i}}function bW(e,t,n,r){let i=Fx(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=>Zd(m.startLine,m.endLine,d.startLine,d.endLine))||o.push(d);o.some(d=>d.file===c)&&s.push(...SW(e,c))}return yW(t,o,s)}function SW(e,t){let n=q(e,t);return n?n.rootNode.namedChildren.filter(CW).map(r=>({file:t,startLine:r.startPosition.row,endLine:r.endPosition.row})).filter(r=>r.endLine>=r.startLine):[]}function CW(e){return e.endPosition.row<e.startPosition.row?!1:!new Set(["import_statement","comment"]).has(e.type)}function xW(e){let t=new Map;for(let n of e)t.set(n.symbolId,n);return[...t.values()]}function Fx(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 RW(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 vW(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 Yd(e,t){return{file:e.file,startLine:e.startLine,endLine:e.endLine,method:t}}function Zd(e,t,n,r){return e<=r&&n<=t}function IW(e,t,n,r,i,o,s,a,c){let l=Math.max(a,o.size,s.size);if(!PW(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)Xd(e,n,i,d,u);for(let d of o)Xd(e,n,i,d,u);for(let d of s)Xd(e,n,i,d,u)}function Ex(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 wW(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
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 NU(e){return e.length>=oU?!0:AU(e).size>=sU}function AU(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 MU(e,t){return e===0?"focused":e/t>=.5?"broad-sweep":"mixed"}function OU(e){let t=new Set,n=[],r=[];for(let i of e){!r.includes(i)&&r.length<lU&&r.push(i);for(let o of jU(i))t.add(o);for(let o of i.match(uU)??[])n.includes(o)||n.push(o)}return{subjectLabels:[...t].sort(),issueRefs:n,sampleSubjects:r,externalIssueLabelStatus:"unavailable"}}function jU(e){let t=new Set,n=dU.exec(e)?.[1]?.toLowerCase();return n&&t.add(BU(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 BU(e){return e==="feat"?"feature":e}import{existsSync as $U}from"fs";import{join as HU}from"path";function qd(e){return Vd.test(e)}var Vd=/(?:^|\/)(?: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 So(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=Ix(e),p=Yd(e,m,f),g=n.includeLinked===!0||l,y=[];for(let h of d){if(Vd.test(h.fileA)||Vd.test(h.fileB)||!Cx(e,h.fileA)||!Cx(e,h.fileB)||l&&!h.fileA.includes(t)&&!h.fileB.includes(t)||!l&&(Y(h.fileA)==="test"||Y(h.fileB)==="test"||zU(h.fileA,h.fileB)||WU(h.fileA,h.fileB)))continue;let C=p(h.fileA,h.fileB);if(!g&&C)continue;let x=Kd(h.fileA,h.fileB),S=Jd(h,x,C);if(y.push({...h,structurallyLinked:C,partnerClass:x.partnerClass,partnerClassReasons:x.reasons,...S?{declaredCouplingSuggestion:S}:{}}),y.length>=o)break}return{available:!0,commitsAnalyzed:c.commits.length,findings:y}}function Cx(e,t){return $U(HU(e.config.projectRoot,t))}function Kd(e,t){let n=Rx(e),r=Rx(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=nW(n.tokens,r.tokens).filter(c=>!eW.has(c));return vx(e,t)||a.length>=2?(o(vx(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 Jd(e,t,n){if(n||e.together<4||e.confidence<.75||e.commitScope==="broad-sweep"||e.recency==="stale"||!ZU.has(t.partnerClass))return;let r=[e.fileA,e.fileB].sort();return{name:`co-change ${t.partnerClass}: ${rW(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 Yd(e,t=ie(e),n=Ix(e)){return(r,i)=>VU(t,n,r,i)}var UU=/(?:^|\/)(?:locales|i18n)\//i;function xx(e){return UU.test(e)}function WU(e,t){return xx(e)&&xx(t)?!0:GU(e,t)}function GU(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 zU(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 Ix(e){return(e.config.declaredCouplings??[]).filter(t=>Array.isArray(t.files)&&t.files.length>=2).map(t=>new Set(t.files))}function VU(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 qU=/(?:^|\/)(?:readme|docs?|guides?|adr|architecture|design)(?:\/|$)|\.(?:md|mdx|rst|adoc|txt)$/i,KU=/(?:^|\/)(?:\.[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,JU=/(?:^|\/)(?:schemas?|contracts?|migrations?|models?|types?)(?:\/|$)|(?:^|\/)[^/]*(?:schema|contract|migration|model|types?)[^/]*|(?:\.schema)?\.(?:graphql|gql|proto|prisma)$/i,YU=/(?:^|\/)(?:scripts?|bin|tools?|tasks?|generators?|codegen|migrations?|seeds?)(?:\/|$)|(?:^|\/)[^/]*(?:generate|codegen|migrate|seed|script)[^/]*\.[cm]?[jt]s$/i,XU=/(?:^|\/)(?:models?|entities|domain|state|stores?|reducers?)(?:\/|$)|(?:^|\/)[^/]*(?:model|entity|state|store|reducer|viewmodel)[^/]*\.[^.]+$/i,QU=/(?:^|\/)(?:views?|pages?|components?|screens?|routes?|templates?)(?:\/|$)|(?:^|\/)[^/]*(?:view|page|component|screen|template)[^/]*\.[^.]+$|\.(?:vue|svelte|tsx|jsx)$/i,ZU=new Set(["doc-code","config-code","schema-script","model-view","test-code"]),eW=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 Rx(e){let t=e.replace(/\\/g,"/"),n=new Set;return qU.test(t)&&n.add("doc"),KU.test(t)&&n.add("config"),JU.test(t)&&n.add("schema"),YU.test(t)&&n.add("script"),XU.test(t)&&n.add("model"),QU.test(t)&&n.add("view"),Y(t)==="test"&&n.add("test"),!n.has("doc")&&!n.has("config")&&n.add("code"),{tags:n,tokens:tW(t)}}function vx(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 tW(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 nW(e,t){let n=new Set(t);return[...new Set(e.filter(r=>n.has(r)))].sort()}function rW(e){return e.map(t=>t.split("/").pop()?.replace(/\.[^.]+$/,"")||t).join(" + ")}import{execFileSync as lr}from"child_process";import{existsSync as iW,readFileSync as oW}from"fs";import{basename as wx}from"path";function Wa(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 Co="Unable to compute git diff.";function Zr(e,t={}){let n=t.plan??Fn(e,t);return n.note?sW(n.note,n.changedFileLines):n.changedFiles.length===0?aW(n.changedFileLines):Ga(n.changedFiles,[Px(e,n.changedFiles,n.changedFiles,n.changedRanges)])}function Fn(e,t={}){let{base:n="HEAD"}=t;try{let r=cW(e.config.projectRoot,n),i=r.changedFileLines,o=pW(e,i),s=gW(e,r.changedRanges);return{changedFileLines:i,changedFiles:o,changedRanges:s,renamedFiles:dW(e.config.projectRoot,n,o,r),note:i.length===0?"No changed files found.":void 0}}catch{return{changedFileLines:[],changedFiles:[],changedRanges:[],renamedFiles:[],note:Co}}}function Px(e,t,n,r=[]){let i=new _(e),o=new Set(n),s=Wa(r),a=[],c=new Map,l=t.flatMap(S=>i.definitionsForFile(S)).filter(PW),u=l.filter(S=>yW(S,s)),d=SW(e,l,u,s),m=RW([...u,...d.definitions]).sort((S,b)=>S.relativePath.localeCompare(b.relativePath)||S.startLine-b.startLine),f=m.map(S=>S.symbolId),p=DW(e,f),g=EW(e,f,n),y=m.filter(S=>(p.get(S.symbolId)??0)===0),h=kx(()=>In(e,y)),C=y.filter(S=>(h.get(S.symbolId)?.size??0)===0),x=kx(()=>ao(e,C));for(let S of m)wW(e,S,o,a,c,h.get(S.symbolId)??new Set,x.get(S.symbolId)??new Set,p.get(S.symbolId)??0,g.get(S.symbolId)??new Set);return{changedSymbols:a,consumerEntries:[...c.entries()].map(([S,b])=>({file:S,symbols:[...b].sort()})),attributionNotes:d.notes}}function Ga(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=kW(n);return{changedFiles:[...e],changedSymbols:r,affectedConsumers:o,attributionNotes:i,summary:{totalChangedFiles:e.length,totalChangedSymbols:r.length,totalAffectedFiles:o.length}}}function sW(e,t=[]){return{changedFiles:t,changedSymbols:[],affectedConsumers:[],attributionNotes:[],summary:{totalChangedFiles:t.length,totalChangedSymbols:0,totalAffectedFiles:0,note:e}}}function aW(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=lr("git",["diff","--name-status","--find-renames",t],{encoding:"utf-8",cwd:e,timeout:3e4,maxBuffer:67108864}),r=lr("git",["diff","--name-status","--find-renames","--cached",t],{encoding:"utf-8",cwd:e,timeout:3e4,maxBuffer:64*1024*1024}),i=lr("git",["ls-files","--others","--exclude-standard"],{encoding:"utf-8",cwd:e,timeout:3e4,maxBuffer:64*1024*1024}),o=lr("git",["diff","--unified=0",t],{encoding:"utf-8",cwd:e,timeout:3e4,maxBuffer:64*1024*1024}),s=lr("git",["diff","--unified=0","--cached",t],{encoding:"utf-8",cwd:e,timeout:3e4,maxBuffer:64*1024*1024}),a=mW([n,r]);return{changedFileLines:[...new Set([...a.changedFiles,...Tx(i)])],changedRanges:Fx([...Ex(o),...Ex(s)]),renamedFiles:a.renamedFiles,deletedFiles:a.deletedFiles}}function Zd(e,t,n){try{return lr("git",["show",`${t}:./${n}`],{encoding:"utf-8",cwd:e,timeout:1e4,stdio:["ignore","pipe","ignore"]})}catch{return null}}function xo(e,t,n=[]){let r=lW(e,t,n);return i=>(r.has(i)||r.set(i,Zd(e,t,i)),r.get(i)??null)}function Ro(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 lW(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=lr("git",["cat-file","--batch"],{cwd:e,input:o,maxBuffer:256*1024*1024,timeout:1e4,stdio:["pipe","pipe","ignore"]});return uW(s,r)}catch{for(let o of r)i.set(o,Zd(e,t,o));return i}}function uW(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 dW(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)||!iW(`${e}/${a}`))continue;let c=s.filter(d=>!o.has(d)).filter(d=>wx(d)===wx(a));if(c.length===0)continue;let l=oW(`${e}/${a}`,"utf-8"),u=c.map(d=>({from:d,to:a,similarity:fW(Zd(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 mW(e){let t=new Set,n=new Map,r=new Set;for(let i of e.flatMap(o=>Tx(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 fW(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 Tx(e){return e.split(`
749
+ `).map(t=>t.trim()).filter(t=>t.length>0)}function pW(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 gW(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 Fx(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 Ex(e){let t=[],n=null;for(let r of e.split(`
751
+ `)){if(r.startsWith("+++ ")){n=hW(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 hW(e){return e==="/dev/null"?null:e.startsWith("a/")||e.startsWith("b/")?e.slice(2):e}function Fx(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 yW(e,t){let n=t.get(e.relativePath);return!n||n.length===0?!0:n.some(r=>em(e.startLine,e.endLine,r.startLine,r.endLine))}function bW(e,t,n){let r=new Map,i=[],o=Lx(e),s=vW(n);for(let a of t){let c=o.get(a.file)??[];if(c.some(d=>em(d.startLine,d.endLine,a.startLine,a.endLine)))continue;let l=s.get(a.file)??[],u=IW(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(Xd(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(Xd(a,"nearest-preceding"));continue}}i.push(Xd(a,"unattributed"))}return{definitions:[...r.values()],notes:i}}function SW(e,t,n,r){let i=Lx(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=>em(m.startLine,m.endLine,d.startLine,d.endLine))||o.push(d);o.some(d=>d.file===c)&&s.push(...CW(e,c))}return bW(t,o,s)}function CW(e,t){let n=q(e,t);return n?n.rootNode.namedChildren.filter(xW).map(r=>({file:t,startLine:r.startPosition.row,endLine:r.endPosition.row})).filter(r=>r.endLine>=r.startLine):[]}function xW(e){return e.endPosition.row<e.startPosition.row?!1:!new Set(["import_statement","comment"]).has(e.type)}function RW(e){let t=new Map;for(let n of e)t.set(n.symbolId,n);return[...t.values()]}function Lx(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 vW(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 IW(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 Xd(e,t){return{file:e.file,startLine:e.startLine,endLine:e.endLine,method:t}}function em(e,t,n,r){return e<=r&&n<=t}function wW(e,t,n,r,i,o,s,a,c){let l=Math.max(a,o.size,s.size);if(!TW(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)Qd(e,n,i,d,u);for(let d of o)Qd(e,n,i,d,u);for(let d of s)Qd(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 DW(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
752
  FROM mentions m
753
753
  JOIN chunks c ON m.chunk_id = c.id
754
754
  WHERE m.symbol_id IN (${t.map(()=>"?").join(",")})
755
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 DW(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
756
+ GROUP BY m.symbol_id`,...t);return new Map(n.map(r=>[r.symbol_id,r.fan_in]))}function EW(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
757
  FROM mentions m
758
758
  JOIN chunks c ON m.chunk_id = c.id
759
759
  JOIN documents ref_d ON c.document_id = ref_d.id
760
760
  WHERE m.symbol_id IN (${t.map(()=>"?").join(",")})
761
761
  AND m.role != 1
762
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 Xd(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 EW(e){return[...e.entries()].map(([t,n])=>({file:t,consumedSymbols:n.size})).sort((t,n)=>n.consumedSymbols-t.consumedSymbols)}function kW(e){return!(fn(e.symbol)||e.parentTypeName!==null&&!le(e.symbol))}function PW(e,t){return le(e.symbol)||e.isTypeLike?!0:e.parentTypeName===null&&t>0}function em(e){let[t,n]=ei(e,":"),r=t||"unknown",i=(o={})=>{let s=o.actionTier??TW(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??_W(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]=ei(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]=ei(n,":");if(o==="forbidden-edge"){let[a,c]=ei(s,":"),l=Ga(a),u=Ga(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(Ga);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=Ga(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]=ei(n,":"),[a,c]=ei(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 TW(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 _W(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 ei(e,t){let n=e.indexOf(t);return n<0?[e,""]:[e.slice(0,n),e.slice(n+t.length)]}function Ga(e){try{return decodeURIComponent(e)}catch{return e}}import{existsSync as OW,readFileSync as Ax}from"fs";function qa(e,t){let n=FW(e,t)??LW(e,t)??NW(e,t)??AW(e,t);return MW(e,n,t)}function FW(e,t){let n=-1,r=null;for(let i=0;i<=t;i+=1){let o=tm(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(tm(e[i]??"")===r)return{start:n,end:i+1};return{start:n,end:e.length}}function tm(e){let t=e.match(/^\s*(```+|~~~+)/);return t?t[1].startsWith("`")?"`":"~":null}function LW(e,t){if(!za(e[t]??""))return null;let n=t;for(;n>0&&za(e[n-1]??"");)n-=1;let r=t+1;for(;r<e.length&&za(e[r]??"");)r+=1;return{start:n,end:r}}function za(e){let t=e.trim();return t.startsWith("|")&&t.endsWith("|")&&t.includes("|")}function NW(e,t){let n=t;for(;n>=0;){let o=e[n]??"";if(Va(o)!==null)break;if(nm(o)!==null)return null;n-=1}if(n<0)return null;let r=Va(e[n]??"");if(r===null)return null;let i=n+1;for(;i<e.length;){let o=e[i]??"",s=Va(o);if(s!==null){if(s<=r)break;i+=1;continue}if(nm(o)!==null)break;i+=1}return{start:n,end:i}}function Va(e){let t=e.match(/^(\s*)(?:[-*+]\s+|\d+[.)]\s+)/);return t?t[1].length:null}function AW(e,t){let n=e[t]??"";if(Nx(n)||n.trim().length===0)return{start:t,end:t+1};let r=t;for(;r>0&&Lx(e[r-1]??"");)r-=1;let i=t+1;for(;i<e.length&&Lx(e[i]??"");)i+=1;return{start:r,end:i}}function Lx(e){return nm(e)===null}function nm(e){return e.trim().length===0?"blank":Nx(e)?"heading":tm(e)?"fence":za(e)?"table":Va(e)!==null?"list":null}function Nx(e){return/^#{1,6}\s+/.test(e.trim())}function MW(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 ur(e,t){return t.filter(n=>e.includes(n))}var jW=/<!--\s*scip-query:\s*snapshot\s*-->/i;function Ka(e,t){if((e.config.docs?.snapshotPaths??[]).some(i=>ar(i,t)))return!0;let r=P(e,t);return r.length>0&&jW.test(r)}var sn={classifyCitation:$W,citationContexts:HW,citationKindLabel:WW,citationRemediation:GW,referenceTargets:zW,hasLineAnchoredCitation:BW};function BW(e){return e.some(t=>(t.lineReferences?.length??0)>0)}function $W(e){let t=e.join(`
765
- `).toLowerCase(),n=[],r=ur(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=ur(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=ur(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 HW(e,t,n){let r;try{r=Ax(`${e.config.projectRoot}/${t}`,"utf-8").split(/\r?\n/)}catch{return[]}let i=n.flatMap(UW),o=[];for(let s=0;s<r.length;s+=1){let a=r[s]??"";i.some(c=>a.includes(c))&&o.push(qa(r,s))}return o}function UW(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 WW(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 GW(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 zW(e,t,n){let r=Ua(n),i=new Set;for(let o of t)VW(e,o,r.get(o)??[])&&i.add(o);return i}function VW(e,t,n){if(!qW.test(t))return!0;let r=`${e.config.projectRoot}/${t}`;if(!OW(r))return!0;if(n.length===0)return!1;let i=Ax(r,"utf-8").split(/\r?\n/),o=KW(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 qW=/\.(?:[cm]?[jt]sx?)$/i;function KW(e){let t=new Set,n=!1;for(let r=0;r<e.length;r+=1){let i=e[r].trim();!n&&JW(i)&&(n=!0),n&&(t.add(r),i.endsWith(";")&&(n=!1))}return t}function JW(e){return/^import(?:\s|$)/.test(e)||/^export(?:\s+type)?\s+(?:\*|\{)/.test(e)}import{existsSync as Ox,readFileSync as im,statSync as YW}from"fs";import{join as ti}from"path";var Mx=oe({kind:"doc-path-evidence",invalidation:K("doc-path-evidence"),serialize:dG,deserialize:mG}),vo=/\.(?:md|mdx|rst|txt)$/i;function XW(e){return/(?:^|\/)(?:docs\/plans|plans|adrs?|rfcs?|decisions|changelogs?|archive|reports?)\//i.test(e)||/(?:^|\/)CHANGELOG\.(?:md|mdx|rst|txt)$/i.test(e)}var QW=3,ZW=/([A-Za-z0-9_@-]+(?:\/[A-Za-z0-9_.@-]+)+\.[A-Za-z0-9]{1,6})(?::([1-9][0-9]*))?\b/g;function eG(e,t={}){let{doc:n,limit:r=20,minCoupling:i=QW,includeSnapshotExcluded:o=!1}=t,s=iG(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&&!Bx(e,c)||n!==void 0&&!Ox(ti(e.config.projectRoot,c)))continue;let l=Ka(e,c);if(l&&!o)continue;let{value:u,estimated:d}=tG(e,c,s.changeTimes.get(c)),m=nG(e,c),f=new Map,{resolved:p,broken:g,citations:y}=aG(e,c,s.tracked,s.trackedBySuffix,s.everSeenInHistory),h=new Map(y.map(x=>[x.file,x]));for(let x of p){if(x===c||vo.test(x))continue;let S=(s.changeTimes.get(x)??[]).filter(v=>v>u).length;if(S===0)continue;let b=h.get(x);f.set(x,{file:x,evidence:"reference",coChanges:0,changesSinceDocUpdate:S,...rm("reference",m,b?.contexts),citationContexts:b?.contexts,citedLines:b?.lineReferences})}for(let[x,S]of s.coupling.get(c)??[]){if(S<i||!s.tracked.has(x))continue;let b=(s.changeTimes.get(x)??[]).filter(R=>R>u).length;if(b===0)continue;let v=f.get(x);v?(v.evidence="both",v.coChanges=S,Object.assign(v,rm("both",m,v.citationContexts))):f.set(x,{file:x,evidence:"co-change",coChanges:S,changesSinceDocUpdate:b,...rm("co-change",m)})}if(f.size===0&&g.length===0)continue;let C=[...f.values()].sort((x,S)=>S.changesSinceDocUpdate-x.changesSinceDocUpdate);a.push({doc:c,docLastChangedAt:u,staleness:C.reduce((x,S)=>x+S.changesSinceDocUpdate,0)+g.length*10,subjects:C.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 tG(e,t,n){if(n&&n.length>0)return{value:Math.max(...n),estimated:!1};try{return{value:Math.floor(YW(ti(e.config.projectRoot,t)).mtimeMs/1e3),estimated:!0}}catch{return{value:0,estimated:!1}}}function nG(e,t){let n;try{n=im(ti(e.config.projectRoot,t),"utf8").slice(0,6e3)}catch{return{docIntent:"unknown",reasons:["doc text unavailable"]}}let r=`${t}
766
- ${n}`.toLowerCase(),i=ur(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=ur(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 rm(e,t,n=[]){let r=e==="co-change"||n.length===0?null:sn.classifyCitation(n);return{actionTier:rG(e,t.docIntent,r?.actionTier),docIntent:t.docIntent,docIntentReasons:t.reasons,...r?{citationKind:r.citationKind,citationKindReasons:r.reasons}:{}}}function rG(e,t,n){return t==="historical-note"?"support":n||(e==="co-change"?"signal":"direct")}function iG(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=>vo.test(m)),d=l.filter(m=>!vo.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=>vo.test(c)),everSeenInHistory:a,historyCommitCount:r.commits.length,tracked:i,trackedBySuffix:$x(i)}}function jx(e,t){if(t.size===0)return[];let n=U(),r=0,i=0,o=0,s=0,a=0,c=0;return w("doc-reference.docs-citing-files",()=>{let l=ze(e).trackedFiles()??new Set;r=l.size;let u=$x(l),d=oG(t,u),m=[];for(let f of l){if(!Bx(e,f))continue;n&&(i+=1);let p;try{p=im(ti(e.config.projectRoot,f),"utf-8")}catch{n&&(o+=1);continue}if(!lG(p,d)){n&&(s+=1);continue}let g=Hx(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(b=>[...b]))],C=cG(g.contextsByCandidate,h),x=[...y].map(([b,v])=>({file:b,contexts:Ja([...v].flatMap(R=>C.get(R)??[])).slice(0,3),lineReferences:Ya([...v].flatMap(R=>g.lineReferencesByCandidate.get(R)??[]))})).filter(b=>b.contexts.length>0),S=[...y.keys()];if(S.length>0){n&&(c+=1);let b=S.sort();m.push({doc:f,cited:b,citations:x,citedClaims:Ja(x.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 Bx(e,t){return vo.test(t)&&!XW(t)&&Ox(ti(e.config.projectRoot,t))}function $x(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 oG(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 aG(e,t,n,r,i){let o=new Set,s=new Set,a=Hx(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 C=d.get(p)??[];C.push(...y),d.set(p,Ja(C).slice(0,3))}let h=u.get(g);h&&h.length>0&&m.set(p,Ya([...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 cG(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 Hx(e,t,n){let r=n;if(r===void 0)try{r=im(ti(e.config.projectRoot,t),"utf-8")}catch{return null}let i=ce(e,t,r),o=Mx.read(e,t,i);if(o)return o;let s=uG(r);return Mx.write(e,t,i,s),s}function lG(e,t){for(let n of t)if(e.includes(n))return!0;return!1}function uG(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(ZW)){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,Ya([...i.get(c)??[],l]));let u=qa(t,o);if(u.length===0)continue;let d=r.get(c)??[];d.push(u),r.set(c,Ja(d).slice(0,3))}}return{candidates:[...n],contextsByCandidate:r,lineReferencesByCandidate:i}}function dG(e){let t={candidates:e.candidates,contextsByCandidate:[...e.contextsByCandidate.entries()],lineReferencesByCandidate:[...e.lineReferencesByCandidate.entries()]};return JSON.stringify(t)}function mG(e){try{let t=JSON.parse(e);if(!It(t))return null;let n=Me(t.candidates),r=pG(t.contextsByCandidate),i=fG(t.lineReferencesByCandidate);return!n||!r?null:{candidates:n,contextsByCandidate:new Map(r),lineReferencesByCandidate:new Map(i??[])}}catch{return null}}function fG(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],Ya(r)])}return t}function pG(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 Ja(e){let t=[];for(let n of new Set(e))t.some(r=>gG(r,n))||t.push(n);return t}function Ya(e){return[...new Set(e)].sort((t,n)=>t-n)}function gG(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 hG}from"crypto";var Wx=3;function Io(e,t={}){let{scope:n,maxLoc:r=15,minLoc:i=Wx,limit:o,scanLimit:s}=t,a=Hd(e),c=Vx(e,{scope:n,maxLoc:r,scanLimit:s}).map(u=>qx(e,u,a,i)).filter(u=>u!==null),l=zx(c);return o?l.slice(0,o):l}function om(e,t,n={}){let{scope:r,maxLoc:i=15,minLoc:o=Wx,scanLimit:s}=n,a=Hd(e),c=Vx(e,{scope:r,maxLoc:i,scanLimit:s}).map(u=>qx(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(Kx).map(({normalizedBody:u,...d})=>d):[]}function Gx(e){let t=Mt(e);return rt(t).replace(/\s+/g,"")}function zx(e){let t=new Map;for(let r of e){if(r.normalizedBody.length<8)continue;let i=bG(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(Kx).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=Ux(i)-Ux(r);return s!==0?s:r.canonical.file.localeCompare(i.canonical.file)}),n}function Vx(e,t){let n=xe(e,{scope:t.scope}).filter(r=>r.isFunctionLike&&!e.isIgnored(r.relativePath)).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 qx(e,t,n,r){let i=an(e,t);if(!i||yG(i)<r)return null;let o=sm(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 sm(e,t){let n=an(e,t);return n&&Gx(n)||null}function an(e,t){let n=Ce(e,t.relativePath);return n.length===0?null:n.slice(t.startLine,t.endLine+1).join(`
767
- `)}function Mt(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 yG(e){return Mt(e).split(/\r?\n/).map(n=>n.trim()).filter(n=>n.length>0).length}function bG(e){return hG("sha256").update(e).digest("hex").slice(0,16)}function Kx(e,t){let n=e.ageCommits??-1;return(t.ageCommits??-1)-n||e.file.localeCompare(t.file)||e.startLine-t.startLine}function Ux(e){return e.functions.reduce((t,n)=>t+n.loc,0)}var SG=new Set(Ft());function CG(e,t={}){let{includeHomonyms:n=!1,limit:r}=t,i=ni(e,t).filter(o=>o.relationship==="divergent"||n&&o.relationship==="homonym");return r?i.slice(0,r):i}function ni(e,t={}){let{scope:n,minSimilarity:r=.3,scanLimit:i}=t,o=vG(e,{scope:n,scanLimit:i});return Xx(o,{minSimilarity:r,isDelegatePair:zG(e)}).filter(s=>!s.members.some(a=>wf(e,a.file,a.startLine,"twin")))}function Xx(e,t={}){let n=t.minSimilarity??.3,r=t.isDelegatePair,i=e.filter(l=>!iR(l.leaf)&&!NG(l.leaf)&&Y(l.file)!=="test"&&!Ie(l.symbol)&&!Zx(l.symbol)&&!eR(l.symbol,l.leaf)),{recordsByLeaf:o,recordOrder:s}=w("twin-drift.group-by-leaf",()=>xG(i),()=>({records:i.length})),a=w("twin-drift.cluster-leaf-names",()=>Qx([...o.keys()]),()=>({leaves:o.size}));return w("twin-drift.compare-clusters",()=>{let l=[];for(let u of a){let d=RG(u,o,s);if(d.length<2||new Set(d.map(C=>C.file)).size<2)continue;let m=null,f=!1,p=!1,g=new Set;for(let C=0;C<d.length;C+=1)for(let x=C+1;x<d.length;x+=1){let S=d[C],b=d[x];if(S.file===b.file||!jG(S,b)||r?.(S,b,d)||r?.(b,S,d))continue;if(f=!0,g.add(S.symbol),g.add(b.symbol),S.normalizedBody===b.normalizedBody){p=!0;continue}let v=TG(S.tokens,b.tokens);(!m||v>m.similarity)&&(m={a:S,b,similarity:v})}if(!f)continue;let y=d.filter(C=>g.has(C.symbol)).sort((C,x)=>C.file.localeCompare(x.file)||C.startLine-x.startLine).map(PG);if(!m){l.push({leaf:Yx(u),relationship:p?"identical":"homonym",maxDivergence:0,members:y});continue}let h=m.similarity>=n?"divergent":"homonym";l.push({leaf:Yx(u),relationship:h,maxDivergence:Math.round((1-m.similarity)*1e3)/1e3,members:y,...h==="divergent"?{firstDivergentTokens:_G(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 xG(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 RG(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 vG(e,t){let n=w("twin-drift.load-definitions",()=>xe(e,{scope:t.scope}).filter(o=>IG(o)&&!e.isIgnored(o.relativePath)).filter(o=>!Gr(o.relativePath)));w("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=w("twin-drift.select-candidates",()=>wG(r),()=>({scanned:r.length}));return w("twin-drift.build-records",()=>{let o=[];for(let s of i){let a=DG(e,s);a&&o.push(a)}return o},()=>({candidates:i.length,scanned:r.length}))}function IG(e){return e.isFunctionLike?e.symbol.startsWith("rust-analyzer ")?typeof e.kind=="number"&&SG.has(e.kind):!0:!1}function wG(e){let t=e.filter(o=>o.leaf&&!iR(o.leaf)&&!Ie(o.symbol)&&!Zx(o.symbol)&&!eR(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=Qx([...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=>Y(a.relativePath)==="test"))for(let a of s)i.add(a)}return e.filter(o=>i.has(o))}function DG(e,t){if(!t.leaf)return null;let n=an(e,t);if(!n||!le(t.symbol)&&!EG(n,t.leaf))return null;let r=rt(Mt(n)),i=r.replace(/\s+/g,"");if(!i||i.length<8)return null;let o=r.match(kG)??[];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:nR(r)}}function EG(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 kG=/[A-Za-z_$][A-Za-z0-9_$]*|\d+(?:\.\d+)?|[^\sA-Za-z0-9_$]/g;function PG(e){return{symbol:e.symbol,shortName:e.shortName,file:e.file,startLine:e.startLine,endLine:e.endLine,loc:e.loc}}function TG(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 _G(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 Qx(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)FG(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 FG(e,t){return e===t||e.toLowerCase()===t.toLowerCase()?!0:e.length<8||t.length<8||Math.abs(e.length-t.length)>2||LG(e.toLowerCase(),t.toLowerCase())/Math.max(e.length,t.length)<.8?!1:BG(e.toLowerCase(),t.toLowerCase(),2)}function LG(e,t){let n=Math.min(e.length,t.length),r=0;for(;r<n&&e[r]===t[r];)r+=1;return r}function NG(e){return/^[A-Z][A-Z0-9_]*$/.test(e)||/^__[^_].*__$/.test(e)||AG.has(e.toLowerCase())}var AG=new Set(["main","row"]),MG=new Set(["app","component","components","feature","features","impl","index","lib","route","routes","shared","src","tsx","typescript","ui"]);function Zx(e){return e.startsWith("rust-analyzer ")&&/\/(?:tests?|benches?)\//.test(e)}var OG=new Set(["default","new","reset"]);function eR(e,t){return e.startsWith("rust-analyzer ")&&OG.has(t.toLowerCase())}function jG(e,t){if(e.leaf.toLowerCase()!==t.leaf.toLowerCase()||e.leaf.length>4)return!0;let n=Jx(e);return[...Jx(t)].some(r=>n.has(r))}function Jx(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&&!MG.has(n)))}function BG(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 tR(e){return nR(rt(Mt(e)))}function nR(e){let t=e.trim();if(!t||$G.test(t))return!1;let n=WG(t);return n.length===0||n.length>2?!1:UG(n[n.length-1])}var $G=/\b(?:if|else|for|while|switch|try|catch|do)\b/,HG=/^[A-Za-z_$][\w$]*(?:\.[A-Za-z_$][\w$]*|\[[^[\]]*\])*\((?:[^()]|\([^()]*\))*\)$/;function UG(e){let t=e.trim().replace(/^return\s+/,"").replace(/^await\s+/,"").replace(/;\s*$/,"").trim();return HG.test(t)}function WG(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 GG=3;function zG(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=rR(e,n,r,i,GG,new Set);return t.set(o,a),a}}function rR(e,t,n,r,i,o){if(i<=0||o.has(t.symbol)||(o.add(t.symbol),(pn(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(re(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))&&rR(e,c,n,r,i-1,o))return!0;return!1}function iR(e){return e.startsWith("<")&&e.endsWith(">")}function Yx(e){return[...e].sort()[0]}import{readFileSync as VG,readdirSync as qG}from"fs";import{basename as KG,join as am}from"path";function JG(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 cm(e,t){let n=YG(e,t.file,t.keys);if(!n.ok)return{name:t.name,file:t.file,status:"unavailable",missing:[],extra:[],unavailableReason:n.reason};let r=nz(e.config.projectRoot,t.mustEqual),i=JG(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 sR(e,t){return t.map(n=>cm(e,n))}function aR(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=>ar(n.pattern,r));case"registered-commands":return t.has("docs/COMMAND_REFERENCE.md");case"builtin-skills":return[...t].some(r=>r.startsWith("skills/"))}}function cR(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 YG(e,t,n){return n.type==="markdown-list"?tz(e,t,n.marker):XG(e,t,n)}function XG(e,t,n){if(!P(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=q(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"?QG(o,n.identifier):ez(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 lR(e){let t=e.childForFieldName("value");return t?t.type==="as_expression"||t.type==="satisfies_expression"?t.namedChild(0):t:null}function QG(e,t){for(let n of e.rootNode.descendantsOfType("variable_declarator")){if(n.childForFieldName("name")?.text!==t)continue;let i=lR(n);if(i?.type==="object")return ZG(i)}return null}function ZG(e){let t=new Set;for(let n of e.namedChildren)if(n.type==="pair"){let r=n.childForFieldName("key");r&&t.add(uR(r.text))}else n.type==="shorthand_property_identifier"&&t.add(n.text);return[...t].sort()}function ez(e,t){for(let n of e.rootNode.descendantsOfType("variable_declarator")){if(n.childForFieldName("name")?.text!==t)continue;let i=lR(n);if(i?.type!=="array")continue;let o=new Set;for(let s of i.namedChildren)s.type==="string"&&o.add(uR(s.text));return[...o].sort()}return null}function uR(e){return e.length>=2&&(e[0]==="'"&&e.endsWith("'")||e[0]==='"'&&e.endsWith('"'))?e.slice(1,-1):e}function tz(e,t,n){let r=P(e,t);if(!r)return{ok:!1,reason:`file not found: ${t}`};let i=dR(r,n);return i===null?{ok:!1,reason:`no <!-- BEGIN GENERATED ${n} --> ... <!-- END GENERATED ${n} --> block in ${t}`}:{ok:!0,keys:mR(i)}}function dR(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 mR(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 nz(e,t){switch(t.type){case"top-level-dirs":return oR(am(e,t.path));case"file-glob":return[...new Set(uC(e,t.pattern).map(n=>KG(n)))].sort();case"registered-commands":return rz(e);case"builtin-skills":return oR(am(e,"skills"))}}function oR(e){let t;try{t=qG(e,{withFileTypes:!0})}catch{return[]}return t.filter(n=>n.isDirectory()&&!n.name.startsWith(".")).map(n=>n.name).sort()}function rz(e){let t;try{t=VG(am(e,"docs/COMMAND_REFERENCE.md"),"utf-8")}catch{return[]}let n=dR(t,"COMMAND REFERENCE");return n?mR(n):[]}import{existsSync as xR,readFileSync as RR,writeFileSync as aV}from"fs";import{isAbsolute as cV,join as lV}from"path";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 wo from"path";function Eo(e,t){let{scope:n,minDeviation:r=5,limit:i=50}=t??{},o=t?.semantic!==!1,s=t?.includePatternDeviations===!0,c=new _(e).fileDependencyGraph(n),l=qr(e,{scope:n}),u=cz([...iz(e,c,{scope:n,semantic:o}),...sz(l.forbiddenEdges),...s?az(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 iz(e,t,n){let r=dz(e,n.scope),i=[],o=new Set;for(let[a,c]of t){if(Do(a))continue;let l=r.get(a)??new Set;for(let u of c)Do(u)||l.has(u)||oz(e,a,u,n)||(i.push({file:a,dep:u}),o.add(a))}o.size>0&&pz(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 oz(e,t,n,r){return yz(e,t,n)||bz(e,t,n)||gz(n)||Cz(e,t,n)||Sz(n)?!0:r.semantic&&hz(e,t,n)}function sz(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 az(e,t){let n=[];for(let[r,i]of lz(e)){let o=i.filter(a=>!Do(a));if(o.length<t)continue;let s=uz(e,o);for(let a of o)for(let c of e.get(a)??[])Do(c)||(s.get(c)??0)===1&&wo.dirname(c)!==r&&wo.dirname(c)!==wo.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 cz(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 lz(e){let t=new Map;for(let n of e.keys()){let r=wo.dirname(n),i=t.get(r);i||(i=[],t.set(r,i)),i.push(n)}return t}function uz(e,t){let n=new Map;for(let r of t)for(let i of e.get(r)??[])Do(i)||n.set(i,(n.get(i)??0)+1);return n}function dz(e,t){let n=new Map;return mz(e,n,t),n}function mz(e,t,n){for(let r of fz(e,n))fR(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
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 Qd(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 kW(e){return[...e.entries()].map(([t,n])=>({file:t,consumedSymbols:n.size})).sort((t,n)=>n.consumedSymbols-t.consumedSymbols)}function PW(e){return!(fn(e.symbol)||e.parentTypeName!==null&&!le(e.symbol))}function TW(e,t){return le(e.symbol)||e.isTypeLike?!0:e.parentTypeName===null&&t>0}function tm(e){let[t,n]=ei(e,":"),r=t||"unknown",i=(o={})=>{let s=o.actionTier??_W(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??FW(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]=ei(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]=ei(n,":");if(o==="forbidden-edge"){let[a,c]=ei(s,":"),l=za(a),u=za(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(za);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=za(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]=ei(n,":"),[a,c]=ei(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 _W(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 FW(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 ei(e,t){let n=e.indexOf(t);return n<0?[e,""]:[e.slice(0,n),e.slice(n+t.length)]}function za(e){try{return decodeURIComponent(e)}catch{return e}}import{existsSync as jW,readFileSync as Mx}from"fs";function Ka(e,t){let n=LW(e,t)??NW(e,t)??AW(e,t)??MW(e,t);return OW(e,n,t)}function LW(e,t){let n=-1,r=null;for(let i=0;i<=t;i+=1){let o=nm(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(nm(e[i]??"")===r)return{start:n,end:i+1};return{start:n,end:e.length}}function nm(e){let t=e.match(/^\s*(```+|~~~+)/);return t?t[1].startsWith("`")?"`":"~":null}function NW(e,t){if(!Va(e[t]??""))return null;let n=t;for(;n>0&&Va(e[n-1]??"");)n-=1;let r=t+1;for(;r<e.length&&Va(e[r]??"");)r+=1;return{start:n,end:r}}function Va(e){let t=e.trim();return t.startsWith("|")&&t.endsWith("|")&&t.includes("|")}function AW(e,t){let n=t;for(;n>=0;){let o=e[n]??"";if(qa(o)!==null)break;if(rm(o)!==null)return null;n-=1}if(n<0)return null;let r=qa(e[n]??"");if(r===null)return null;let i=n+1;for(;i<e.length;){let o=e[i]??"",s=qa(o);if(s!==null){if(s<=r)break;i+=1;continue}if(rm(o)!==null)break;i+=1}return{start:n,end:i}}function qa(e){let t=e.match(/^(\s*)(?:[-*+]\s+|\d+[.)]\s+)/);return t?t[1].length:null}function MW(e,t){let n=e[t]??"";if(Ax(n)||n.trim().length===0)return{start:t,end:t+1};let r=t;for(;r>0&&Nx(e[r-1]??"");)r-=1;let i=t+1;for(;i<e.length&&Nx(e[i]??"");)i+=1;return{start:r,end:i}}function Nx(e){return rm(e)===null}function rm(e){return e.trim().length===0?"blank":Ax(e)?"heading":nm(e)?"fence":Va(e)?"table":qa(e)!==null?"list":null}function Ax(e){return/^#{1,6}\s+/.test(e.trim())}function OW(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 ur(e,t){return t.filter(n=>e.includes(n))}var BW=/<!--\s*scip-query:\s*snapshot\s*-->/i;function Ja(e,t){if((e.config.docs?.snapshotPaths??[]).some(i=>ar(i,t)))return!0;let r=P(e,t);return r.length>0&&BW.test(r)}var sn={classifyCitation:HW,citationContexts:UW,citationKindLabel:GW,citationRemediation:zW,referenceTargets:VW,hasLineAnchoredCitation:$W};function $W(e){return e.some(t=>(t.lineReferences?.length??0)>0)}function HW(e){let t=e.join(`
765
+ `).toLowerCase(),n=[],r=ur(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=ur(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=ur(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 UW(e,t,n){let r;try{r=Mx(`${e.config.projectRoot}/${t}`,"utf-8").split(/\r?\n/)}catch{return[]}let i=n.flatMap(WW),o=[];for(let s=0;s<r.length;s+=1){let a=r[s]??"";i.some(c=>a.includes(c))&&o.push(Ka(r,s))}return o}function WW(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 GW(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 zW(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 VW(e,t,n){let r=Wa(n),i=new Set;for(let o of t)qW(e,o,r.get(o)??[])&&i.add(o);return i}function qW(e,t,n){if(!KW.test(t))return!0;let r=`${e.config.projectRoot}/${t}`;if(!jW(r))return!0;if(n.length===0)return!1;let i=Mx(r,"utf-8").split(/\r?\n/),o=JW(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 KW=/\.(?:[cm]?[jt]sx?)$/i;function JW(e){let t=new Set,n=!1;for(let r=0;r<e.length;r+=1){let i=e[r].trim();!n&&YW(i)&&(n=!0),n&&(t.add(r),i.endsWith(";")&&(n=!1))}return t}function YW(e){return/^import(?:\s|$)/.test(e)||/^export(?:\s+type)?\s+(?:\*|\{)/.test(e)}import{existsSync as jx,readFileSync as om,statSync as XW}from"fs";import{join as ti}from"path";var Ox=oe({kind:"doc-path-evidence",invalidation:K("doc-path-evidence"),serialize:mG,deserialize:fG}),vo=/\.(?:md|mdx|rst|txt)$/i;function QW(e){return/(?:^|\/)(?:docs\/plans|plans|adrs?|rfcs?|decisions|changelogs?|archive|reports?)\//i.test(e)||/(?:^|\/)CHANGELOG\.(?:md|mdx|rst|txt)$/i.test(e)}var ZW=3,eG=/([A-Za-z0-9_@-]+(?:\/[A-Za-z0-9_.@-]+)+\.[A-Za-z0-9]{1,6})(?::([1-9][0-9]*))?\b/g;function tG(e,t={}){let{doc:n,limit:r=20,minCoupling:i=ZW,includeSnapshotExcluded:o=!1}=t,s=oG(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&&!$x(e,c)||n!==void 0&&!jx(ti(e.config.projectRoot,c)))continue;let l=Ja(e,c);if(l&&!o)continue;let{value:u,estimated:d}=nG(e,c,s.changeTimes.get(c)),m=rG(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(x=>[x.file,x]));for(let x of p){if(x===c||vo.test(x))continue;let S=(s.changeTimes.get(x)??[]).filter(v=>v>u).length;if(S===0)continue;let b=h.get(x);f.set(x,{file:x,evidence:"reference",coChanges:0,changesSinceDocUpdate:S,...im("reference",m,b?.contexts),citationContexts:b?.contexts,citedLines:b?.lineReferences})}for(let[x,S]of s.coupling.get(c)??[]){if(S<i||!s.tracked.has(x))continue;let b=(s.changeTimes.get(x)??[]).filter(R=>R>u).length;if(b===0)continue;let v=f.get(x);v?(v.evidence="both",v.coChanges=S,Object.assign(v,im("both",m,v.citationContexts))):f.set(x,{file:x,evidence:"co-change",coChanges:S,changesSinceDocUpdate:b,...im("co-change",m)})}if(f.size===0&&g.length===0)continue;let C=[...f.values()].sort((x,S)=>S.changesSinceDocUpdate-x.changesSinceDocUpdate);a.push({doc:c,docLastChangedAt:u,staleness:C.reduce((x,S)=>x+S.changesSinceDocUpdate,0)+g.length*10,subjects:C.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 nG(e,t,n){if(n&&n.length>0)return{value:Math.max(...n),estimated:!1};try{return{value:Math.floor(XW(ti(e.config.projectRoot,t)).mtimeMs/1e3),estimated:!0}}catch{return{value:0,estimated:!1}}}function rG(e,t){let n;try{n=om(ti(e.config.projectRoot,t),"utf8").slice(0,6e3)}catch{return{docIntent:"unknown",reasons:["doc text unavailable"]}}let r=`${t}
766
+ ${n}`.toLowerCase(),i=ur(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=ur(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 im(e,t,n=[]){let r=e==="co-change"||n.length===0?null:sn.classifyCitation(n);return{actionTier:iG(e,t.docIntent,r?.actionTier),docIntent:t.docIntent,docIntentReasons:t.reasons,...r?{citationKind:r.citationKind,citationKindReasons:r.reasons}:{}}}function iG(e,t,n){return t==="historical-note"?"support":n||(e==="co-change"?"signal":"direct")}function oG(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=>vo.test(m)),d=l.filter(m=>!vo.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=>vo.test(c)),everSeenInHistory:a,historyCommitCount:r.commits.length,tracked:i,trackedBySuffix:Hx(i)}}function Bx(e,t){if(t.size===0)return[];let n=U(),r=0,i=0,o=0,s=0,a=0,c=0;return w("doc-reference.docs-citing-files",()=>{let l=ze(e).trackedFiles()??new Set;r=l.size;let u=Hx(l),d=sG(t,u),m=[];for(let f of l){if(!$x(e,f))continue;n&&(i+=1);let p;try{p=om(ti(e.config.projectRoot,f),"utf-8")}catch{n&&(o+=1);continue}if(!uG(p,d)){n&&(s+=1);continue}let g=Ux(e,f,p);if(!g)continue;n&&(a+=1);let y=aG(g.candidates,t,d,l,u);if(y.size===0)continue;let h=[...new Set([...y.values()].flatMap(b=>[...b]))],C=lG(g.contextsByCandidate,h),x=[...y].map(([b,v])=>({file:b,contexts:Ya([...v].flatMap(R=>C.get(R)??[])).slice(0,3),lineReferences:Xa([...v].flatMap(R=>g.lineReferencesByCandidate.get(R)??[]))})).filter(b=>b.contexts.length>0),S=[...y.keys()];if(S.length>0){n&&(c+=1);let b=S.sort();m.push({doc:f,cited:b,citations:x,citedClaims:Ya(x.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 $x(e,t){return vo.test(t)&&!QW(t)&&jx(ti(e.config.projectRoot,t))}function Hx(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 sG(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 aG(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=Ux(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 C=d.get(p)??[];C.push(...y),d.set(p,Ya(C).slice(0,3))}let h=u.get(g);h&&h.length>0&&m.set(p,Xa([...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 lG(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 Ux(e,t,n){let r=n;if(r===void 0)try{r=om(ti(e.config.projectRoot,t),"utf-8")}catch{return null}let i=ce(e,t,r),o=Ox.read(e,t,i);if(o)return o;let s=dG(r);return Ox.write(e,t,i,s),s}function uG(e,t){for(let n of t)if(e.includes(n))return!0;return!1}function dG(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(eG)){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,Xa([...i.get(c)??[],l]));let u=Ka(t,o);if(u.length===0)continue;let d=r.get(c)??[];d.push(u),r.set(c,Ya(d).slice(0,3))}}return{candidates:[...n],contextsByCandidate:r,lineReferencesByCandidate:i}}function mG(e){let t={candidates:e.candidates,contextsByCandidate:[...e.contextsByCandidate.entries()],lineReferencesByCandidate:[...e.lineReferencesByCandidate.entries()]};return JSON.stringify(t)}function fG(e){try{let t=JSON.parse(e);if(!It(t))return null;let n=Me(t.candidates),r=gG(t.contextsByCandidate),i=pG(t.lineReferencesByCandidate);return!n||!r?null:{candidates:n,contextsByCandidate:new Map(r),lineReferencesByCandidate:new Map(i??[])}}catch{return null}}function pG(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],Xa(r)])}return t}function gG(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 Ya(e){let t=[];for(let n of new Set(e))t.some(r=>hG(r,n))||t.push(n);return t}function Xa(e){return[...new Set(e)].sort((t,n)=>t-n)}function hG(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 yG}from"crypto";var Gx=3;function Io(e,t={}){let{scope:n,maxLoc:r=15,minLoc:i=Gx,limit:o,scanLimit:s}=t,a=Ud(e),c=qx(e,{scope:n,maxLoc:r,scanLimit:s}).map(u=>Kx(e,u,a,i)).filter(u=>u!==null),l=Vx(c);return o?l.slice(0,o):l}function sm(e,t,n={}){let{scope:r,maxLoc:i=15,minLoc:o=Gx,scanLimit:s}=n,a=Ud(e),c=qx(e,{scope:r,maxLoc:i,scanLimit:s}).map(u=>Kx(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(Jx).map(({normalizedBody:u,...d})=>d):[]}function zx(e){let t=Mt(e);return rt(t).replace(/\s+/g,"")}function Vx(e){let t=new Map;for(let r of e){if(r.normalizedBody.length<8)continue;let i=SG(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(Jx).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=Wx(i)-Wx(r);return s!==0?s:r.canonical.file.localeCompare(i.canonical.file)}),n}function qx(e,t){let n=xe(e,{scope:t.scope}).filter(r=>r.isFunctionLike&&!e.isIgnored(r.relativePath)).filter(r=>!Uo(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 Kx(e,t,n,r){let i=an(e,t);if(!i||bG(i)<r)return null;let o=am(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 am(e,t){let n=an(e,t);return n&&zx(n)||null}function an(e,t){let n=Ce(e,t.relativePath);return n.length===0?null:n.slice(t.startLine,t.endLine+1).join(`
767
+ `)}function Mt(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 bG(e){return Mt(e).split(/\r?\n/).map(n=>n.trim()).filter(n=>n.length>0).length}function SG(e){return yG("sha256").update(e).digest("hex").slice(0,16)}function Jx(e,t){let n=e.ageCommits??-1;return(t.ageCommits??-1)-n||e.file.localeCompare(t.file)||e.startLine-t.startLine}function Wx(e){return e.functions.reduce((t,n)=>t+n.loc,0)}var CG=new Set(Ft());function xG(e,t={}){let{includeHomonyms:n=!1,limit:r}=t,i=ni(e,t).filter(o=>o.relationship==="divergent"||n&&o.relationship==="homonym");return r?i.slice(0,r):i}function ni(e,t={}){let{scope:n,minSimilarity:r=.3,scanLimit:i}=t,o=IG(e,{scope:n,scanLimit:i});return Qx(o,{minSimilarity:r,isDelegatePair:VG(e)}).filter(s=>!s.members.some(a=>Uo(e,a.file,a.startLine,"twin")))}function Qx(e,t={}){let n=t.minSimilarity??.3,r=t.isDelegatePair,i=e.filter(l=>!oR(l.leaf)&&!AG(l.leaf)&&Y(l.file)!=="test"&&!Ie(l.symbol)&&!eR(l.symbol)&&!tR(l.symbol,l.leaf)),{recordsByLeaf:o,recordOrder:s}=w("twin-drift.group-by-leaf",()=>RG(i),()=>({records:i.length})),a=w("twin-drift.cluster-leaf-names",()=>Zx([...o.keys()]),()=>({leaves:o.size}));return w("twin-drift.compare-clusters",()=>{let l=[];for(let u of a){let d=vG(u,o,s);if(d.length<2||new Set(d.map(C=>C.file)).size<2)continue;let m=null,f=!1,p=!1,g=new Set;for(let C=0;C<d.length;C+=1)for(let x=C+1;x<d.length;x+=1){let S=d[C],b=d[x];if(S.file===b.file||!BG(S,b)||r?.(S,b,d)||r?.(b,S,d))continue;if(f=!0,g.add(S.symbol),g.add(b.symbol),S.normalizedBody===b.normalizedBody){p=!0;continue}let v=_G(S.tokens,b.tokens);(!m||v>m.similarity)&&(m={a:S,b,similarity:v})}if(!f)continue;let y=d.filter(C=>g.has(C.symbol)).sort((C,x)=>C.file.localeCompare(x.file)||C.startLine-x.startLine).map(TG);if(!m){l.push({leaf:Xx(u),relationship:p?"identical":"homonym",maxDivergence:0,members:y});continue}let h=m.similarity>=n?"divergent":"homonym";l.push({leaf:Xx(u),relationship:h,maxDivergence:Math.round((1-m.similarity)*1e3)/1e3,members:y,...h==="divergent"?{firstDivergentTokens:FG(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 RG(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 vG(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 IG(e,t){let n=w("twin-drift.load-definitions",()=>xe(e,{scope:t.scope}).filter(o=>wG(o)&&!e.isIgnored(o.relativePath)).filter(o=>!Gr(o.relativePath)));w("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=w("twin-drift.select-candidates",()=>DG(r),()=>({scanned:r.length}));return w("twin-drift.build-records",()=>{let o=[];for(let s of i){let a=EG(e,s);a&&o.push(a)}return o},()=>({candidates:i.length,scanned:r.length}))}function wG(e){return e.isFunctionLike?e.symbol.startsWith("rust-analyzer ")?typeof e.kind=="number"&&CG.has(e.kind):!0:!1}function DG(e){let t=e.filter(o=>o.leaf&&!oR(o.leaf)&&!Ie(o.symbol)&&!eR(o.symbol)&&!tR(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=Zx([...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=>Y(a.relativePath)==="test"))for(let a of s)i.add(a)}return e.filter(o=>i.has(o))}function EG(e,t){if(!t.leaf)return null;let n=an(e,t);if(!n||!le(t.symbol)&&!kG(n,t.leaf))return null;let r=rt(Mt(n)),i=r.replace(/\s+/g,"");if(!i||i.length<8)return null;let o=r.match(PG)??[];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:rR(r)}}function kG(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 PG=/[A-Za-z_$][A-Za-z0-9_$]*|\d+(?:\.\d+)?|[^\sA-Za-z0-9_$]/g;function TG(e){return{symbol:e.symbol,shortName:e.shortName,file:e.file,startLine:e.startLine,endLine:e.endLine,loc:e.loc}}function _G(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 FG(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 Zx(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)LG(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 LG(e,t){return e===t||e.toLowerCase()===t.toLowerCase()?!0:e.length<8||t.length<8||Math.abs(e.length-t.length)>2||NG(e.toLowerCase(),t.toLowerCase())/Math.max(e.length,t.length)<.8?!1:$G(e.toLowerCase(),t.toLowerCase(),2)}function NG(e,t){let n=Math.min(e.length,t.length),r=0;for(;r<n&&e[r]===t[r];)r+=1;return r}function AG(e){return/^[A-Z][A-Z0-9_]*$/.test(e)||/^__[^_].*__$/.test(e)||MG.has(e.toLowerCase())}var MG=new Set(["main","row"]),OG=new Set(["app","component","components","feature","features","impl","index","lib","route","routes","shared","src","tsx","typescript","ui"]);function eR(e){return e.startsWith("rust-analyzer ")&&/\/(?:tests?|benches?)\//.test(e)}var jG=new Set(["default","new","reset"]);function tR(e,t){return e.startsWith("rust-analyzer ")&&jG.has(t.toLowerCase())}function BG(e,t){if(e.leaf.toLowerCase()!==t.leaf.toLowerCase()||e.leaf.length>4)return!0;let n=Yx(e);return[...Yx(t)].some(r=>n.has(r))}function Yx(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&&!OG.has(n)))}function $G(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 nR(e){return rR(rt(Mt(e)))}function rR(e){let t=e.trim();if(!t||HG.test(t))return!1;let n=GG(t);return n.length===0||n.length>2?!1:WG(n[n.length-1])}var HG=/\b(?:if|else|for|while|switch|try|catch|do)\b/,UG=/^[A-Za-z_$][\w$]*(?:\.[A-Za-z_$][\w$]*|\[[^[\]]*\])*\((?:[^()]|\([^()]*\))*\)$/;function WG(e){let t=e.trim().replace(/^return\s+/,"").replace(/^await\s+/,"").replace(/;\s*$/,"").trim();return UG.test(t)}function GG(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 zG=3;function VG(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=iR(e,n,r,i,zG,new Set);return t.set(o,a),a}}function iR(e,t,n,r,i,o){if(i<=0||o.has(t.symbol)||(o.add(t.symbol),(pn(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(re(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))&&iR(e,c,n,r,i-1,o))return!0;return!1}function oR(e){return e.startsWith("<")&&e.endsWith(">")}function Xx(e){return[...e].sort()[0]}import{readFileSync as qG,readdirSync as KG}from"fs";import{basename as JG,join as cm}from"path";function YG(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 lm(e,t){let n=XG(e,t.file,t.keys);if(!n.ok)return{name:t.name,file:t.file,status:"unavailable",missing:[],extra:[],unavailableReason:n.reason};let r=rz(e.config.projectRoot,t.mustEqual),i=YG(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 aR(e,t){return t.map(n=>lm(e,n))}function cR(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=>ar(n.pattern,r));case"registered-commands":return t.has("docs/COMMAND_REFERENCE.md");case"builtin-skills":return[...t].some(r=>r.startsWith("skills/"))}}function lR(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 XG(e,t,n){return n.type==="markdown-list"?nz(e,t,n.marker):QG(e,t,n)}function QG(e,t,n){if(!P(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=q(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"?ZG(o,n.identifier):tz(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 uR(e){let t=e.childForFieldName("value");return t?t.type==="as_expression"||t.type==="satisfies_expression"?t.namedChild(0):t:null}function ZG(e,t){for(let n of e.rootNode.descendantsOfType("variable_declarator")){if(n.childForFieldName("name")?.text!==t)continue;let i=uR(n);if(i?.type==="object")return ez(i)}return null}function ez(e){let t=new Set;for(let n of e.namedChildren)if(n.type==="pair"){let r=n.childForFieldName("key");r&&t.add(dR(r.text))}else n.type==="shorthand_property_identifier"&&t.add(n.text);return[...t].sort()}function tz(e,t){for(let n of e.rootNode.descendantsOfType("variable_declarator")){if(n.childForFieldName("name")?.text!==t)continue;let i=uR(n);if(i?.type!=="array")continue;let o=new Set;for(let s of i.namedChildren)s.type==="string"&&o.add(dR(s.text));return[...o].sort()}return null}function dR(e){return e.length>=2&&(e[0]==="'"&&e.endsWith("'")||e[0]==='"'&&e.endsWith('"'))?e.slice(1,-1):e}function nz(e,t,n){let r=P(e,t);if(!r)return{ok:!1,reason:`file not found: ${t}`};let i=mR(r,n);return i===null?{ok:!1,reason:`no <!-- BEGIN GENERATED ${n} --> ... <!-- END GENERATED ${n} --> block in ${t}`}:{ok:!0,keys:fR(i)}}function mR(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 fR(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 rz(e,t){switch(t.type){case"top-level-dirs":return sR(cm(e,t.path));case"file-glob":return[...new Set(dC(e,t.pattern).map(n=>JG(n)))].sort();case"registered-commands":return iz(e);case"builtin-skills":return sR(cm(e,"skills"))}}function sR(e){let t;try{t=KG(e,{withFileTypes:!0})}catch{return[]}return t.filter(n=>n.isDirectory()&&!n.name.startsWith(".")).map(n=>n.name).sort()}function iz(e){let t;try{t=qG(cm(e,"docs/COMMAND_REFERENCE.md"),"utf-8")}catch{return[]}let n=mR(t,"COMMAND REFERENCE");return n?fR(n):[]}import{existsSync as RR,readFileSync as vR,writeFileSync as cV}from"fs";import{isAbsolute as lV,join as uV}from"path";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 wo from"path";function Eo(e,t){let{scope:n,minDeviation:r=5,limit:i=50}=t??{},o=t?.semantic!==!1,s=t?.includePatternDeviations===!0,c=new _(e).fileDependencyGraph(n),l=qr(e,{scope:n}),u=lz([...oz(e,c,{scope:n,semantic:o}),...az(l.forbiddenEdges),...s?cz(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 oz(e,t,n){let r=mz(e,n.scope),i=[],o=new Set;for(let[a,c]of t){if(Do(a))continue;let l=r.get(a)??new Set;for(let u of c)Do(u)||l.has(u)||sz(e,a,u,n)||(i.push({file:a,dep:u}),o.add(a))}o.size>0&&gz(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 sz(e,t,n,r){return bz(e,t,n)||Sz(e,t,n)||hz(n)||xz(e,t,n)||Cz(n)?!0:r.semantic&&yz(e,t,n)}function az(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 cz(e,t){let n=[];for(let[r,i]of uz(e)){let o=i.filter(a=>!Do(a));if(o.length<t)continue;let s=dz(e,o);for(let a of o)for(let c of e.get(a)??[])Do(c)||(s.get(c)??0)===1&&wo.dirname(c)!==r&&wo.dirname(c)!==wo.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 lz(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 uz(e){let t=new Map;for(let n of e.keys()){let r=wo.dirname(n),i=t.get(r);i||(i=[],t.set(r,i)),i.push(n)}return t}function dz(e,t){let n=new Map;for(let r of t)for(let i of e.get(r)??[])Do(i)||n.set(i,(n.get(i)??0)+1);return n}function mz(e,t){let n=new Map;return fz(e,n,t),n}function fz(e,t,n){for(let r of pz(e,n))pR(e,t,r.from_file,r.to_file)}function pz(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
768
  FROM mentions m
769
769
  JOIN chunks c ON m.chunk_id = c.id
770
770
  JOIN documents d1 ON c.document_id = d1.id
@@ -780,23 +780,23 @@ ${n}`.toLowerCase(),i=ur(r,["historical note","historical record","history note"
780
780
  WHERE d1.id != d2.id
781
781
  AND m.role != 1
782
782
  ${e.pathExclusionsFor("d1","d2")}
783
- ${n}`,...r)}function pz(e,t,n={}){new _(e).scanSourceReferences({paths:n.paths??N(e,{includeIgnored:!1}),includeRustAttributeNames:!0,identifierResolution:"permissive"},i=>{i.target.relativePath!==i.sourceFile&&(e.isIgnored(i.target.relativePath)||fR(e,t,i.sourceFile,i.target.relativePath))})}function fR(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 gz(e){return e.includes("types")||e.endsWith(".d.ts")}function hz(e,t,n){let r=Wi(e,t).filter(i=>i.sourcePath===n);return r.length>0&&r.some(i=>i.isUsed)}function yz(e,t,n){let r=re(e,t).filter(i=>i.sourcePath===n);return r.length>0&&r.some(i=>i.used)}function bz(e,t,n){let r=re(e,t).filter(i=>i.sourcePath===n);return r.length>0&&r.every(i=>i.isTypeOnly===!0)}function Sz(e){return e.endsWith(".vue")}function Cz(e,t,n){let r=re(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 Do(e){let t=Y(e);return!!(t==="entry"||t==="barrel"||t==="test"||t==="worker"||xz(wo.basename(e)))}function xz(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 pR,extname as gR}from"path";function Xa(e,t,n,r,i,o){let s=new Set;vz(e,t,n,r)&&s.add(i);for(let a of o)a.value&&Rz(s,a.label,a.value);return[...s].slice(0,6)}function Rz(e,t,n){let r=Iz(n);t.endsWith("name")&&wz(r)&&e.add(`${t} has type-guard boundary shape`);for(let i of r){let o=Dz.get(i);o&&e.add(`${t} has ${o} term: ${i}`)}}function vz(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(di(s)===r)return!0;if(!s.startsWith("//")&&!s.startsWith("*")&&!s.startsWith("/*")&&!s.startsWith("@")&&!s.startsWith("#"))return!1}}return!1}function Iz(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=>Ez.has(t))&&e.some(t=>kz.has(t))}var Dz=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"]]),Ez=new Set(["can","has","is","should"]),kz=new Set(["access","api","auth","collision","expired","input","keyboard","overlap","permission","permissions","policy","projectile","response","route","routes","scope"]);function ko(e,t){let{scope:n,maxLoc:r=15,limit:i=30,scanLimit:o}=t??{},s=new _(e);return ft({candidates:()=>Mz(e,s,n,r),orderCandidates:ka,scanLimit:o,profile:{name:"passthrough-candidates"},prepare:a=>s.calleeMap(a,{semantic:t?.semantic!==!1}),evaluate:(a,c)=>Pz(e,a,c.get(a.symbolId)??[]),orderResults:(a,c)=>a.loc-c.loc||a.file.localeCompare(c.file),limit:i})}function Pz(e,t,n){let r=Az(n);if(r.size!==1||!Uc(e,t.relativePath,t.startLine,t.endLine))return null;let[,i]=[...r.entries()][0],o=Tz(e,t,i),s=Fz(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:_z(a,o,s)}}function Tz(e,t,n){return Xa(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:pR(t.relativePath,gR(t.relativePath))},{label:"callee module",value:pR(n.file,gR(n.file))}])}function _z(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(Nz);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 Fz(e,t){return Po(e,t)?ir(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 Po(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:Lz(n,r)}function Lz(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 Nz(e){return e.includes("public surface")}function Az(e){let t=e.some(r=>ee(r.symbol))?e.filter(r=>ee(r.symbol)):e,n=new Map;for(let r of t)n.has(r.symbol)||n.set(r.symbol,r);return n}function Mz(e,t,n,r){return t.productionCallableDefinitions({scope:n,minLoc:3,maxLoc:r,requireFunctionLikeSymbol:!0,excludeRustTraitImplMembers:!0}).filter(i=>!gi(e,i))}function To(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 _(e),u=l.scopedDefinitions(n),d=Kz(l,n),m={high:0,medium:1,low:2};return ft({candidates:()=>Oz(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=Bz(f),g=jz(e,l,f,p,{semantic:c}),y=f.filter(h=>{let C=Qa(e,h,g,p);return C.realConsumers.length<=1&&!C.transitivelyReachable&&hR(h,C.realConsumers.length,d)});return{consumerFileMap:g,singletonBackedClassIds:Uz(e,l,u,y,{semantic:c}),candidateIndex:p}},evaluate:(f,p)=>{if(p.singletonBackedClassIds.has(f.symbolId))return null;let g=Qa(e,f,p.consumerFileMap,p.candidateIndex);if(g.transitivelyReachable||g.realConsumers.length>1||g.realConsumers.length===0&&g.barrelConsumers>0||!hR(g.definition,g.realConsumers.length,d))return null;let y=$z(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 Oz(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=>Y(i.relativePath)!=="test").filter(i=>!de(e,i.symbol,i.relativePath)).filter(i=>!Jz(i.symbol)).filter(i=>!t.hasSuppressionComment(i))}function lm(e,t,n,r){return on(rn(e,t).forDefinitions(n,{semantic:r.semantic,sourceFallback:r.sourceFallback}))}function jz(e,t,n,r,i){let o=lm(e,t,n,{semantic:!1,sourceFallback:!1}),s=n.filter(l=>{let u=Qa(e,l,o,r);return u.realConsumers.length<=1&&!(u.realConsumers.length>0&&um(l.relativePath))}),a=i.semantic&&s.length>0?nn(o,lm(e,t,s,{semantic:!0,sourceFallback:!1})):o,c=s.filter(l=>Qa(e,l,a,r).realConsumers.length<=1);return nn(a,lm(e,t,c,{semantic:!1,sourceFallback:!0}))}function Bz(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 Qa(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}=ja(e,t,o),l=Yz(e,t,n,r);return{definition:t,realConsumers:s,barrelConsumers:a+c,transitivelyReachable:l}}function $z(e,t){let n=bR(e,t.definition.relativePath,t.definition.startLine),r=um(t.definition.relativePath)?!0:Xz(e,t.definition),{confidence:i,reason:o}=Qz(t.realConsumers.length,n,r),s=Hz(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 Hz(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 Uz(e,t,n,r,i){let o=Gz(e,Wz(n),r),s=o.map(l=>l.singleton);if(o.length===0)return new Set;let a=on(rn(e,t).forDefinitions(s,{semantic:i.semantic,sourceFallback:!0})),c=new Set;for(let{singleton:l,classId:u}of o)Vz(e,l,a)&&c.add(u);return c}function Wz(e){let t=new Map;for(let n of e){let r=T(n.symbol);r&&t.set(yR(n.relativePath,r),n)}return t}function Gz(e,t,n){let r=[];for(let i of n){let o=zz(e,t,i);o&&r.push({singleton:o,classId:i.symbolId})}return r}function zz(e,t,n){if(bR(e,n.relativePath,n.startLine)!=="class")return null;let r=T(n.symbol);if(!r)return null;let i=qz(e,n.relativePath,r);return i?t.get(yR(n.relativePath,i))??null:null}function Vz(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)&&!_d(e,o,r))}function yR(e,t){return`${e}\0${t}`}function qz(e,t,n){let r=P(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 Kz(e,t){return new Set(e.scopedDefinitions(t).filter(n=>n.isFunctionLike).map(n=>n.relativePath))}function Jz(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 um(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 hR(e,t,n){return!(um(e.relativePath)&&t>0||t===0&&n.has(e.relativePath))}function Yz(e,t,n,r){let i=Gc(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 bR(e,t,n){let r=P(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 Xz(e,t){let n=P(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 Qz(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 ri,extname as Za}from"path";function _o(e,t){let{scope:n,maxLoc:r=15,limit:i=30,scanLimit:o}=t??{},s=new _(e),a=iV(s.fileDependencyGraph(n));return ft({candidates:()=>tV(e,s,n,r),orderCandidates:ka,scanLimit:o,profile:{name:"wrapper-candidates"},prepare:c=>({callerFileMap:Zz(e,s,c,{semantic:t?.semantic!==!1}),reverseFanIn:a}),evaluate:(c,l)=>eV(e,s,c,l),orderResults:(c,l)=>l.callerFanIn-c.callerFanIn||l.loc-c.loc,limit:i})}function Zz(e,t,n,r){let i=rn(e,t),o=on(i.forDefinitions(n,{semantic:!1,sourceFallback:!1})),s=[];r.semantic&&w("wrapper.semantic-candidates",()=>{s=n.filter(m=>dm(e,t,m,o).length<=1)},()=>({symbols:n.length,semanticCandidates:s.length}));let a=s.length===0?new Map:on(i.forDefinitions(s,{semantic:!0,sourceFallback:!1})),c=a.size===0?o:nn(o,a),l=new Map(n.map(m=>[m.symbolId,m])),u=new Map;for(let m of n){let f=dm(e,t,m,c);if(f.length>1||(u.set(m.symbolId,m),f.length!==1))continue;let p=f[0],g=SR(e,m.symbolId,p);if(!g)continue;let y=CR(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:nn(c,on(i.forDefinitions(d,{semantic:!1,sourceFallback:!0})))}function eV(e,t,n,r){let i=dm(e,t,n,r.callerFileMap);if(i.length!==1)return null;let o=i[0],s=SR(e,n.symbolId,o);if(!s)return null;let a=CR(t,e,o,n.symbol,s);if(a&&hr(a.symbol))return null;let{fanIn:c,source:l}=nV(r.callerFileMap,r.reverseFanIn,o,a);if(l==="function"?c<=3:c<=5)return null;let u=sV(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):ri(o),callerFanIn:c,actionTier:u.length>0?"signal":"direct",boundaryEvidence:u}}function tV(e,t,n,r){return t.productionCallableDefinitions({scope:n,minLoc:2,maxLoc:r,requireFunctionLikeSymbol:!0,excludeRootedSymbols:!0,excludeRustTraitImplMembers:!0}).filter(i=>!gi(e,i))}function dm(e,t,n,r){let i=ri(n.relativePath,Za(n.relativePath)),o=[...r.get(n.symbolId)??[]].filter(s=>s!==n.relativePath).filter(s=>ri(s,Za(s))!==i).filter(s=>{let a=t.fileKind(s);return a!=="barrel"&&a!=="entry"&&a!=="test"});return ja(e,n,o).realConsumers}function SR(e,t,n){return e.get(`SELECT c.start_line, c.end_line
783
+ ${n}`,...r)}function gz(e,t,n={}){new _(e).scanSourceReferences({paths:n.paths??N(e,{includeIgnored:!1}),includeRustAttributeNames:!0,identifierResolution:"permissive"},i=>{i.target.relativePath!==i.sourceFile&&(e.isIgnored(i.target.relativePath)||pR(e,t,i.sourceFile,i.target.relativePath))})}function pR(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 hz(e){return e.includes("types")||e.endsWith(".d.ts")}function yz(e,t,n){let r=Wi(e,t).filter(i=>i.sourcePath===n);return r.length>0&&r.some(i=>i.isUsed)}function bz(e,t,n){let r=re(e,t).filter(i=>i.sourcePath===n);return r.length>0&&r.some(i=>i.used)}function Sz(e,t,n){let r=re(e,t).filter(i=>i.sourcePath===n);return r.length>0&&r.every(i=>i.isTypeOnly===!0)}function Cz(e){return e.endsWith(".vue")}function xz(e,t,n){let r=re(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 Do(e){let t=Y(e);return!!(t==="entry"||t==="barrel"||t==="test"||t==="worker"||Rz(wo.basename(e)))}function Rz(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 gR,extname as hR}from"path";function Qa(e,t,n,r,i,o){let s=new Set;Iz(e,t,n,r)&&s.add(i);for(let a of o)a.value&&vz(s,a.label,a.value);return[...s].slice(0,6)}function vz(e,t,n){let r=wz(n);t.endsWith("name")&&Dz(r)&&e.add(`${t} has type-guard boundary shape`);for(let i of r){let o=Ez.get(i);o&&e.add(`${t} has ${o} term: ${i}`)}}function Iz(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(di(s)===r)return!0;if(!s.startsWith("//")&&!s.startsWith("*")&&!s.startsWith("/*")&&!s.startsWith("@")&&!s.startsWith("#"))return!1}}return!1}function wz(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 Dz(e){return e.some(t=>kz.has(t))&&e.some(t=>Pz.has(t))}var Ez=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"]]),kz=new Set(["can","has","is","should"]),Pz=new Set(["access","api","auth","collision","expired","input","keyboard","overlap","permission","permissions","policy","projectile","response","route","routes","scope"]);function ko(e,t){let{scope:n,maxLoc:r=15,limit:i=30,scanLimit:o}=t??{},s=new _(e);return ft({candidates:()=>Oz(e,s,n,r),orderCandidates:Pa,scanLimit:o,profile:{name:"passthrough-candidates"},prepare:a=>s.calleeMap(a,{semantic:t?.semantic!==!1}),evaluate:(a,c)=>Tz(e,a,c.get(a.symbolId)??[]),orderResults:(a,c)=>a.loc-c.loc||a.file.localeCompare(c.file),limit:i})}function Tz(e,t,n){let r=Mz(n);if(r.size!==1||!Wc(e,t.relativePath,t.startLine,t.endLine))return null;let[,i]=[...r.entries()][0],o=_z(e,t,i),s=Lz(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:Fz(a,o,s)}}function _z(e,t,n){return Qa(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:gR(t.relativePath,hR(t.relativePath))},{label:"callee module",value:gR(n.file,hR(n.file))}])}function Fz(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(Az);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 Lz(e,t){return Po(e,t)?ir(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 Po(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:Nz(n,r)}function Nz(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 Az(e){return e.includes("public surface")}function Mz(e){let t=e.some(r=>ee(r.symbol))?e.filter(r=>ee(r.symbol)):e,n=new Map;for(let r of t)n.has(r.symbol)||n.set(r.symbol,r);return n}function Oz(e,t,n,r){return t.productionCallableDefinitions({scope:n,minLoc:3,maxLoc:r,requireFunctionLikeSymbol:!0,excludeRustTraitImplMembers:!0}).filter(i=>!gi(e,i))}function To(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 _(e),u=l.scopedDefinitions(n),d=Jz(l,n),m={high:0,medium:1,low:2};return ft({candidates:()=>jz(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=$z(f),g=Bz(e,l,f,p,{semantic:c}),y=f.filter(h=>{let C=Za(e,h,g,p);return C.realConsumers.length<=1&&!C.transitivelyReachable&&yR(h,C.realConsumers.length,d)});return{consumerFileMap:g,singletonBackedClassIds:Wz(e,l,u,y,{semantic:c}),candidateIndex:p}},evaluate:(f,p)=>{if(p.singletonBackedClassIds.has(f.symbolId))return null;let g=Za(e,f,p.consumerFileMap,p.candidateIndex);if(g.transitivelyReachable||g.realConsumers.length>1||g.realConsumers.length===0&&g.barrelConsumers>0||!yR(g.definition,g.realConsumers.length,d))return null;let y=Hz(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 jz(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=>Y(i.relativePath)!=="test").filter(i=>!de(e,i.symbol,i.relativePath)).filter(i=>!Yz(i.symbol)).filter(i=>!t.hasSuppressionComment(i))}function um(e,t,n,r){return on(rn(e,t).forDefinitions(n,{semantic:r.semantic,sourceFallback:r.sourceFallback}))}function Bz(e,t,n,r,i){let o=um(e,t,n,{semantic:!1,sourceFallback:!1}),s=n.filter(l=>{let u=Za(e,l,o,r);return u.realConsumers.length<=1&&!(u.realConsumers.length>0&&dm(l.relativePath))}),a=i.semantic&&s.length>0?nn(o,um(e,t,s,{semantic:!0,sourceFallback:!1})):o,c=s.filter(l=>Za(e,l,a,r).realConsumers.length<=1);return nn(a,um(e,t,c,{semantic:!1,sourceFallback:!0}))}function $z(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 Za(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}=Ba(e,t,o),l=Xz(e,t,n,r);return{definition:t,realConsumers:s,barrelConsumers:a+c,transitivelyReachable:l}}function Hz(e,t){let n=SR(e,t.definition.relativePath,t.definition.startLine),r=dm(t.definition.relativePath)?!0:Qz(e,t.definition),{confidence:i,reason:o}=Zz(t.realConsumers.length,n,r),s=Uz(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 Uz(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 Wz(e,t,n,r,i){let o=zz(e,Gz(n),r),s=o.map(l=>l.singleton);if(o.length===0)return new Set;let a=on(rn(e,t).forDefinitions(s,{semantic:i.semantic,sourceFallback:!0})),c=new Set;for(let{singleton:l,classId:u}of o)qz(e,l,a)&&c.add(u);return c}function Gz(e){let t=new Map;for(let n of e){let r=T(n.symbol);r&&t.set(bR(n.relativePath,r),n)}return t}function zz(e,t,n){let r=[];for(let i of n){let o=Vz(e,t,i);o&&r.push({singleton:o,classId:i.symbolId})}return r}function Vz(e,t,n){if(SR(e,n.relativePath,n.startLine)!=="class")return null;let r=T(n.symbol);if(!r)return null;let i=Kz(e,n.relativePath,r);return i?t.get(bR(n.relativePath,i))??null:null}function qz(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)&&!Fd(e,o,r))}function bR(e,t){return`${e}\0${t}`}function Kz(e,t,n){let r=P(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 Jz(e,t){return new Set(e.scopedDefinitions(t).filter(n=>n.isFunctionLike).map(n=>n.relativePath))}function Yz(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 dm(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 yR(e,t,n){return!(dm(e.relativePath)&&t>0||t===0&&n.has(e.relativePath))}function Xz(e,t,n,r){let i=zc(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 SR(e,t,n){let r=P(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 Qz(e,t){let n=P(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 Zz(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 ri,extname as ec}from"path";function _o(e,t){let{scope:n,maxLoc:r=15,limit:i=30,scanLimit:o}=t??{},s=new _(e),a=oV(s.fileDependencyGraph(n));return ft({candidates:()=>nV(e,s,n,r),orderCandidates:Pa,scanLimit:o,profile:{name:"wrapper-candidates"},prepare:c=>({callerFileMap:eV(e,s,c,{semantic:t?.semantic!==!1}),reverseFanIn:a}),evaluate:(c,l)=>tV(e,s,c,l),orderResults:(c,l)=>l.callerFanIn-c.callerFanIn||l.loc-c.loc,limit:i})}function eV(e,t,n,r){let i=rn(e,t),o=on(i.forDefinitions(n,{semantic:!1,sourceFallback:!1})),s=[];r.semantic&&w("wrapper.semantic-candidates",()=>{s=n.filter(m=>mm(e,t,m,o).length<=1)},()=>({symbols:n.length,semanticCandidates:s.length}));let a=s.length===0?new Map:on(i.forDefinitions(s,{semantic:!0,sourceFallback:!1})),c=a.size===0?o:nn(o,a),l=new Map(n.map(m=>[m.symbolId,m])),u=new Map;for(let m of n){let f=mm(e,t,m,c);if(f.length>1||(u.set(m.symbolId,m),f.length!==1))continue;let p=f[0],g=CR(e,m.symbolId,p);if(!g)continue;let y=xR(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:nn(c,on(i.forDefinitions(d,{semantic:!1,sourceFallback:!0})))}function tV(e,t,n,r){let i=mm(e,t,n,r.callerFileMap);if(i.length!==1)return null;let o=i[0],s=CR(e,n.symbolId,o);if(!s)return null;let a=xR(t,e,o,n.symbol,s);if(a&&hr(a.symbol))return null;let{fanIn:c,source:l}=rV(r.callerFileMap,r.reverseFanIn,o,a);if(l==="function"?c<=3:c<=5)return null;let u=aV(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):ri(o),callerFanIn:c,actionTier:u.length>0?"signal":"direct",boundaryEvidence:u}}function nV(e,t,n,r){return t.productionCallableDefinitions({scope:n,minLoc:2,maxLoc:r,requireFunctionLikeSymbol:!0,excludeRootedSymbols:!0,excludeRustTraitImplMembers:!0}).filter(i=>!gi(e,i))}function mm(e,t,n,r){let i=ri(n.relativePath,ec(n.relativePath)),o=[...r.get(n.symbolId)??[]].filter(s=>s!==n.relativePath).filter(s=>ri(s,ec(s))!==i).filter(s=>{let a=t.fileKind(s);return a!=="barrel"&&a!=="entry"&&a!=="test"});return Ba(e,n,o).realConsumers}function CR(e,t,n){return e.get(`SELECT c.start_line, c.end_line
787
787
  FROM mentions m
788
788
  JOIN chunks c ON m.chunk_id = c.id
789
789
  JOIN documents d ON c.document_id = d.id
790
790
  WHERE m.symbol_id = ? AND m.role != 1 AND d.relative_path = ?
791
- LIMIT 1`,t,n)}function CR(e,t,n,r,i){let o=e.definitionsForFile(n),s=rV(t,n,r,i.start_line,i.end_line);return wt(o,s)}function nV(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:oV(t,n),source:"file"}}function rV(e,t,n,r,i){let o=T(n);if(!o)return r;let s=Yt(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 iV(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 oV(e,t){let n=e.get(t)??0;if(n>0)return n;let r=ri(t,Za(t)),i=0;for(let[o,s]of e)o!==t&&ri(o,Za(o))===r&&s>i&&(i=s);return i}function sV(e,t,n,r){return Xa(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):ri(n)},{label:"wrapper path",value:t.relativePath},{label:"caller path",value:n}])}var uV=25e3,dV=2500,mV=2500;function fV(e){let t=or(e);return t.symbols>=uV||t.documents>=dV?mV:void 0}var pV=".scipquery-baseline.json";function ii(e,t){return t&&cV(t)?t:lV(e.config.projectRoot,t??pV)}function mm(e,t={}){let{scope:n}=t,r=fV(e),i=[],o=sr(e,{scope:n,...me.dead,scanLimit:r});for(let s of o.symbols)Ee(e,s.relativePath)||de(e,s.symbol,s.relativePath)||s.kind==="dead-code"&&i.push(`dead:${s.relativePath}:${s.shortName}`);for(let s of uo(e,{scope:n,...me.isolated,scanLimit:r}))Ee(e,s.relativePath)||de(e,s.symbol,s.relativePath)||i.push(`isolated:${s.relativePath}:${s.shortName}`);for(let s of lo(e,{scope:n}))s.kind==="real"&&i.push(`cycle:${gV(s.path)}`);for(let s of mo(e,{scope:n,...me.similar,scanLimit:r}))i.push(`similar:${[s.symbolA,s.symbolB].sort().join("|")}`);for(let s of Io(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 yo(e,{scope:n,...me.extract,scanLimit:r}))i.push(`extract:${s.relativePath}:${s.shortName}`);for(let s of _o(e,{scope:n,...me.wrappers,scanLimit:r}))i.push(`wrapper:${s.file}:${s.shortName}`);for(let s of ko(e,{scope:n,...me.passthroughs,scanLimit:r}))i.push(`passthrough:${s.file}:${s.shortName}`);for(let s of To(e,{scope:n,...me.stale,scanLimit:r}))i.push(`stale:${s.file}:${s.shortName}`);for(let s of Eo(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(...Cd(qr(e,{scope:n}))),[...new Set(i)].sort()}function gV(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 hV(e,t={}){let n=mm(e,{scope:t.scope}),r=ii(e,t.path);return aV(r,JSON.stringify({version:1,findings:n},null,2)+`
792
- `),{path:r,findingCount:n.length}}function fm(e,t={}){let n=ii(e,t.path);if(!xR(n))throw new Error(`No baseline found at ${n}. Create one with: scip-query health --write-baseline`);let r=JSON.parse(RR(n,"utf-8")),i=new Set(r.findings??[]),o=mm(e,{scope:t.scope}),s=new Set(o);return{baselinePath:n,baselineCount:i.size,current:o,newFindings:o.filter(a=>!i.has(a)),fixedFindings:[...i].filter(a=>!s.has(a))}}function vR(e,t={}){let n=ii(e,t.path);if(!xR(n))throw new Error(`No baseline found at ${n}. Create one with: scip-query health --write-baseline`);let r=JSON.parse(RR(n,"utf-8")),i=new Set((r.findings??[]).filter(a=>a.startsWith(cr))),o=Cd(qr(e,{scope:t.scope})),s=new Set(o);return{baselinePath:n,baselineCount:i.size,current:o,newFindings:o.filter(a=>!i.has(a)),fixedFindings:[...i].filter(a=>!s.has(a))}}var yV=5;function gm(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??Fn(e,{base:n}),d={available:u.note!==Co,base:n,changedFiles:u.changedFiles,helpersChecked:0,skipped:[],findings:[]};if(!d.available||u.changedFiles.length===0)return d;let m=new _(e),f=new Set(u.changedFiles),p=new Map(u.renamedFiles.map(R=>[R.to,R.from])),g=t.baseContentAt??xo(e.config.projectRoot,n,Ro(u)),y=vV(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 C=m.calleeMap(h,{semantic:l}),x=h.map(R=>({def:R,callees:Na((C.get(R.symbolId)??[]).map(E=>E.symbol))})),S=Yr(e),b,v=()=>(b??=S.calleeIndex({minCallees:Math.min(3,i),scanLimit:c,semantic:l}),b);for(let{def:R,callees:E}of x){let D=I(R.symbol);if(E.size<i){d.skipped.push({helperShortName:D,helperFile:R.relativePath,reason:`fewer than ${i} meaningful callees \u2014 too small to score`});continue}let k=v(),L=RV(E,k);if(L===0){d.skipped.push({helperShortName:D,helperFile:R.relativePath,reason:"helper callee pattern is all project-wide infrastructure \u2014 too generic to score"});continue}let ne=IV(e,R.symbolId);if(ne.length===0){d.skipped.push({helperShortName:D,helperFile:R.relativePath,reason:"no references yet \u2014 covered by the new-dead check"});continue}d.helpersChecked+=1;let X=bV({candidateIndex:k,changed:f,helperCallees:E,helperFile:R.relativePath,helperSymbol:R.symbol,minContainment:r,minSiteCoverage:o,migratedFiles:ne});X.length!==0&&(X.sort((F,ae)=>IR(ae.migrationScope)-IR(F.migrationScope)||ae.containment-F.containment||ae.siteCoverage-F.siteCoverage||F.file.localeCompare(ae.file)),d.findings.push({helperSymbol:R.symbol,helperShortName:D,helperFile:R.relativePath,helperShape:"specific-callee-cluster",helperCalleeCount:E.size,specificHelperCalleeCount:L,migratedFiles:ne.sort(),leftovers:X.slice(0,yV)}))}return d.findings.sort((R,E)=>(E.leftovers[0]?.containment??0)-(R.leftovers[0]?.containment??0)||R.helperFile.localeCompare(E.helperFile)),d.findings=d.findings.slice(0,a),d}function bV(e){let t=[],n=SV(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=hC(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=CV(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 SV(e,t,n){let r=new Set([...pm(t),...hm(T(e))]);for(let i of n)for(let o of pm(i))r.add(o);return r}function CV(e,t,n){let r=new Set([...pm(n),...hm(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 xV=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 pm(e){return hm(e.replace(/\.[^.]+$/,""))}function hm(e){return e.replace(/([a-z0-9])([A-Z])/g,"$1 $2").toLowerCase().split(/[^a-z0-9]+/).filter(t=>t.length>1&&!xV.has(t))}function RV(e,t){let n=0;for(let r of e)(t.docFreq.get(r)??0)<=t.ubiquityThreshold&&(n+=1);return n}function vV(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 IV(e,t){return e.all(`SELECT DISTINCT ref_d.relative_path
791
+ LIMIT 1`,t,n)}function xR(e,t,n,r,i){let o=e.definitionsForFile(n),s=iV(t,n,r,i.start_line,i.end_line);return wt(o,s)}function rV(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:sV(t,n),source:"file"}}function iV(e,t,n,r,i){let o=T(n);if(!o)return r;let s=Yt(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 oV(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 sV(e,t){let n=e.get(t)??0;if(n>0)return n;let r=ri(t,ec(t)),i=0;for(let[o,s]of e)o!==t&&ri(o,ec(o))===r&&s>i&&(i=s);return i}function aV(e,t,n,r){return Qa(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):ri(n)},{label:"wrapper path",value:t.relativePath},{label:"caller path",value:n}])}var dV=25e3,mV=2500,fV=2500;function pV(e){let t=or(e);return t.symbols>=dV||t.documents>=mV?fV:void 0}var gV=".scipquery-baseline.json";function fm(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&&lV(t)?t:uV(e.config.projectRoot,t??gV)}function pm(e,t={}){let{scope:n}=t,r=pV(e),i=[],o=sr(e,{scope:n,...me.dead,scanLimit:r});for(let s of o.symbols)Ee(e,s.relativePath)||de(e,s.symbol,s.relativePath)||s.kind==="dead-code"&&i.push(`dead:${s.relativePath}:${s.shortName}`);for(let s of uo(e,{scope:n,...me.isolated,scanLimit:r}))Ee(e,s.relativePath)||de(e,s.symbol,s.relativePath)||i.push(`isolated:${s.relativePath}:${s.shortName}`);for(let s of lo(e,{scope:n}))s.kind==="real"&&i.push(`cycle:${hV(s.path)}`);for(let s of mo(e,{scope:n,...me.similar,scanLimit:r}))i.push(`similar:${[s.symbolA,s.symbolB].sort().join("|")}`);for(let s of Io(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 yo(e,{scope:n,...me.extract,scanLimit:r}))i.push(`extract:${s.relativePath}:${s.shortName}`);for(let s of _o(e,{scope:n,...me.wrappers,scanLimit:r}))i.push(`wrapper:${s.file}:${s.shortName}`);for(let s of ko(e,{scope:n,...me.passthroughs,scanLimit:r}))i.push(`passthrough:${s.file}:${s.shortName}`);for(let s of To(e,{scope:n,...me.stale,scanLimit:r}))i.push(`stale:${s.file}:${s.shortName}`);for(let s of Eo(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(...xd(qr(e,{scope:n}))),[...new Set(i.map(fm))].sort()}function hV(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 yV(e,t={}){let n=pm(e,{scope:t.scope}),r=ii(e,t.path);return cV(r,JSON.stringify({version:1,findings:n},null,2)+`
792
+ `),{path:r,findingCount:n.length}}function gm(e,t={}){let n=ii(e,t.path);if(!RR(n))throw new Error(`No baseline found at ${n}. Create one with: scip-query health --write-baseline`);let r=JSON.parse(vR(n,"utf-8")),i=new Set((r.findings??[]).map(fm)),o=pm(e,{scope:t.scope}),s=new Set(o);return{baselinePath:n,baselineCount:i.size,current:o,newFindings:o.filter(a=>!i.has(a)),fixedFindings:[...i].filter(a=>!s.has(a))}}function IR(e,t={}){let n=ii(e,t.path);if(!RR(n))throw new Error(`No baseline found at ${n}. Create one with: scip-query health --write-baseline`);let r=JSON.parse(vR(n,"utf-8")),i=new Set((r.findings??[]).map(fm).filter(a=>a.startsWith(cr))),o=xd(qr(e,{scope:t.scope})),s=new Set(o);return{baselinePath:n,baselineCount:i.size,current:o,newFindings:o.filter(a=>!i.has(a)),fixedFindings:[...i].filter(a=>!s.has(a))}}var bV=5;function ym(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??Fn(e,{base:n}),d={available:u.note!==Co,base:n,changedFiles:u.changedFiles,helpersChecked:0,skipped:[],findings:[]};if(!d.available||u.changedFiles.length===0)return d;let m=new _(e),f=new Set(u.changedFiles),p=new Map(u.renamedFiles.map(R=>[R.to,R.from])),g=t.baseContentAt??xo(e.config.projectRoot,n,Ro(u)),y=IV(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 C=m.calleeMap(h,{semantic:l}),x=h.map(R=>({def:R,callees:Aa((C.get(R.symbolId)??[]).map(E=>E.symbol))})),S=Yr(e),b,v=()=>(b??=S.calleeIndex({minCallees:Math.min(3,i),scanLimit:c,semantic:l}),b);for(let{def:R,callees:E}of x){let D=I(R.symbol);if(E.size<i){d.skipped.push({helperShortName:D,helperFile:R.relativePath,reason:`fewer than ${i} meaningful callees \u2014 too small to score`});continue}let k=v(),L=vV(E,k);if(L===0){d.skipped.push({helperShortName:D,helperFile:R.relativePath,reason:"helper callee pattern is all project-wide infrastructure \u2014 too generic to score"});continue}let ne=wV(e,R.symbolId);if(ne.length===0){d.skipped.push({helperShortName:D,helperFile:R.relativePath,reason:"no references yet \u2014 covered by the new-dead check"});continue}d.helpersChecked+=1;let X=SV({candidateIndex:k,changed:f,helperCallees:E,helperFile:R.relativePath,helperSymbol:R.symbol,minContainment:r,minSiteCoverage:o,migratedFiles:ne});X.length!==0&&(X.sort((F,ae)=>wR(ae.migrationScope)-wR(F.migrationScope)||ae.containment-F.containment||ae.siteCoverage-F.siteCoverage||F.file.localeCompare(ae.file)),d.findings.push({helperSymbol:R.symbol,helperShortName:D,helperFile:R.relativePath,helperShape:"specific-callee-cluster",helperCalleeCount:E.size,specificHelperCalleeCount:L,migratedFiles:ne.sort(),leftovers:X.slice(0,bV)}))}return d.findings.sort((R,E)=>(E.leftovers[0]?.containment??0)-(R.leftovers[0]?.containment??0)||R.helperFile.localeCompare(E.helperFile)),d.findings=d.findings.slice(0,a),d}function SV(e){let t=[],n=CV(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=yC(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=xV(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 wR(e){return e==="same-scope"?2:e==="unknown"?1:0}function CV(e,t,n){let r=new Set([...hm(t),...bm(T(e))]);for(let i of n)for(let o of hm(i))r.add(o);return r}function xV(e,t,n){let r=new Set([...hm(n),...bm(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 RV=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 hm(e){return bm(e.replace(/\.[^.]+$/,""))}function bm(e){return e.replace(/([a-z0-9])([A-Z])/g,"$1 $2").toLowerCase().split(/[^a-z0-9]+/).filter(t=>t.length>1&&!RV.has(t))}function vV(e,t){let n=0;for(let r of e)(t.docFreq.get(r)??0)<=t.ubiquityThreshold&&(n+=1);return n}function IV(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 wV(e,t){return e.all(`SELECT DISTINCT ref_d.relative_path
793
793
  FROM mentions m
794
794
  JOIN chunks c ON m.chunk_id = c.id
795
795
  JOIN documents ref_d ON c.document_id = ref_d.id
796
796
  WHERE m.symbol_id = ?
797
797
  AND m.role != 1
798
- ${e.pathExclusionsFor("ref_d")}`,t).map(r=>r.relative_path)}function ym(e,t={}){let{scope:n,limit:r=30,scanLimit:i}=t,o=new _(e);return ft({candidates:()=>o.productionCallableDefinitions({scope:n,files:t.files,minLoc:2,excludeRootedSymbols:!0,requireFunctionLikeSymbol:!0}),filterCandidate:s=>wV(s.relativePath),scanLimit:i,profile:{name:"unused-params"},evaluate:s=>{let a=G(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=Yt(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("_")||DV(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 wV(e){let t=M(e);return t==="typescript"||t==="tsx"||t==="javascript"}function DV(e,t,n){return e?e.some(r=>r>t&&r<=n):!1}import{existsSync as EV,mkdirSync as kV,readdirSync as PV,readFileSync as TV,writeFileSync as _V}from"fs";import{createHash as FV}from"crypto";import{join as ec}from"path";var Fo=ec(".scipquery","suppressions");function wR(e){return ec(e,Fo)}function LV(e){if(e.id&&e.id.trim()!=="")return`${e.id.trim()}.json`;let t=`${e.check??""}\0${e.file??""}`;return`CHECK-${FV("sha256").update(t).digest("hex").slice(0,12).toUpperCase()}.json`}function Xue(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);kV(r,{recursive:!0});let i=ec(r,LV(t)),o={...t,createdAt:t.createdAt??n.toISOString()};return _V(i,JSON.stringify(o,null,2)+`
799
- `),{path:i}}function DR(e){let t=wR(e);if(!EV(t))return{suppressions:[],warnings:[]};let n=[],r=[];for(let i of PV(t).sort()){if(!i.endsWith(".json"))continue;let o=ec(t,i),s;try{s=JSON.parse(TV(o,"utf-8"))}catch{r.push(`${Fo}/${i}: malformed JSON \u2014 ignored`);continue}if(typeof s!="object"||s===null||Array.isArray(s)){r.push(`${Fo}/${i}: not a suppression object \u2014 ignored`);continue}let a=s;if(typeof a.reason!="string"||a.reason.trim()===""){r.push(`${Fo}/${i}: missing reason \u2014 ignored`);continue}if(!a.id&&!a.check){r.push(`${Fo}/${i}: needs an id or a check \u2014 ignored`);continue}n.push(a)}return{suppressions:n,warnings:r}}var AV=["echo","incomplete-migration","co-change-partner","twin-partner","coverage-contract","architecture","doc-reference","unused-params","new-dead","baseline"];function MV(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=Fn(e,{base:n}),p=Zr(e,{base:n,plan:f}),g=p.changedFiles,y=new Set(g),h=new Set(f.changedFileLines),C=new Set([...y,...h]),x=xo(e.config.projectRoot,n,Ro(f,g)),S=dq(e.config.projectRoot,n,f,x),b={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 b;let v=(R,E)=>{if(m.has(R)){b.skipped.push({check:R,reason:"skipped via --skip"});return}let D=b.findings.length,k=b.skipped.length,L=b.checksRun.length;w(`diff-gate.check.${R}`,E,()=>({check:R,changedFiles:g.length,changedSymbols:p.changedSymbols.length,findingsAdded:b.findings.length-D,skippedAdded:b.skipped.length-k,checksRunAdded:b.checksRun.length-L}))};return v("echo",()=>UV(e,p.changedSymbols,y,S,o,a,l,u,b)),v("incomplete-migration",()=>KV(e,n,f,s,l,u,x,b)),v("co-change-partner",()=>JV(e,C,r,i,d,b)),v("twin-partner",()=>YV(e,p.changedSymbols,y,l,b)),v("coverage-contract",()=>XV(e,C,b)),v("architecture",()=>pq(e,b)),v("doc-reference",()=>nq(e,y,h,f.changedRanges,f.renamedFiles,b)),v("unused-params",()=>sq(e,g,b)),v("new-dead",()=>aq(e,p.changedSymbols,S,b)),c&&v("baseline",()=>fq(e,b)),$V(b,[...e.config.suppressions??[],...DR(e.config.projectRoot).suppressions]),b.rootCauseGroups=BV(b.findings),b}function OV(e){return e.checksRun.length===0&&e.note===Co}function jV(e){return e.filter(t=>!t.advisory)}function BV(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=FR(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||tc(r.severity)-tc(n.severity)||n.groupKey.localeCompare(r.groupKey))}function FR(e,t){return tc(t)>tc(e)?t:e}function tc(e){return e==="error"?2:e==="warning"?1:0}function LR(e,t){return e?t&&ER(t)>ER(e)?t:e:t}function ER(e){return e==="direct"?2:e==="signal"?1:0}function $V(e,t){if(t.length===0||e.findings.length===0)return;let n=[];for(let r of e.findings){let i=t.find(o=>HV(o,r));i?e.suppressed.push({finding:r,suppression:i}):n.push(r)}e.findings=n}function HV(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 Ot(e,t){e.findings.push({...t,suppressionHint:`scip-query: ignore ${t.check} ${t.id} -- <reason>`})}function UV(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=om(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),C=ve("echo",l.symbol,l.file,...u.map(S=>`${S.otherSymbol}|${S.otherFile}`).sort()),x=u[0];Ot(c,{id:h,legacySuppressionIds:C===h?void 0:[C],groupKey:h,actionTier:"direct",check:"echo",severity:"warning",evidence:"heuristic",confidence:1,file:l.file,symbol:l.symbol,relatedFiles:[...new Set(u.map(S=>S.otherFile))].sort(),sourceAnalyzer:"duplicate-bodies",rootCauseKey:`${l.symbol}:${x.otherSymbol}`,message:PR(l,u),why:TR(l,u),remediation:_R("direct",l.shortName,x.otherShort)});continue}let d=La(e,l.symbol,{minSimilarity:o,limit:5,scanLimit:s,semantic:a,sourceCandidateMode:"target-pruned"}),m=[];for(let h of d){let C=h.fileA===l.file?h.fileB:h.fileA,x=h.fileA===l.file?h.shortNameB:h.shortNameA,S=h.fileA===l.file?h.symbolB:h.symbolA;n.has(C)||m.push({otherFile:C,otherShort:x,otherSymbol:S,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=WV(l,m);Ot(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:PR(l,m),why:TR(l,m),remediation:_R(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 WV(e,t){return t.some(r=>GV(e.symbol,r))?"direct":"signal"}function GV(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:qV(t.sharedEvidence)?!1:zV(n,r)}function zV(e,t){let n=kR(e),r=kR(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 kR(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 VV=new Set(["bytes","crypto","hex","num","random","secret","to","token"]);function qV(e){return e.length>=3&&e.every(t=>VV.has(t.toLowerCase()))}function PR(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 _R(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 KV(e,t,n,r,i,o,s,a){let c=gm(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);Ot(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 JV(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||Vd(f)||Vd(m)||!nc(`${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)),C=ve("co-change-partner",m,f),x=qd(m,f),S=Kd({fileA:m,fileB:f,together:l.together,confidence:g,commitScope:l.commitScope,recency:l.recency,subjectContext:l.subjectContext},x,(c??=Jd(e))(m,f)),b=[m,f].sort().join("|");o.findings.push({id:C,legacySuppressionIds:h===C?void 0:[h],check:"co-change-partner",severity:"warning",evidence:"change-graph",actionTier:"signal",groupKey:`co-change-partner:${b}`,confidence:g,file:m,relatedFiles:[f],sourceAnalyzer:"co-change",rootCauseKey:b,partnerClass:x.partnerClass,partnerClassReasons:x.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,...S?{declaredCouplingSuggestion:S}:{},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: ${QV(l)}.`,`Subject context: ${ZV(l.subjectContext)}.`,...eq(l),`Partner class: ${x.partnerClass} (${x.reasons.join("; ")}).`],remediation:S?`Update ${f} alongside this change, declare the coupling "${S.name}", or confirm the coupling no longer holds.`:`Update ${f} alongside this change, or confirm the coupling no longer holds.`})}}function YV(e,t,n,r,i){i.checksRun.push("twin-partner");let o=ni(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);Ot(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 XV(e,t,n){n.checksRun.push("coverage-contract");let r=e.config.coverageContracts??[];for(let i of r){if(!aR(i,t))continue;let o=cm(e,i);if(o.status==="ok")continue;let s=ve("coverage-contract",i.name,i.file);Ot(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:cR(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 QV(e){return`${e.commitScope}/${e.recency}; ${e.focusedTogether} focused, ${e.broadTogether} broad-sweep (${Math.round(e.broadCommitRatio*100)}% broad), ${e.recentTogether} recent, last ${tq(e.lastTogetherAt)}`}function ZV(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 eq(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 tq(e){return e<=0?"unknown":new Date(e*1e3).toISOString().slice(0,10)}var bm=3;function nq(e,t,n,r,i,o){o.checksRun.push("doc-reference");let s=sn.referenceTargets(e,t,r);if(s.size===0)return;let a=new Set(i.map(l=>l.from)),c=[];for(let l of jx(e,s))n.has(l.doc)||Ka(e,l.doc)||c.push(rq(e,l,a));for(let l of iq(c))Ot(o,l)}function rq(e,t,n){let r=t.citedClaims.length>0?t.citedClaims:sn.citationContexts(e,t.doc,t.cited),i=sn.classifyCitation(r),o=sn.hasLineAnchoredCitation(t.citations),s=t.cited.some(d=>n.has(d)||!nc(`${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 ${sn.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:sn.citationRemediation(i.citationKind,t.doc)}}function iq(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<=bm?n.push(...i):n.push(oq(r,i));return n}function oq(e,t){let n=[...t].sort((u,d)=>(u.file??"").localeCompare(d.file??"")),r=n.slice(0,bm).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)=>FR(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 (${bm}) \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 sq(e,t,n){n.checksRun.push("unused-params");for(let r of ym(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);Ot(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 aq(e,t,n,r){r.checksRun.push("new-dead");let i=new _(e),o=Rr(e.config.projectRoot),s=o.length>1;for(let a of t){if(n(a)||a.fanIn>0||i.fileKind(a.file)==="test"||Ee(e,a.file)||de(e,a.symbol,a.file)||uq(a.symbol))continue;let c=ve("new-dead",a.symbol,a.file),l=s&&cq(o,a.file)&&lq(e,a.symbol);Ot(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 cq(e,t){return e.some(n=>t===n.relativeDir||t.startsWith(`${n.relativeDir}/`))}function lq(e,t){let n=T(t);return n?(Xt(e).get(n)?.length??0)>1:!1}function uq(e){if(ue(e)!=="type")return!1;let t=T(e);return t.startsWith("_Assert")||t.startsWith("Assert")}function dq(e,t,n,r){let i=new Map(n.renamedFiles.map(s=>[s.to,s.from])),o=r??xo(e,t,Ro(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&&mq(l,c)}}function mq(e,t){return new RegExp(`\\b${$(t)}\\b`).test(e)}function fq(e,t){if(!nc(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=fm(e);for(let r of n.newFindings.filter(i=>!i.startsWith(cr))){let i=em(r),o=ve("baseline",r);Ot(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 pq(e,t){if(!mC(e.config.architecture)){t.skipped.push({check:"architecture",reason:"no closed architecture dependency rows, requireCompletePolicy rule, or requireAcyclic rule configured"});return}if(!nc(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=em(r),o=ve("architecture",r);Ot(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${NV("sha256").update([e,...t].join("\0")).digest("hex").slice(0,12).toUpperCase()}`}import{dirname as gq,relative as hq,resolve as yq}from"path";var bq=new Set(Ft());function Sq(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 Cq(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=Rq(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=Ii(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?bq.has(o):ee(r.symbol)))return{ok:!1,reason:`${t} resolves to ${I(r.symbol)}${o!==null?` with SCIP kind ${so(o)}`:""} \u2014 twin-ab compares call outputs, so both referents must be functions or methods.`};if(!Po(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=Kt(Jt(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?xq(c):null}}}function xq(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=gq(t),i=yq(e,n),s=hq(r,i).replace(/\\/g,"/").replace(/\.tsx?$/,".js");return s.startsWith(".")?s:`./${s}`}function Rq(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`/**
798
+ ${e.pathExclusionsFor("ref_d")}`,t).map(r=>r.relative_path)}function Sm(e,t={}){let{scope:n,limit:r=30,scanLimit:i}=t,o=new _(e);return ft({candidates:()=>o.productionCallableDefinitions({scope:n,files:t.files,minLoc:2,excludeRootedSymbols:!0,requireFunctionLikeSymbol:!0}),filterCandidate:s=>DV(s.relativePath),scanLimit:i,profile:{name:"unused-params"},evaluate:s=>{let a=G(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=Yt(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("_")||EV(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 DV(e){let t=M(e);return t==="typescript"||t==="tsx"||t==="javascript"}function EV(e,t,n){return e?e.some(r=>r>t&&r<=n):!1}import{existsSync as kV,mkdirSync as PV,readdirSync as TV,readFileSync as _V,writeFileSync as FV}from"fs";import{createHash as LV}from"crypto";import{join as tc}from"path";var Fo=tc(".scipquery","suppressions");function DR(e){return tc(e,Fo)}function NV(e){if(e.id&&e.id.trim()!=="")return`${e.id.trim()}.json`;let t=`${e.check??""}\0${e.file??""}`;return`CHECK-${LV("sha256").update(t).digest("hex").slice(0,12).toUpperCase()}.json`}function Zue(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=DR(e);PV(r,{recursive:!0});let i=tc(r,NV(t)),o={...t,createdAt:t.createdAt??n.toISOString()};return FV(i,JSON.stringify(o,null,2)+`
799
+ `),{path:i}}function ER(e){let t=DR(e);if(!kV(t))return{suppressions:[],warnings:[]};let n=[],r=[];for(let i of TV(t).sort()){if(!i.endsWith(".json"))continue;let o=tc(t,i),s;try{s=JSON.parse(_V(o,"utf-8"))}catch{r.push(`${Fo}/${i}: malformed JSON \u2014 ignored`);continue}if(typeof s!="object"||s===null||Array.isArray(s)){r.push(`${Fo}/${i}: not a suppression object \u2014 ignored`);continue}let a=s;if(typeof a.reason!="string"||a.reason.trim()===""){r.push(`${Fo}/${i}: missing reason \u2014 ignored`);continue}if(!a.id&&!a.check){r.push(`${Fo}/${i}: needs an id or a check \u2014 ignored`);continue}n.push(a)}return{suppressions:n,warnings:r}}var MV=["echo","incomplete-migration","co-change-partner","twin-partner","coverage-contract","architecture","doc-reference","unused-params","new-dead","baseline"];function OV(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=Fn(e,{base:n}),p=Zr(e,{base:n,plan:f}),g=p.changedFiles,y=new Set(g),h=new Set(f.changedFileLines),C=new Set([...y,...h]),x=xo(e.config.projectRoot,n,Ro(f,g)),S=mq(e.config.projectRoot,n,f,x),b={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 b;let v=(R,E)=>{if(m.has(R)){b.skipped.push({check:R,reason:"skipped via --skip"});return}let D=b.findings.length,k=b.skipped.length,L=b.checksRun.length;w(`diff-gate.check.${R}`,E,()=>({check:R,changedFiles:g.length,changedSymbols:p.changedSymbols.length,findingsAdded:b.findings.length-D,skippedAdded:b.skipped.length-k,checksRunAdded:b.checksRun.length-L}))};return v("echo",()=>WV(e,p.changedSymbols,y,S,o,a,l,u,b)),v("incomplete-migration",()=>JV(e,n,f,s,l,u,x,b)),v("co-change-partner",()=>YV(e,C,r,i,d,b)),v("twin-partner",()=>XV(e,p.changedSymbols,y,l,b)),v("coverage-contract",()=>QV(e,C,b)),v("architecture",()=>gq(e,b)),v("doc-reference",()=>rq(e,y,h,f.changedRanges,f.renamedFiles,b)),v("unused-params",()=>aq(e,g,b)),v("new-dead",()=>cq(e,p.changedSymbols,S,b)),c&&v("baseline",()=>pq(e,b)),HV(b,[...e.config.suppressions??[],...ER(e.config.projectRoot).suppressions]),b.rootCauseGroups=$V(b.findings),b}function jV(e){return e.checksRun.length===0&&e.note===Co}function BV(e){return e.filter(t=>!t.advisory)}function $V(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=LR(i.severity,n.severity),i.actionTier=NR(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||nc(r.severity)-nc(n.severity)||n.groupKey.localeCompare(r.groupKey))}function LR(e,t){return nc(t)>nc(e)?t:e}function nc(e){return e==="error"?2:e==="warning"?1:0}function NR(e,t){return e?t&&kR(t)>kR(e)?t:e:t}function kR(e){return e==="direct"?2:e==="signal"?1:0}function HV(e,t){if(t.length===0||e.findings.length===0)return;let n=[];for(let r of e.findings){let i=t.find(o=>UV(o,r));i?e.suppressed.push({finding:r,suppression:i}):n.push(r)}e.findings=n}function UV(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 Ot(e,t){e.findings.push({...t,suppressionHint:`scip-query: ignore ${t.check} ${t.id} -- <reason>`})}function WV(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=sm(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),C=ve("echo",l.symbol,l.file,...u.map(S=>`${S.otherSymbol}|${S.otherFile}`).sort()),x=u[0];Ot(c,{id:h,legacySuppressionIds:C===h?void 0:[C],groupKey:h,actionTier:"direct",check:"echo",severity:"warning",evidence:"heuristic",confidence:1,file:l.file,symbol:l.symbol,relatedFiles:[...new Set(u.map(S=>S.otherFile))].sort(),sourceAnalyzer:"duplicate-bodies",rootCauseKey:`${l.symbol}:${x.otherSymbol}`,message:TR(l,u),why:_R(l,u),remediation:FR("direct",l.shortName,x.otherShort)});continue}let d=Na(e,l.symbol,{minSimilarity:o,limit:5,scanLimit:s,semantic:a,sourceCandidateMode:"target-pruned"}),m=[];for(let h of d){let C=h.fileA===l.file?h.fileB:h.fileA,x=h.fileA===l.file?h.shortNameB:h.shortNameA,S=h.fileA===l.file?h.symbolB:h.symbolA;n.has(C)||m.push({otherFile:C,otherShort:x,otherSymbol:S,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=GV(l,m);Ot(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:TR(l,m),why:_R(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 GV(e,t){return t.some(r=>zV(e.symbol,r))?"direct":"signal"}function zV(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:KV(t.sharedEvidence)?!1:VV(n,r)}function VV(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 qV=new Set(["bytes","crypto","hex","num","random","secret","to","token"]);function KV(e){return e.length>=3&&e.every(t=>qV.has(t.toLowerCase()))}function TR(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 _R(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 JV(e,t,n,r,i,o,s,a){let c=ym(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);Ot(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 YV(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||qd(f)||qd(m)||!rc(`${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)),C=ve("co-change-partner",m,f),x=Kd(m,f),S=Jd({fileA:m,fileB:f,together:l.together,confidence:g,commitScope:l.commitScope,recency:l.recency,subjectContext:l.subjectContext},x,(c??=Yd(e))(m,f)),b=[m,f].sort().join("|");o.findings.push({id:C,legacySuppressionIds:h===C?void 0:[h],check:"co-change-partner",severity:"warning",evidence:"change-graph",actionTier:"signal",groupKey:`co-change-partner:${b}`,confidence:g,file:m,relatedFiles:[f],sourceAnalyzer:"co-change",rootCauseKey:b,partnerClass:x.partnerClass,partnerClassReasons:x.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,...S?{declaredCouplingSuggestion:S}:{},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: ${ZV(l)}.`,`Subject context: ${eq(l.subjectContext)}.`,...tq(l),`Partner class: ${x.partnerClass} (${x.reasons.join("; ")}).`],remediation:S?`Update ${f} alongside this change, declare the coupling "${S.name}", or confirm the coupling no longer holds.`:`Update ${f} alongside this change, or confirm the coupling no longer holds.`})}}function XV(e,t,n,r,i){i.checksRun.push("twin-partner");let o=ni(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);Ot(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 QV(e,t,n){n.checksRun.push("coverage-contract");let r=e.config.coverageContracts??[];for(let i of r){if(!cR(i,t))continue;let o=lm(e,i);if(o.status==="ok")continue;let s=ve("coverage-contract",i.name,i.file);Ot(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:lR(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 ZV(e){return`${e.commitScope}/${e.recency}; ${e.focusedTogether} focused, ${e.broadTogether} broad-sweep (${Math.round(e.broadCommitRatio*100)}% broad), ${e.recentTogether} recent, last ${nq(e.lastTogetherAt)}`}function eq(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 tq(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 nq(e){return e<=0?"unknown":new Date(e*1e3).toISOString().slice(0,10)}var Cm=3;function rq(e,t,n,r,i,o){o.checksRun.push("doc-reference");let s=sn.referenceTargets(e,t,r);if(s.size===0)return;let a=new Set(i.map(l=>l.from)),c=[];for(let l of Bx(e,s))n.has(l.doc)||Ja(e,l.doc)||c.push(iq(e,l,a));for(let l of oq(c))Ot(o,l)}function iq(e,t,n){let r=t.citedClaims.length>0?t.citedClaims:sn.citationContexts(e,t.doc,t.cited),i=sn.classifyCitation(r),o=sn.hasLineAnchoredCitation(t.citations),s=t.cited.some(d=>n.has(d)||!rc(`${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 ${sn.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:sn.citationRemediation(i.citationKind,t.doc)}}function oq(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<=Cm?n.push(...i):n.push(sq(r,i));return n}function sq(e,t){let n=[...t].sort((u,d)=>(u.file??"").localeCompare(d.file??"")),r=n.slice(0,Cm).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)=>LR(u,d.severity),"info"),a=n.reduce((u,d)=>NR(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 (${Cm}) \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 aq(e,t,n){n.checksRun.push("unused-params");for(let r of Sm(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);Ot(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 cq(e,t,n,r){r.checksRun.push("new-dead");let i=new _(e),o=Rr(e.config.projectRoot),s=o.length>1;for(let a of t){if(n(a)||a.fanIn>0||i.fileKind(a.file)==="test"||Ee(e,a.file)||de(e,a.symbol,a.file)||dq(a.symbol))continue;let c=ve("new-dead",a.symbol,a.file),l=s&&lq(o,a.file)&&uq(e,a.symbol);Ot(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 lq(e,t){return e.some(n=>t===n.relativeDir||t.startsWith(`${n.relativeDir}/`))}function uq(e,t){let n=T(t);return n?(Xt(e).get(n)?.length??0)>1:!1}function dq(e){if(ue(e)!=="type")return!1;let t=T(e);return t.startsWith("_Assert")||t.startsWith("Assert")}function mq(e,t,n,r){let i=new Map(n.renamedFiles.map(s=>[s.to,s.from])),o=r??xo(e,t,Ro(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&&fq(l,c)}}function fq(e,t){return new RegExp(`\\b${$(t)}\\b`).test(e)}function pq(e,t){if(!rc(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=gm(e);for(let r of n.newFindings.filter(i=>!i.startsWith(cr))){let i=tm(r),o=ve("baseline",r);Ot(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 gq(e,t){if(!fC(e.config.architecture)){t.skipped.push({check:"architecture",reason:"no closed architecture dependency rows, requireCompletePolicy rule, or requireAcyclic rule configured"});return}if(!rc(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=IR(e);for(let r of n.newFindings){let i=tm(r),o=ve("architecture",r);Ot(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${AV("sha256").update([e,...t].join("\0")).digest("hex").slice(0,12).toUpperCase()}`}import{dirname as hq,relative as yq,resolve as bq}from"path";var Sq=new Set(Ft());function Cq(e,t){return`tests/generated/twin-ab/${AR(e)}-vs-${AR(t)}.test.ts`}function AR(e){return(e.split(/[/#]/).pop()||e).replace(/[^A-Za-z0-9_-]+/g,"-").replace(/^-+|-+$/g,"")||"symbol"}function xq(e,t,n,r){let i=MR(e,t);if(!i.ok)return i;let o=MR(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=vq(i.symbol,o.symbol,e.config.projectRoot,r,s);return{ok:!0,a:i.symbol,b:o.symbol,signatureCompatible:s,testSource:a}}function MR(e,t){let r=Ii(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?Sq.has(o):ee(r.symbol)))return{ok:!1,reason:`${t} resolves to ${I(r.symbol)}${o!==null?` with SCIP kind ${so(o)}`:""} \u2014 twin-ab compares call outputs, so both referents must be functions or methods.`};if(!Po(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=Kt(Jt(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?Rq(c):null}}}function Rq(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 OR(e,t,n){let r=hq(t),i=bq(e,n),s=yq(r,i).replace(/\\/g,"/").replace(/\.tsx?$/,".js");return s.startsWith(".")?s:`./${s}`}function vq(e,t,n,r,i){let o=OR(n,r,e.file),s=OR(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
800
  * Generated by 'scip-query twin-ab'. scip-integrity-audit drill 5
801
801
  * ("cross-examine same-concept twins"): where one concept is computed in
802
802
  * more than one place, feed both the same input and require the same
@@ -834,10 +834,10 @@ describe.skipIf(inputs.length === 0)('twin-ab: ${e.shortName} vs ${t.shortName}'
834
834
  expect(callA(...args)).toEqual(callB(...args));
835
835
  });
836
836
  });
837
- `}var OR={caller:3,"entry-surface":2,rooted:1},vq=/not\s*yet\s*implement|not\s*implement|unimplement|\bnyi\b|\btodo\b|\bstub\b|not\s*supported|coming\s*soon/i,Iq=/^throw\s+new\s+[\w.]*Error\s*\(([\s\S]*)\)\s*;?$/,wq=/^return(\s+(null|undefined|false|0|''|""|``|\[\]|\{\}))?\s*;?$/,Dq=/\/\/\s*TODO\b|\/\*\s*TODO\b/i,Eq=/(?:=>|\))\s*(?::\s*[^{;=]+)?\s*\{\s*\}\s*;?\s*$/;function kq(e,t={}){let{scope:n,limit:r=30,scanLimit:i,semantic:o=!0}=t,s=new _(e),a=se(s.productionCallableDefinitions({scope:n,minLoc:1,requireFunctionLikeSymbol:!0,excludeTypesFiles:!0}),i),c=[];for(let f of a){let p=Tq(e,f);p&&c.push(p)}if(c.length===0)return[];let l=Nq(e,c,a),u=c.filter(f=>!l.has(f.def.symbol));if(u.length===0)return[];let d=rn(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=Pq(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 Pq(e,t,n){return n>0?"caller":de(e,t.symbol,t.relativePath)?"rooted":Ee(e,t.relativePath)?"entry-surface":null}function Tq(e,t){let n=an(e,t);if(!n)return null;let r=Mt(n),i=r.trim();if(i==="")return!Lq(n)||!Po(e,t)?null:{def:t,stubKind:"empty-body",stubText:"(empty body)"};let o=Si(r),s=rt(r),a=_q(o,s);if(a.length!==1)return null;let c=a[0];return Fq(c)?{def:t,stubKind:"throw-stub",stubText:c.trim()}:Dq.test(r)&&wq.test(c.trim())?{def:t,stubKind:"todo-return-default",stubText:i}:null}function _q(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 Fq(e){let t=Iq.exec(e.trim());return t?vq.test(t[1]??""):!1}function Lq(e){return Eq.test(e.trimEnd())}function Nq(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=Mq(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 Aq=/\bclass\s+([A-Za-z_$][\w$]*)\s+extends\s+([A-Za-z_$][\w$]*)/g;function Mq(e,t){let n=new Map;for(let r of N(e,{includeIgnored:!1})){let i=P(e,r);if(i)for(let o of i.matchAll(Aq)){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 Oq=/^(?:validate|verify|check|assert)(?:[A-Z].*)?$/,jq=/^(?:is|has)(?:[A-Z].*)?$/,Bq=/[{,]\s*(?:ok|success|valid|isValid)\s*:\s*false\b/,Sm=/\breturn\b/g,$q=/\bfunction\b|=>|\)\s*(?::\s*[^{;=]+)?\s*\{/,Hq=/\.(?:addIssue|push)\s*\(/;function Uq(e,t={}){let{scope:n,limit:r=30,scanLimit:i}=t,o=new _(e),s=se(o.productionCallableDefinitions({scope:n,minLoc:1,requireFunctionLikeSymbol:!0,excludeTypesFiles:!0}),i),a=[];for(let c of s){let l=Gq(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 Wq(e){return Oq.test(e)?"imperative":jq.test(e)?"predicate":null}function Gq(e,t){let n=Wq(t.leaf);if(!n||Vr(e,t))return null;let r=an(e,t);if(!r||!$q.test(r))return null;let i=G(e,t.relativePath)?.callables.find(s=>s.startLine===t.startLine&&s.endLine===t.endLine);if(n==="predicate"&&i?.paramCount===0)return null;if(tR(r)){let s=qq(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=Mt(r);return $R(o,BR(r))||jR(o)?null:{nameKind:n,resolvedVia:"direct"}}var zq=new Set(["if","for","while","switch","catch","function"]);function jR(e){let t=Si(e);for(let n of t.matchAll(/\b([A-Za-z_$][\w$]*(?:\.[A-Za-z_$][\w$]*)*)\s*\(/g))if(!zq.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=Si(e);if(/\bthrow\b/.test(n)||/\.reject\s*\(/.test(n)||Bq.test(n)||Hq.test(n))return!0;let r=Vq(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 Vq(e){let t=[];Sm.lastIndex=0;let n;for(;n=Sm.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()),Sm.lastIndex=o}return t}function qq(e,t){let n=dt(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=Ii(e,r[0]).match;if(!o)return null;let s=Q(e,o.relativePath).find(c=>c.symbolId===o.symbolId);if(!s)return null;let a=an(e,s);return a?{body:Mt(a),snippet:a,shortName:I(s.symbol)}:null}var Kq=60;function Jq(e,t={}){let{scope:n,limit:r=30,scanLimit:i,rotDays:o=Kq}=t,s=se($e(e,{extensions:[".ts",".tsx",".js",".jsx",".mjs",".cjs"]}).filter(u=>Y(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=P(e,u);if(!d)continue;let m=Sp(d),f=Qq(d);for(let g of nK(m,f))f.add(g);let p=Yq(m);for(let g of p){if(g.skip){c.push(lK(e,u,g,o));continue}if(g.kind==="describe")continue;let y=UR(d,g.argsStart),h=m.slice(g.argsStart,g.callEnd),C=d.slice(g.argsStart,g.callEnd);WR(h,f)||a.push({file:u,startLine:Lo(d,g.callStart),endLine:Lo(d,g.callEnd),title:y,severity:/\bawait\b/.test(h)?"low":"high"});let x=sK(h,C);x&&l.push({file:u,startLine:Lo(d,g.callStart),endLine:Lo(d,g.callEnd),title:y,echoedValue:x})}}return{assertionFree:r?a.slice(0,r):a,skipped:r?c.slice(0,r):c,mockEcho:r?l.slice(0,r):l}}var Cm=/(?<!\.)\b(?:x(it|test|describe)|(it|test|describe)(?:\.\s*(skip|only|todo|each\s*\([^)]*\)))?)\s*\(/g;function Yq(e){let t=[];Cm.lastIndex=0;let n;for(;n=Cm.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=No(e,a);Cm.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 No(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 Lo(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 Xq=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 Qq(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||!Xq.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 Zq=/\bfunction\s+(\w+)\s*\(/g,eK=/\b(?:const|let)\s+(\w+)\s*=\s*(?:async\s*)?\(/g,tK=60;function nK(e,t){let n=new Set;for(let r of[Zq,eK]){r.lastIndex=0;let i;for(;i=r.exec(e);){let o=i[1],s=i.index+i[0].length-1,a=No(e,s),c=e.indexOf("{",a+1);if(c===-1||c-a>tK)continue;let l=rK(e,c),u=e.slice(c+1,l);WR(u,t)&&n.add(o)}}return n}function rK(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 iK=/\bmock(?:ReturnValue|ResolvedValue)(?:Once)?\s*\(/g,xm=/\bexpect\s*\(/g,oK=/^\s*\.\s*(?:toBe|toEqual|toStrictEqual)\s*\(/,GR=/^(?:-?\d+(?:\.\d+)?|(['"`]).+\1)$/;function sK(e,t){let n=aK(e,t,iK);if(n.length===0)return null;let r=cK(e,t);for(let i of r)if(n.includes(i))return i;return null}function aK(e,t,n){let r=[];n.lastIndex=0;let i;for(;i=n.exec(e);){let o=i.index+i[0].length-1,s=No(e,o),a=t.slice(o+1,s).trim();GR.test(a)&&r.push(a),n.lastIndex=s+1}return r}function cK(e,t){let n=[];xm.lastIndex=0;let r;for(;r=xm.exec(e);){let i=r.index+r[0].length-1,o=No(e,i),s=e.slice(o+1),a=oK.exec(s);if(xm.lastIndex=o+1,!a)continue;let c=o+1+a[0].length-1,l=No(e,c),u=t.slice(c+1,l).trim();GR.test(u)&&n.push(u)}return n}function lK(e,t,n,r){let i=P(e,t),o=UR(i,n.argsStart),s=Lo(i,n.callStart),a=uK(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 uK(e,t,n){let r=n+1;try{let i=At(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 dK=.7,zR=.62,VR=.45;function mK(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=xK(s,n);if(a.size===0)return{available:!0,windowCommits:n,findings:[]};let l=fK(e,{limit:r,minSimilarity:t.minSimilarity,scanLimit:o,scope:i,semantic:t.semantic,focusFiles:Number.isFinite(r)?void 0:a}).map(d=>RK(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(vK);return{available:!0,windowCommits:n,findings:u,rootCauseGroups:IK(u)}}function fK(e,t){let n=DK(t.limit),r=[...pK(e,{scope:t.scope,minSimilarity:t.minSimilarity??dK,limit:n,scanLimit:t.scanLimit,semantic:t.semantic,focusFiles:t.focusFiles})],i=ss(e,{scope:t.scope});return i.react&&r.push(...gK(e,{scope:t.scope,minSimilarity:t.minSimilarity??zR,limit:n,scanLimit:t.scanLimit,focusFiles:t.focusFiles}),...hK(e,{scope:t.scope,minSimilarity:t.minSimilarity??VR,limit:n,scanLimit:t.scanLimit,focusFiles:t.focusFiles})),i.vue&&r.push(...SK(e,{scope:t.scope,minSimilarity:t.minSimilarity??zR,limit:n,scanLimit:t.scanLimit,focusFiles:t.focusFiles}),...CK(e,{scope:t.scope,minSimilarity:t.minSimilarity??VR,limit:n,scanLimit:t.scanLimit,focusFiles:t.focusFiles})),r}function pK(e,t){return mo(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 gK(e,t){return ic(e,t,{query:fo,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 ic(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:EK(...n.evidenceBuckets(r)),sharedCallees:[]}))}function hK(e,t){return ic(e,t,{query:po,domain:"react-hook",basis:"react-behavior",symbolA:n=>n.componentA,symbolB:n=>n.componentB,acceptPair:bK,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 yK=new Set(["useCallback","useEffect","useLayoutEffect","useMemo","useMutation","useQueries","useQuery","useQueryClient","useReducer","useRef","useState"]);function bK(e){return e.sharedHooks.some(t=>!yK.has(t))||e.sharedState.length>0||e.sharedHandlers.length>0||e.sharedHandlerVerbs.length>=2}function SK(e,t){return ic(e,t,{query:go,domain:"vue-component",basis:"vue-template",symbolA:n=>rc(n.fileA),symbolB:n=>rc(n.fileB),evidenceBuckets:n=>[["component",n.sharedComponents],["prop",n.sharedProps],["event",n.sharedEvents],["directive",n.sharedDirectives],["slot",n.sharedSlots],["identifier",n.sharedIdentifiers]]})}function CK(e,t){return ic(e,t,{query:ho,domain:"vue-composable",basis:"vue-behavior",symbolA:n=>rc(n.fileA),symbolB:n=>rc(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 xK(e,t){let n=new Set;for(let[r,i]of e)i.commitsAgo<=t&&n.add(r);return n}function RK(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 vK(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 IK(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:wK(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 wK(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 DK(e){return Number.isFinite(e)?e*5:Number.POSITIVE_INFINITY}function EK(...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 rc(e){return(e.split("/").pop()??e).replace(/\.[^.]+$/,"")}var kK=J("suppression-inventory",{clearGroups:["whole-project"]});function oc(e){return kK.get(e,()=>PK(e))}function PK(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=P(e,i);if(!(!o||!o.includes("scip-query")))for(let s of o.split(/\r?\n/)){let a=di(s);if(a===null)continue;r+=1,n.set(i,(n.get(i)??0)+1);let c=TK(a);t[c]+=1}}return{total:r,byCategory:t,byFile:n}}function TK(e){if(!e)return"uncategorized";let t=e.toLowerCase();return t==="dead-code"?"dead":t}import{readFileSync as _K}from"fs";import{join as FK}from"path";function Rm(e,t,n={}){let r=B(e,t);if(!r)return null;let i=new _(e),o=LK(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:AK(e,r.symbolId),fanOut:MK(c,r.relativePath)}}function LK(e,t){let n=q(e,t.relativePath);if(n){let r=XR(n.rootNode,t.startLine,t.endLine);if(r)return{branches:OK(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=q(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"});jK(s.rootNode,a,n)}for(let l of o)c.has(l.symbolId)||n.set(l.symbolId,NK(e,l))}return n}function NK(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 _K(FK(e.config.projectRoot,t),"utf-8").split(`
837
+ `}var jR={caller:3,"entry-surface":2,rooted:1},Iq=/not\s*yet\s*implement|not\s*implement|unimplement|\bnyi\b|\btodo\b|\bstub\b|not\s*supported|coming\s*soon/i,wq=/^throw\s+new\s+[\w.]*Error\s*\(([\s\S]*)\)\s*;?$/,Dq=/^return(\s+(null|undefined|false|0|''|""|``|\[\]|\{\}))?\s*;?$/,Eq=/\/\/\s*TODO\b|\/\*\s*TODO\b/i,kq=/(?:=>|\))\s*(?::\s*[^{;=]+)?\s*\{\s*\}\s*;?\s*$/;function Pq(e,t={}){let{scope:n,limit:r=30,scanLimit:i,semantic:o=!0}=t,s=new _(e),a=se(s.productionCallableDefinitions({scope:n,minLoc:1,requireFunctionLikeSymbol:!0,excludeTypesFiles:!0}),i),c=[];for(let f of a){let p=_q(e,f);p&&c.push(p)}if(c.length===0)return[];let l=Aq(e,c,a),u=c.filter(f=>!l.has(f.def.symbol));if(u.length===0)return[];let d=rn(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=Tq(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)=>jR[p.reachability]-jR[f.reachability]||p.callerFanIn-f.callerFanIn||f.file.localeCompare(p.file)||f.startLine-p.startLine),r?m.slice(0,r):m}function Tq(e,t,n){return n>0?"caller":de(e,t.symbol,t.relativePath)?"rooted":Ee(e,t.relativePath)?"entry-surface":null}function _q(e,t){let n=an(e,t);if(!n)return null;let r=Mt(n),i=r.trim();if(i==="")return!Nq(n)||!Po(e,t)?null:{def:t,stubKind:"empty-body",stubText:"(empty body)"};let o=Si(r),s=rt(r),a=Fq(o,s);if(a.length!==1)return null;let c=a[0];return Lq(c)?{def:t,stubKind:"throw-stub",stubText:c.trim()}:Eq.test(r)&&Dq.test(c.trim())?{def:t,stubKind:"todo-return-default",stubText:i}:null}function Fq(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 Lq(e){let t=wq.exec(e.trim());return t?Iq.test(t[1]??""):!1}function Nq(e){return kq.test(e.trimEnd())}function Aq(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=Oq(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 Mq=/\bclass\s+([A-Za-z_$][\w$]*)\s+extends\s+([A-Za-z_$][\w$]*)/g;function Oq(e,t){let n=new Map;for(let r of N(e,{includeIgnored:!1})){let i=P(e,r);if(i)for(let o of i.matchAll(Mq)){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 jq=/^(?:validate|verify|check|assert)(?:[A-Z].*)?$/,Bq=/^(?:is|has)(?:[A-Z].*)?$/,$q=/[{,]\s*(?:ok|success|valid|isValid)\s*:\s*false\b/,xm=/\breturn\b/g,Hq=/\bfunction\b|=>|\)\s*(?::\s*[^{;=]+)?\s*\{/,Uq=/\.(?:addIssue|push)\s*\(/;function Wq(e,t={}){let{scope:n,limit:r=30,scanLimit:i}=t,o=new _(e),s=se(o.productionCallableDefinitions({scope:n,minLoc:1,requireFunctionLikeSymbol:!0,excludeTypesFiles:!0}),i),a=[];for(let c of s){let l=zq(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 Gq(e){return jq.test(e)?"imperative":Bq.test(e)?"predicate":null}function zq(e,t){let n=Gq(t.leaf);if(!n||Vr(e,t))return null;let r=an(e,t);if(!r||!Hq.test(r))return null;let i=G(e,t.relativePath)?.callables.find(s=>s.startLine===t.startLine&&s.endLine===t.endLine);if(n==="predicate"&&i?.paramCount===0)return null;if(nR(r)){let s=Kq(e,t);return!s||HR(s.body,$R(s.snippet))||BR(s.body)?null:{nameKind:n,resolvedVia:"one-hop-delegate",delegateTarget:s.shortName}}let o=Mt(r);return HR(o,$R(r))||BR(o)?null:{nameKind:n,resolvedVia:"direct"}}var Vq=new Set(["if","for","while","switch","catch","function"]);function BR(e){let t=Si(e);for(let n of t.matchAll(/\b([A-Za-z_$][\w$]*(?:\.[A-Za-z_$][\w$]*)*)\s*\(/g))if(!Vq.has(n[1]))return!0;return!1}function $R(e){let t=e.indexOf("=>");return t===-1?!1:!/^\s*\{/.test(e.slice(t+2))}function HR(e,t){let n=Si(e);if(/\bthrow\b/.test(n)||/\.reject\s*\(/.test(n)||$q.test(n)||Uq.test(n))return!0;let r=qq(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 qq(e){let t=[];xm.lastIndex=0;let n;for(;n=xm.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()),xm.lastIndex=o}return t}function Kq(e,t){let n=dt(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=Ii(e,r[0]).match;if(!o)return null;let s=Q(e,o.relativePath).find(c=>c.symbolId===o.symbolId);if(!s)return null;let a=an(e,s);return a?{body:Mt(a),snippet:a,shortName:I(s.symbol)}:null}var Jq=60;function Yq(e,t={}){let{scope:n,limit:r=30,scanLimit:i,rotDays:o=Jq}=t,s=se($e(e,{extensions:[".ts",".tsx",".js",".jsx",".mjs",".cjs"]}).filter(u=>Y(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=P(e,u);if(!d)continue;let m=Cp(d),f=Zq(d);for(let g of rK(m,f))f.add(g);let p=Xq(m);for(let g of p){if(g.skip){c.push(uK(e,u,g,o));continue}if(g.kind==="describe")continue;let y=WR(d,g.argsStart),h=m.slice(g.argsStart,g.callEnd),C=d.slice(g.argsStart,g.callEnd);GR(h,f)||a.push({file:u,startLine:Lo(d,g.callStart),endLine:Lo(d,g.callEnd),title:y,severity:/\bawait\b/.test(h)?"low":"high"});let x=aK(h,C);x&&l.push({file:u,startLine:Lo(d,g.callStart),endLine:Lo(d,g.callEnd),title:y,echoedValue:x})}}return{assertionFree:r?a.slice(0,r):a,skipped:r?c.slice(0,r):c,mockEcho:r?l.slice(0,r):l}}var Rm=/(?<!\.)\b(?:x(it|test|describe)|(it|test|describe)(?:\.\s*(skip|only|todo|each\s*\([^)]*\)))?)\s*\(/g;function Xq(e){let t=[];Rm.lastIndex=0;let n;for(;n=Rm.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=No(e,a);Rm.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 No(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 Lo(e,t){let n=0;for(let r=0;r<t&&r<e.length;r+=1)e[r]===`
838
+ `&&(n+=1);return n}function WR(e,t){let n=e.slice(t,t+400),r=/^\s*(['"`])((?:\\.|(?!\1)[\s\S])*)\1/.exec(n);return r?r[2]:"(anonymous)"}var Qq=new Set(["vitest","chai","jest","@jest/globals","assert","node:assert","node:assert/strict","assert/strict","uvu/assert","expect","chai-as-promised"]),UR=/import\s+(?:\*\s+as\s+(\w+)|\{([^}]*)\}|(\w+))\s+from\s+['"]([^'"]+)['"]/g;function Zq(e){let t=new Set(["expect","assert"]);UR.lastIndex=0;let n;for(;n=UR.exec(e);){let[,r,i,o,s]=n;if(!(!s||!Qq.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 GR(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 eK=/\bfunction\s+(\w+)\s*\(/g,tK=/\b(?:const|let)\s+(\w+)\s*=\s*(?:async\s*)?\(/g,nK=60;function rK(e,t){let n=new Set;for(let r of[eK,tK]){r.lastIndex=0;let i;for(;i=r.exec(e);){let o=i[1],s=i.index+i[0].length-1,a=No(e,s),c=e.indexOf("{",a+1);if(c===-1||c-a>nK)continue;let l=iK(e,c),u=e.slice(c+1,l);GR(u,t)&&n.add(o)}}return n}function iK(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 oK=/\bmock(?:ReturnValue|ResolvedValue)(?:Once)?\s*\(/g,vm=/\bexpect\s*\(/g,sK=/^\s*\.\s*(?:toBe|toEqual|toStrictEqual)\s*\(/,zR=/^(?:-?\d+(?:\.\d+)?|(['"`]).+\1)$/;function aK(e,t){let n=cK(e,t,oK);if(n.length===0)return null;let r=lK(e,t);for(let i of r)if(n.includes(i))return i;return null}function cK(e,t,n){let r=[];n.lastIndex=0;let i;for(;i=n.exec(e);){let o=i.index+i[0].length-1,s=No(e,o),a=t.slice(o+1,s).trim();zR.test(a)&&r.push(a),n.lastIndex=s+1}return r}function lK(e,t){let n=[];vm.lastIndex=0;let r;for(;r=vm.exec(e);){let i=r.index+r[0].length-1,o=No(e,i),s=e.slice(o+1),a=sK.exec(s);if(vm.lastIndex=o+1,!a)continue;let c=o+1+a[0].length-1,l=No(e,c),u=t.slice(c+1,l).trim();zR.test(u)&&n.push(u)}return n}function uK(e,t,n,r){let i=P(e,t),o=WR(i,n.argsStart),s=Lo(i,n.callStart),a=dK(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 dK(e,t,n){let r=n+1;try{let i=At(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 mK=.7,VR=.62,qR=.45;function fK(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=RK(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=>vK(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(IK);return{available:!0,windowCommits:n,findings:u,rootCauseGroups:wK(u)}}function pK(e,t){let n=EK(t.limit),r=[...gK(e,{scope:t.scope,minSimilarity:t.minSimilarity??mK,limit:n,scanLimit:t.scanLimit,semantic:t.semantic,focusFiles:t.focusFiles})],i=as(e,{scope:t.scope});return i.react&&r.push(...hK(e,{scope:t.scope,minSimilarity:t.minSimilarity??VR,limit:n,scanLimit:t.scanLimit,focusFiles:t.focusFiles}),...yK(e,{scope:t.scope,minSimilarity:t.minSimilarity??qR,limit:n,scanLimit:t.scanLimit,focusFiles:t.focusFiles})),i.vue&&r.push(...CK(e,{scope:t.scope,minSimilarity:t.minSimilarity??VR,limit:n,scanLimit:t.scanLimit,focusFiles:t.focusFiles}),...xK(e,{scope:t.scope,minSimilarity:t.minSimilarity??qR,limit:n,scanLimit:t.scanLimit,focusFiles:t.focusFiles})),r}function gK(e,t){return mo(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 hK(e,t){return oc(e,t,{query:fo,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 oc(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:kK(...n.evidenceBuckets(r)),sharedCallees:[]}))}function yK(e,t){return oc(e,t,{query:po,domain:"react-hook",basis:"react-behavior",symbolA:n=>n.componentA,symbolB:n=>n.componentB,acceptPair:SK,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 bK=new Set(["useCallback","useEffect","useLayoutEffect","useMemo","useMutation","useQueries","useQuery","useQueryClient","useReducer","useRef","useState"]);function SK(e){return e.sharedHooks.some(t=>!bK.has(t))||e.sharedState.length>0||e.sharedHandlers.length>0||e.sharedHandlerVerbs.length>=2}function CK(e,t){return oc(e,t,{query:go,domain:"vue-component",basis:"vue-template",symbolA:n=>ic(n.fileA),symbolB:n=>ic(n.fileB),evidenceBuckets:n=>[["component",n.sharedComponents],["prop",n.sharedProps],["event",n.sharedEvents],["directive",n.sharedDirectives],["slot",n.sharedSlots],["identifier",n.sharedIdentifiers]]})}function xK(e,t){return oc(e,t,{query:ho,domain:"vue-composable",basis:"vue-behavior",symbolA:n=>ic(n.fileA),symbolB:n=>ic(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 RK(e,t){let n=new Set;for(let[r,i]of e)i.commitsAgo<=t&&n.add(r);return n}function vK(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 IK(e){let t=KR(e);return{...e,rootCauseKey:t,groupKey:`recent-duplicate:${t}`}}function KR(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 wK(e){let t=new Map;for(let[n,r]of e.entries()){let i=r.rootCauseKey??KR(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:DK(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 DK(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 EK(e){return Number.isFinite(e)?e*5:Number.POSITIVE_INFINITY}function kK(...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 ic(e){return(e.split("/").pop()??e).replace(/\.[^.]+$/,"")}var PK=J("suppression-inventory",{clearGroups:["whole-project"]});function sc(e){return PK.get(e,()=>TK(e))}function TK(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=P(e,i);if(!(!o||!o.includes("scip-query")))for(let s of o.split(/\r?\n/)){let a=di(s);if(a===null)continue;r+=1,n.set(i,(n.get(i)??0)+1);let c=_K(a);t[c]+=1}}return{total:r,byCategory:t,byFile:n}}function _K(e){if(!e)return"uncategorized";let t=e.toLowerCase();return t==="dead-code"?"dead":t}import{readFileSync as FK}from"fs";import{join as LK}from"path";function Im(e,t,n={}){let r=B(e,t);if(!r)return null;let i=new _(e),o=NK(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:MK(e,r.symbolId),fanOut:OK(c,r.relativePath)}}function NK(e,t){let n=q(e,t.relativePath);if(n){let r=QR(n.rootNode,t.startLine,t.endLine);if(r)return{branches:jK(r),estimateBasis:"ast"}}return{branches:ev(XR(e,t.relativePath,t.startLine,t.endLine),YR(e,t.relativePath)),estimateBasis:"regex-fallback"}}function JR(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=q(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"});BK(s.rootNode,a,n)}for(let l of o)c.has(l.symbolId)||n.set(l.symbolId,AK(e,l))}return n}function AK(e,t){return{branches:ev(XR(e,t.relativePath,t.startLine,t.endLine),YR(e,t.relativePath)),estimateBasis:"regex-fallback"}}function YR(e,t){return e.get("SELECT language FROM documents WHERE relative_path = ?",t)?.language??"unknown"}function XR(e,t,n,r){try{return FK(LK(e.config.projectRoot,t),"utf-8").split(`
839
839
  `).slice(n,r+1).join(`
840
- `)}catch{return""}}function AK(e,t){return e.get(`SELECT COUNT(DISTINCT c.document_id) AS c
840
+ `)}catch{return""}}function MK(e,t){return e.get(`SELECT COUNT(DISTINCT c.document_id) AS c
841
841
  FROM mentions m
842
842
  JOIN chunks c ON m.chunk_id = c.id
843
843
  JOIN (
@@ -849,9 +849,9 @@ describe.skipIf(inputs.length === 0)('twin-ab: ${e.shortName} vs ${t.shortName}'
849
849
  ) sym_def ON sym_def.symbol_id = m.symbol_id
850
850
  WHERE m.symbol_id = ?
851
851
  AND m.role != 1
852
- AND sym_def.document_id != c.document_id`,t)?.c??0}function MK(e,t){return new Set(e.filter(n=>n.file!==t).map(n=>n.symbol)).size}function OK(e){let t=0;return vm(e,n=>{t+=QR(n)}),t}function jK(e,t,n){let r=[...t].sort((i,o)=>i.startLine-o.startLine||o.endLine-i.endLine);vm(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 vm(e,t){t(e);for(let n of e.namedChildren)vm(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 BK=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 BK.has(e.type)?1:e.type==="binary_expression"&&e.parent?.type!=="binary_expression"&&(e.text.includes("&&")||e.text.includes("||"))?$K(e.text):0}function $K(e){return(e.match(/&&|\|\|/g)??[]).length}function ZR(e,t){let n=rt(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 Im(e,t,n={}){let r=B(e,t);if(!r)return null;let i=[{file:r.relativePath,line:r.startLine}],o=Dt(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}=HK(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 HK(e,t,n,r){let i=zr(dt(e,t,{limit:30,semantic:r.semantic,semanticEvidence:H}).map(a=>({symbol:a.symbol,file:a.file}))),o=zr(Ct(e,t,{limit:30,semantic:r.semantic,semanticEvidence:H})),s=o.length>0?o:zr(n.map(a=>({symbol:a.enclosingSymbol==="(top-level)"?a.file:a.enclosingSymbol,file:a.file})));return{producers:i,consumers:s}}function sc(e,t,n={}){let{direction:r="backward",maxDepth:i=3}=n,o=B(e,t);return o?r==="backward"?UK(e,o,i,{semantic:n.semantic!==!1}):WK(e,o,{semantic:n.semantic!==!1}):null}function UK(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=dt(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=wi(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 WK(e,t,n){let r=new Set,i=[],o=new _(e);for(let s of Dt(e,t,{semantic:n.semantic,semanticEvidence:H})){if(i.length>=30)break;let a=s.enclosingSymbol??wt(o.definitionsForFile(s.file),s.line)?.symbol??null;if(!a||a===t.symbol)continue;let c=wi(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 GK(e,t,n={}){let r=n.impactDepth??3,i=n.sliceDepth??3,o=n.semantic,s=!VK(t),a=s?Ne("trace",t,()=>ld(e,t,{semantic:o}),R=>({definitions:R.definitions.length,references:R.referencedBy.length})):{definitions:[],referencedBy:[]},c=s?Ne("call-graph",t,()=>xd(e,t,{semantic:o}),R=>({callers:R?.callers.length??0,callees:R?.callees.length??0})):null,l=s?Ne("complexity",t,()=>Rm(e,t,{semantic:o}),R=>({callees:R?.calleeCount??0})):null,u=s?Ne("dataflow",t,()=>Im(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,()=>sc(e,t,{direction:"backward",maxDepth:i,semantic:o}),R=>({maxDepth:i,connectedSymbols:R?.connectedSymbols.length??0})):null,m=s?Ne("forward-slice",t,()=>sc(e,t,{direction:"forward",maxDepth:i,semantic:o}),R=>({maxDepth:i,connectedSymbols:R?.connectedSymbols.length??0})):null,f=s?Ne("affected",t,()=>Od(e,t,{maxDepth:r,scope:n.scope}),R=>({maxDepth:r,affectedSymbols:R.length})):[],p=Ne("change-surface",t,()=>jd(e,t,{semantic:o}),R=>({symbols:R?.symbols.length??0,externalConsumers:R?.totalExternalConsumers??0})),g=Ne("system",t,()=>md(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})):ud(e,t),R=>({files:R.length,reusedSystem:y})),C=Ne("rdeps",t,()=>y?g.dependedOnBy.map(R=>({relativePath:R})):dd(e,t),R=>({files:R.length,reusedSystem:y})),x=Ne("surface",t,()=>fd(e,t),R=>({consumers:R.length})),S={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||C.length>0,module:g.files.length>0||g.symbols.length>0||x.length>0},b=[];!S.symbol&&!S.file&&!S.module&&b.push("No symbol, file, or module matched target.");let v=p?.file??a.definitions[0]?.relativePath??null;return{target:t,matched:S,history:Ne("history",v??t,()=>zK(e,v,n.gitHead)),trace:a,callGraph:c,complexity:l,dataflow:u,backwardSlice:d,forwardSlice:m,affected:f,changeSurface:p,deps:h,rdeps:C,system:g,surface:x,warnings:b}}function Ne(e,t,n,r=()=>({})){let i;return w(`plan-context.${e}`,()=>(i=n(),i),()=>({target:t,...r(i)}))}function zK(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,()=>So(e,t,{limit:5,...n?{head:n}:{}}),c=>({commits:c.commitsAnalyzed,partners:c.findings.length})),a=Ne("history.suppressions",t,()=>oc(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 VK(e){return e.includes("/")||e.includes("\\")||/\.[A-Za-z0-9]+(?::\d+(?:-\d+)?)?$/.test(e)}var qK=new Set(Ft());function wm(e,t){let{scope:n,minLoc:r=10,limit:i=30,scanLimit:o}=t??{},s=new _(e);return ft({candidates:()=>s.productionCallableDefinitions({scope:n,minLoc:r,requireFunctionLikeSymbol:!0,includeSuppressed:!0,sortByLocDesc:typeof o=="number"&&o>0}),scanLimit:o,filterCandidate:KK,profile:{name:"complexity-hotspots"},prepare:a=>{let c=YK(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?nn(d,u.callerMap(a)):d,calleeMap:s.calleeMap(a,{semantic:l}),languageByFile:c,clojureCallableIds:XK(e,a,c),branchEstimates:KR(e,a)}},evaluate:(a,c)=>JK(a,c,r),orderResults:(a,c)=>c.score-a.score||c.loc-a.loc,limit:i})}function KK(e){return e.symbol.startsWith("rust-analyzer ")?typeof e.kind=="number"&&qK.has(e.kind):!0}function JK(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 YK(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
852
+ AND sym_def.document_id != c.document_id`,t)?.c??0}function OK(e,t){return new Set(e.filter(n=>n.file!==t).map(n=>n.symbol)).size}function jK(e){let t=0;return wm(e,n=>{t+=ZR(n)}),t}function BK(e,t,n){let r=[...t].sort((i,o)=>i.startLine-o.startLine||o.endLine-i.endLine);wm(e,i=>{let o=ZR(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 wm(e,t){t(e);for(let n of e.namedChildren)wm(n,t)}function QR(e,t,n){if(e.startPosition.row>t||e.endPosition.row<n)return null;for(let r of e.namedChildren){let i=QR(r,t,n);if(i)return i}return e}var $K=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 ZR(e){return $K.has(e.type)?1:e.type==="binary_expression"&&e.parent?.type!=="binary_expression"&&(e.text.includes("&&")||e.text.includes("||"))?HK(e.text):0}function HK(e){return(e.match(/&&|\|\|/g)??[]).length}function ev(e,t){let n=rt(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 Dm(e,t,n={}){let r=B(e,t);if(!r)return null;let i=[{file:r.relativePath,line:r.startLine}],o=Dt(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}=UK(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 UK(e,t,n,r){let i=zr(dt(e,t,{limit:30,semantic:r.semantic,semanticEvidence:H}).map(a=>({symbol:a.symbol,file:a.file}))),o=zr(Ct(e,t,{limit:30,semantic:r.semantic,semanticEvidence:H})),s=o.length>0?o:zr(n.map(a=>({symbol:a.enclosingSymbol==="(top-level)"?a.file:a.enclosingSymbol,file:a.file})));return{producers:i,consumers:s}}function ac(e,t,n={}){let{direction:r="backward",maxDepth:i=3}=n,o=B(e,t);return o?r==="backward"?WK(e,o,i,{semantic:n.semantic!==!1}):GK(e,o,{semantic:n.semantic!==!1}):null}function WK(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=dt(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=wi(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 GK(e,t,n){let r=new Set,i=[],o=new _(e);for(let s of Dt(e,t,{semantic:n.semantic,semanticEvidence:H})){if(i.length>=30)break;let a=s.enclosingSymbol??wt(o.definitionsForFile(s.file),s.line)?.symbol??null;if(!a||a===t.symbol)continue;let c=wi(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 zK(e,t,n={}){let r=n.impactDepth??3,i=n.sliceDepth??3,o=n.semantic,s=!qK(t),a=s?Ne("trace",t,()=>ud(e,t,{semantic:o}),R=>({definitions:R.definitions.length,references:R.referencedBy.length})):{definitions:[],referencedBy:[]},c=s?Ne("call-graph",t,()=>Rd(e,t,{semantic:o}),R=>({callers:R?.callers.length??0,callees:R?.callees.length??0})):null,l=s?Ne("complexity",t,()=>Im(e,t,{semantic:o}),R=>({callees:R?.calleeCount??0})):null,u=s?Ne("dataflow",t,()=>Dm(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,()=>ac(e,t,{direction:"backward",maxDepth:i,semantic:o}),R=>({maxDepth:i,connectedSymbols:R?.connectedSymbols.length??0})):null,m=s?Ne("forward-slice",t,()=>ac(e,t,{direction:"forward",maxDepth:i,semantic:o}),R=>({maxDepth:i,connectedSymbols:R?.connectedSymbols.length??0})):null,f=s?Ne("affected",t,()=>jd(e,t,{maxDepth:r,scope:n.scope}),R=>({maxDepth:r,affectedSymbols:R.length})):[],p=Ne("change-surface",t,()=>Bd(e,t,{semantic:o}),R=>({symbols:R?.symbols.length??0,externalConsumers:R?.totalExternalConsumers??0})),g=Ne("system",t,()=>fd(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})):dd(e,t),R=>({files:R.length,reusedSystem:y})),C=Ne("rdeps",t,()=>y?g.dependedOnBy.map(R=>({relativePath:R})):md(e,t),R=>({files:R.length,reusedSystem:y})),x=Ne("surface",t,()=>pd(e,t),R=>({consumers:R.length})),S={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||C.length>0,module:g.files.length>0||g.symbols.length>0||x.length>0},b=[];!S.symbol&&!S.file&&!S.module&&b.push("No symbol, file, or module matched target.");let v=p?.file??a.definitions[0]?.relativePath??null;return{target:t,matched:S,history:Ne("history",v??t,()=>VK(e,v,n.gitHead)),trace:a,callGraph:c,complexity:l,dataflow:u,backwardSlice:d,forwardSlice:m,affected:f,changeSurface:p,deps:h,rdeps:C,system:g,surface:x,warnings:b}}function Ne(e,t,n,r=()=>({})){let i;return w(`plan-context.${e}`,()=>(i=n(),i),()=>({target:t,...r(i)}))}function VK(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,()=>So(e,t,{limit:5,...n?{head:n}:{}}),c=>({commits:c.commitsAnalyzed,partners:c.findings.length})),a=Ne("history.suppressions",t,()=>sc(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 qK(e){return e.includes("/")||e.includes("\\")||/\.[A-Za-z0-9]+(?::\d+(?:-\d+)?)?$/.test(e)}var KK=new Set(Ft());function Em(e,t){let{scope:n,minLoc:r=10,limit:i=30,scanLimit:o}=t??{},s=new _(e);return ft({candidates:()=>s.productionCallableDefinitions({scope:n,minLoc:r,requireFunctionLikeSymbol:!0,includeSuppressed:!0,sortByLocDesc:typeof o=="number"&&o>0}),scanLimit:o,filterCandidate:JK,profile:{name:"complexity-hotspots"},prepare:a=>{let c=XK(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?nn(d,u.callerMap(a)):d,calleeMap:s.calleeMap(a,{semantic:l}),languageByFile:c,clojureCallableIds:QK(e,a,c),branchEstimates:JR(e,a)}},evaluate:(a,c)=>YK(a,c,r),orderResults:(a,c)=>c.score-a.score||c.loc-a.loc,limit:i})}function JK(e){return e.symbol.startsWith("rust-analyzer ")?typeof e.kind=="number"&&KK.has(e.kind):!0}function YK(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 XK(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
853
  FROM documents
854
- WHERE relative_path IN (${r})`,...n);return new Map(i.map(o=>[o.relative_path,o.language?.toLowerCase()??null]))}function XK(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((G(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 jt(e,t){return`${e}\0${t}`}function gfe(e,t,n,r,i,o={}){let s=new Map(e.map(l=>[jt(l.check,l.findingId),l])),a=[],c=(l,u)=>{let d=n.get(l.findingId),m=u==="resolved"?o.verifiedAgainstByFinding?.get(jt(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(jt(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 hfe(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 QK(e,t,n,r,i=new Set){let o=new Map(e.map(c=>[jt(c.check,c.findingId),c])),s=new Set(t.map(c=>jt(c.check,c.findingId))),a=new Set(n);for(let c of t){let l=jt(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=jt(c.check,c.findingId);s.has(l)||i.has(l)||c.outcome!=="resolved"&&o.set(l,{...c,outcome:"resolved"})}return[...o.values()]}function Dm(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,ZK=50,e2=.1,t2=10;function n2(e,t,n){return e.filter(r=>r.check===t).sort((r,i)=>i.firstSeen-r.firstSeen).slice(0,n)}function Cfe(e,t,n){if(t.length===0)return null;let r=new Map(e.map(s=>[jt(s.check,s.findingId),s])),i=t.map(s=>r.get(jt(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 xfe(e,t){let n=[];for(let r of[...new Set(t)].sort()){let i=n2(e,r,ZK);i.length<t2||i.filter(a=>a.outcome==="resolved").length/i.length>=e2||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 ac(e){return ef(e).map(t=>({check:t.check,findingId:t.findingId,firstSeen:t.firstSeen,lastSeen:t.lastSeen,timesShown:t.timesShown,outcome:t.outcome}))}function Rfe(e,t,n,r=Date.now(),i=new Set){let o=ac(e),s=QK(o,t,n,r,i);return tf(e,s),s}function cn(e){return e.scoreCount??e.count}function rv(e){let t=s2(e),{breakdown:n,pressure:r}=a2(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:cn(e.reactHookCandidates),reactLargeComponentPressureFiles:e.reactLargeComponentPressure.count,vueComponentDuplicatePairs:e.vueComponentDuplicates.count,vueComposableCandidatePairs:e.vueComposableCandidates.count,vueComposableCandidateScoreCount:cn(e.vueComposableCandidates),vueLargeViewPressureFiles:e.vueLargeViewPressure.count,extractionCandidates:e.extractCount,wrappers:e.wrappers.count,wrapperScoreCount:cn(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:r2(e),validation:o2(e),suppressions:e.suppressions,actions:t,pressure:r,topComplexity:e.complexity.top,warnings:e.warnings.length>0?e.warnings:void 0,detectorPrecision:[]}}function r2(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:i2(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 i2(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:Bt(n.score*Math.log2(1+r))}}).sort((n,r)=>r.weighted-n.weighted):null}function o2(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?Bt(i/r.size):0,c=s>0?Bt(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=Bt(f/m.size);l[u]={flaggedFiles:m.size,fixDensity:p,lift:c>0?Bt(p/c):null}}return{flaggedFiles:r.size,flaggedFixDensity:a,baselineFixDensity:c,ratio:r.size>0&&c>0?Bt(a/c):null,byCategory:l,validationBasis:{method:"subject-regex",commitsScanned:e.gitEvidence?.commitsScanned??0}}}function Bt(e){return Math.round(e*100)/100}function iv(e){return Number.isInteger(e)?String(e):e.toFixed(2).replace(/0+$/,"").replace(/\.$/,"")}function cc(e,t="existing shared infrastructure discount"){let n=cn(e);return Math.abs(n-e.count)<.01?"":` (${iv(n)} score-weighted after ${t})`}function Ao(e,t){let n=cn(e),r=`${e.count} ${t}`;return Math.abs(n-e.count)<.01?r:`${r} (${iv(n)} score-weighted)`}function s2(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${cc(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${cc(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${cc(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`+cc({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 a2(e){let t=Math.max(e.statsResult.documents,1),n=Math.max(e.statsResult.symbols,1),r=[],i=[],o=(R,E,D)=>{E>0&&r.push({axis:R,points:E,detail:D,kind:tv[R]??"hygiene"})},s=(R,E,D,k,L,ne,X)=>{let F=Math.max(k,1);if(D<=F)return;let ae=D/F,Z=Math.min(L,Math.ceil(Math.log2(ae)*ne));if(Z<=0)return;let ln=tv[R]??"hygiene";i.push({axis:R,category:E,kind:ln,count:D,threshold:Bt(F),ratio:Bt(ae),extraPenalty:Z}),o(R,Z,`${D} ${X} exceed pressure threshold ${Bt(F)} (${Bt(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=cn(e.reactHookCandidates),p=f/t*1e3;o("react-hook-candidates",Math.min(10,Math.round(p)),Ao(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=cn(e.vueComposableCandidates),C=h/t*1e3;o("vue-composable-candidates",Math.min(10,Math.round(C)),Ao(e.vueComposableCandidates,"duplicated Vue behavior pair(s)"));let x=e.vueLargeViewPressure.count/t*1e3;o("vue-large-view-pressure",Math.min(5,Math.round(x/2)),`${e.vueLargeViewPressure.count} large Vue view pressure file(s)`);let S=cn(e.wrappers);o("wrappers",Math.min(3,S),Ao(e.wrappers,"wrapper candidate(s)"));let b=cn(e.passthroughs);o("passthroughs",Math.min(3,b),Ao(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)),Ao({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",S,50,4,2,"wrapper candidate(s)"),s("passthroughs-pressure","Passthrough functions",b,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 c2}from"v8";var l2=64*1024*1024;function Em(){let e=globalThis.gc;if(!e)return;let t=c2();t.heap_size_limit-t.used_heap_size<l2||e()}var u2=50,d2=25e3,m2=2500,ov=2500,sv=50,f2=10,lc=["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"],p2={overview:(e,t,n,r)=>({phase:"overview",statsResult:r,warnings:n.warnings}),dead:(e,t,n)=>({phase:"dead",dead:b2(e,t,n)}),isolated:(e,t,n)=>({phase:"isolated",isolated:S2(e,t,n)}),cycles:(e,t,n)=>({phase:"cycles",realCycleCount:C2(e,t,n)}),similar:(e,t,n)=>({phase:"similar",similarCount:x2(e,t,n)}),"duplicate-bodies":(e,t,n)=>({phase:"duplicate-bodies",duplicateBodies:v2(e,t,n)}),"twin-drift":(e,t,n)=>({phase:"twin-drift",twinDrift:I2(e,t,n)}),"react-component-duplicates":(e,t,n)=>({phase:"react-component-duplicates",reactComponentDuplicates:w2(e,t,n)}),"react-hook-candidates":(e,t,n)=>({phase:"react-hook-candidates",reactHookCandidates:D2(e,t,n)}),"react-large-component-pressure":(e,t,n)=>({phase:"react-large-component-pressure",reactLargeComponentPressure:E2(e,t,n)}),"vue-component-duplicates":(e,t,n)=>({phase:"vue-component-duplicates",vueComponentDuplicates:k2(e,t,n)}),"vue-composable-candidates":(e,t,n)=>({phase:"vue-composable-candidates",vueComposableCandidates:P2(e,t,n)}),"vue-large-view-pressure":(e,t,n)=>({phase:"vue-large-view-pressure",vueLargeViewPressure:T2(e,t,n)}),"extract-candidates":(e,t,n)=>({phase:"extract-candidates",extractCount:R2(e,t,n)}),"wrapper-candidates":(e,t,n)=>({phase:"wrapper-candidates",wrappers:_2(e,t,n)}),"passthrough-candidates":(e,t,n)=>({phase:"passthrough-candidates",passthroughs:F2(e,t,n)}),"stale-abstractions":(e,t,n)=>({phase:"stale-abstractions",stale:L2(e,t,n)}),drift:(e,t,n)=>({phase:"drift",drift:O2(e,t,n)}),"complexity-hotspots":(e,t,n)=>({phase:"complexity-hotspots",complexity:j2(e,t,n)}),"git-evidence":(e,t,n)=>({phase:"git-evidence",gitEvidence:N2(e,n)}),suppressions:(e,t,n)=>({phase:"suppressions",suppressions:A2(e,n)}),"coverage-contracts":(e,t,n)=>({phase:"coverage-contracts",coverageContracts:M2(e,n)})};function km(e,t,n={}){return g2(e,[t],n)[0]}function g2(e,t,n={}){return h2(e,n.full!==!1,(r,i)=>{let o={...i,releaseCachesBetweenPhases:!1};return t.map(s=>p2[s](e,n.scope,o,r))})}function h2(e,t,n){let r=or(e),i=B2(r,t);try{return n(r,i)}finally{hd(e,{semanticProvider:!0}),Em()}}function Pm(e){return rv(y2(e))}function y2(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 b2(e,t,n){return fe(e,n,"dead",()=>{let r=sr(e,{scope:t,...me.dead,scanLimit:n.candidateScanLimit,semantic:n.semantic});return uc(U2(e,r.symbols))})}function S2(e,t,n){return fe(e,n,"isolated",()=>{let r=uo(e,{scope:t,...me.isolated,scanLimit:n.candidateScanLimit,semantic:n.semantic});return uc(W2(e,r))})}function C2(e,t,n){return fe(e,n,"cycles",()=>lo(e,{scope:t}).filter(i=>i.kind==="real").length)}function x2(e,t,n){let r=fe(e,n,"similar",()=>Ed(e,{scope:t,...me.similar,scanLimit:n.candidateScanLimit,semantic:n.semantic}));return Math.min(r,n.candidateResultLimit)}function R2(e,t,n){return fe(e,n,"extract-candidates",()=>yo(e,{scope:t,...me.extract,limit:n.candidateResultLimit,scanLimit:n.candidateScanLimit,semantic:n.semantic}).length)}function v2(e,t,n){return fe(e,n,"duplicate-bodies",()=>{let r=Io(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 I2(e,t,n){return fe(e,n,"twin-drift",()=>{let r=ni(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 w2(e,t,n){return fe(e,n,"react-component-duplicates",()=>{let r=fo(e,{scope:t,limit:n.candidateResultLimit,scanLimit:n.candidateScanLimit});return Tm(r)})}function D2(e,t,n){return fe(e,n,"react-hook-candidates",()=>{let r=po(e,{scope:t,limit:n.candidateResultLimit,scanLimit:n.candidateScanLimit});return uv(r,z2)})}function E2(e,t,n){return fe(e,n,"react-large-component-pressure",()=>{let r=kd(e,{scope:t,limit:n.candidateResultLimit,scanLimit:n.candidateScanLimit});return G2(r)})}function k2(e,t,n){return fe(e,n,"vue-component-duplicates",()=>{let r=go(e,{scope:t,limit:n.candidateResultLimit,scanLimit:n.candidateScanLimit});return Tm(r)})}function P2(e,t,n){return fe(e,n,"vue-composable-candidates",()=>{let r=ho(e,{scope:t,limit:n.candidateResultLimit,scanLimit:n.candidateScanLimit});return uv(r,V2)})}function T2(e,t,n){return fe(e,n,"vue-large-view-pressure",()=>{let r=Pd(e,{scope:t,limit:n.candidateResultLimit,scanLimit:n.candidateScanLimit});return uc(r)})}function _2(e,t,n){return fe(e,n,"wrapper-candidates",()=>{let r=_o(e,{scope:t,...me.wrappers,limit:n.candidateResultLimit,scanLimit:n.candidateScanLimit,semantic:n.semantic});return lv(r,q2)})}function F2(e,t,n){return fe(e,n,"passthrough-candidates",()=>{let r=ko(e,{scope:t,...me.passthroughs,limit:n.candidateResultLimit,scanLimit:n.candidateScanLimit,semantic:n.semantic});return lv(r,K2)})}function L2(e,t,n){return fe(e,n,"stale-abstractions",()=>{let r=To(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 N2(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=So(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:_m(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 A2(e,t){return fe(e,t,"suppressions",()=>{let n=oc(e);return{total:n.total,byCategory:{...n.byCategory}}})}function M2(e,t){return fe(e,t,"coverage-contracts",()=>{let n=e.config.coverageContracts??[],i=sR(e,n).filter(o=>o.status!=="ok");return{count:i.length,loc:0,files:[...new Set(i.map(o=>o.file))].sort()}})}function O2(e,t,n){return fe(e,n,"drift",()=>{let r=Eo(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 j2(e,t,n){return fe(e,n,"complexity-hotspots",()=>{let r=wm(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>u2).length}})}function B2(e,t){let n=e.symbols>=d2||e.documents>=m2,r=t?Number.POSITIVE_INFINITY:sv,i=t?Number.POSITIVE_INFINITY:f2;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 $2(e,t){t.releaseCachesBetweenPhases&&(hd(e),Em())}function fe(e,t,n,r){H2(n);try{return r()}finally{$2(e,t)}}function H2(e){process.env.SCIP_QUERY_HEALTH_TRACE==="1"&&console.error(`[health] ${e}`)}function U2(e,t){return t.filter(n=>!Ee(e,n.relativePath)&&!de(e,n.symbol,n.relativePath)&&n.kind==="dead-code")}function W2(e,t){return t.filter(n=>!Ee(e,n.relativePath)&&!de(e,n.symbol,n.relativePath))}function uc(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{...uc(e),scoreCount:_m(e.reduce((r,i)=>r+t(i),0))}}function G2(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 Tm(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{...Tm(e),scoreCount:_m(e.reduce((r,i)=>r+t(i),0))}}function z2(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 V2(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 q2(e){return e.actionTier==="signal"?.25:1}function K2(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 _m(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 J2(e,t,n,r={}){let i=Dd(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 Y2(e,t={}){let{scope:n,limit:r}=t,i=new _(e),o=iJ([...X2(e,n),...eJ(e,i,n)]);return oJ(o),r?o.slice(0,r):o}function X2(e,t){let n=[];for(let r of Q2(e,t)){if(e.isIgnored(r.barrel_path)||e.isIgnored(r.original_path)||id(e,r.barrel_path)||P(e,r.barrel_path)&&gs(e,r.barrel_path).length===0)continue;let i=Z2(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 Q2(e,t){let n=t?"AND barrel_d.relative_path LIKE ?":"",r=t?[`%${t}%`]:[];return e.all(`SELECT DISTINCT
854
+ WHERE relative_path IN (${r})`,...n);return new Map(i.map(o=>[o.relative_path,o.language?.toLowerCase()??null]))}function QK(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((G(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 jt(e,t){return`${e}\0${t}`}function yfe(e,t,n,r,i,o={}){let s=new Map(e.map(l=>[jt(l.check,l.findingId),l])),a=[],c=(l,u)=>{let d=n.get(l.findingId),m=u==="resolved"?o.verifiedAgainstByFinding?.get(jt(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(jt(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 bfe(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 ZK(e,t,n,r,i=new Set){let o=new Map(e.map(c=>[jt(c.check,c.findingId),c])),s=new Set(t.map(c=>jt(c.check,c.findingId))),a=new Set(n);for(let c of t){let l=jt(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=jt(c.check,c.findingId);s.has(l)||i.has(l)||c.outcome!=="resolved"&&o.set(l,{...c,outcome:"resolved"})}return[...o.values()]}function km(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)/tv):null})}return r.sort((i,o)=>i.check.localeCompare(o.check))}var tv=864e5,e2=50,t2=.1,n2=10;function r2(e,t,n){return e.filter(r=>r.check===t).sort((r,i)=>i.firstSeen-r.firstSeen).slice(0,n)}function Rfe(e,t,n){if(t.length===0)return null;let r=new Map(e.map(s=>[jt(s.check,s.findingId),s])),i=t.map(s=>r.get(jt(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)/tv)));return`${t.length} finding(s), ${i.length} shown before and unresolved (oldest: ${o} day(s))`}function vfe(e,t){let n=[];for(let r of[...new Set(t)].sort()){let i=r2(e,r,e2);i.length<n2||i.filter(a=>a.outcome==="resolved").length/i.length>=t2||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 cc(e){return nf(e).map(t=>({check:t.check,findingId:t.findingId,firstSeen:t.firstSeen,lastSeen:t.lastSeen,timesShown:t.timesShown,outcome:t.outcome}))}function Ife(e,t,n,r=Date.now(),i=new Set){let o=cc(e),s=ZK(o,t,n,r,i);return rf(e,s),s}function cn(e){return e.scoreCount??e.count}function iv(e){let t=a2(e),{breakdown:n,pressure:r}=c2(e),i=rv(n,"risk"),o=rv(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:cn(e.reactHookCandidates),reactLargeComponentPressureFiles:e.reactLargeComponentPressure.count,vueComponentDuplicatePairs:e.vueComponentDuplicates.count,vueComposableCandidatePairs:e.vueComposableCandidates.count,vueComposableCandidateScoreCount:cn(e.vueComposableCandidates),vueLargeViewPressureFiles:e.vueLargeViewPressure.count,extractionCandidates:e.extractCount,wrappers:e.wrappers.count,wrapperScoreCount:cn(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:i2(e),validation:s2(e),suppressions:e.suppressions,actions:t,pressure:r,topComplexity:e.complexity.top,warnings:e.warnings.length>0?e.warnings:void 0,detectorPrecision:[]}}function i2(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:o2(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 o2(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:Bt(n.score*Math.log2(1+r))}}).sort((n,r)=>r.weighted-n.weighted):null}function s2(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?Bt(i/r.size):0,c=s>0?Bt(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=Bt(f/m.size);l[u]={flaggedFiles:m.size,fixDensity:p,lift:c>0?Bt(p/c):null}}return{flaggedFiles:r.size,flaggedFixDensity:a,baselineFixDensity:c,ratio:r.size>0&&c>0?Bt(a/c):null,byCategory:l,validationBasis:{method:"subject-regex",commitsScanned:e.gitEvidence?.commitsScanned??0}}}function Bt(e){return Math.round(e*100)/100}function ov(e){return Number.isInteger(e)?String(e):e.toFixed(2).replace(/0+$/,"").replace(/\.$/,"")}function lc(e,t="existing shared infrastructure discount"){let n=cn(e);return Math.abs(n-e.count)<.01?"":` (${ov(n)} score-weighted after ${t})`}function Ao(e,t){let n=cn(e),r=`${e.count} ${t}`;return Math.abs(n-e.count)<.01?r:`${r} (${ov(n)} score-weighted)`}function a2(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${lc(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${lc(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${lc(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`+lc({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 nv={"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 rv(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 c2(e){let t=Math.max(e.statsResult.documents,1),n=Math.max(e.statsResult.symbols,1),r=[],i=[],o=(R,E,D)=>{E>0&&r.push({axis:R,points:E,detail:D,kind:nv[R]??"hygiene"})},s=(R,E,D,k,L,ne,X)=>{let F=Math.max(k,1);if(D<=F)return;let ae=D/F,Z=Math.min(L,Math.ceil(Math.log2(ae)*ne));if(Z<=0)return;let ln=nv[R]??"hygiene";i.push({axis:R,category:E,kind:ln,count:D,threshold:Bt(F),ratio:Bt(ae),extraPenalty:Z}),o(R,Z,`${D} ${X} exceed pressure threshold ${Bt(F)} (${Bt(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=cn(e.reactHookCandidates),p=f/t*1e3;o("react-hook-candidates",Math.min(10,Math.round(p)),Ao(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=cn(e.vueComposableCandidates),C=h/t*1e3;o("vue-composable-candidates",Math.min(10,Math.round(C)),Ao(e.vueComposableCandidates,"duplicated Vue behavior pair(s)"));let x=e.vueLargeViewPressure.count/t*1e3;o("vue-large-view-pressure",Math.min(5,Math.round(x/2)),`${e.vueLargeViewPressure.count} large Vue view pressure file(s)`);let S=cn(e.wrappers);o("wrappers",Math.min(3,S),Ao(e.wrappers,"wrapper candidate(s)"));let b=cn(e.passthroughs);o("passthroughs",Math.min(3,b),Ao(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)),Ao({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",S,50,4,2,"wrapper candidate(s)"),s("passthroughs-pressure","Passthrough functions",b,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 l2}from"v8";var u2=64*1024*1024;function Pm(){let e=globalThis.gc;if(!e)return;let t=l2();t.heap_size_limit-t.used_heap_size<u2||e()}var d2=50,m2=25e3,f2=2500,sv=2500,av=50,p2=10,uc=["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"],g2={overview:(e,t,n,r)=>({phase:"overview",statsResult:r,warnings:n.warnings}),dead:(e,t,n)=>({phase:"dead",dead:S2(e,t,n)}),isolated:(e,t,n)=>({phase:"isolated",isolated:C2(e,t,n)}),cycles:(e,t,n)=>({phase:"cycles",realCycleCount:x2(e,t,n)}),similar:(e,t,n)=>({phase:"similar",similarCount:R2(e,t,n)}),"duplicate-bodies":(e,t,n)=>({phase:"duplicate-bodies",duplicateBodies:I2(e,t,n)}),"twin-drift":(e,t,n)=>({phase:"twin-drift",twinDrift:w2(e,t,n)}),"react-component-duplicates":(e,t,n)=>({phase:"react-component-duplicates",reactComponentDuplicates:D2(e,t,n)}),"react-hook-candidates":(e,t,n)=>({phase:"react-hook-candidates",reactHookCandidates:E2(e,t,n)}),"react-large-component-pressure":(e,t,n)=>({phase:"react-large-component-pressure",reactLargeComponentPressure:k2(e,t,n)}),"vue-component-duplicates":(e,t,n)=>({phase:"vue-component-duplicates",vueComponentDuplicates:P2(e,t,n)}),"vue-composable-candidates":(e,t,n)=>({phase:"vue-composable-candidates",vueComposableCandidates:T2(e,t,n)}),"vue-large-view-pressure":(e,t,n)=>({phase:"vue-large-view-pressure",vueLargeViewPressure:_2(e,t,n)}),"extract-candidates":(e,t,n)=>({phase:"extract-candidates",extractCount:v2(e,t,n)}),"wrapper-candidates":(e,t,n)=>({phase:"wrapper-candidates",wrappers:F2(e,t,n)}),"passthrough-candidates":(e,t,n)=>({phase:"passthrough-candidates",passthroughs:L2(e,t,n)}),"stale-abstractions":(e,t,n)=>({phase:"stale-abstractions",stale:N2(e,t,n)}),drift:(e,t,n)=>({phase:"drift",drift:j2(e,t,n)}),"complexity-hotspots":(e,t,n)=>({phase:"complexity-hotspots",complexity:B2(e,t,n)}),"git-evidence":(e,t,n)=>({phase:"git-evidence",gitEvidence:A2(e,n)}),suppressions:(e,t,n)=>({phase:"suppressions",suppressions:M2(e,n)}),"coverage-contracts":(e,t,n)=>({phase:"coverage-contracts",coverageContracts:O2(e,n)})};function Tm(e,t,n={}){return h2(e,[t],n)[0]}function h2(e,t,n={}){return y2(e,n.full!==!1,(r,i)=>{let o={...i,releaseCachesBetweenPhases:!1};return t.map(s=>g2[s](e,n.scope,o,r))})}function y2(e,t,n){let r=or(e),i=$2(r,t);try{return n(r,i)}finally{yd(e,{semanticProvider:!0}),Pm()}}function _m(e){return iv(b2(e))}function b2(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:cv(e,"git-evidence")?.gitEvidence??null,suppressions:cv(e,"suppressions")?.suppressions??null,coverageContracts:ge(e,"coverage-contracts").coverageContracts}}function cv(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 S2(e,t,n){return fe(e,n,"dead",()=>{let r=sr(e,{scope:t,...me.dead,scanLimit:n.candidateScanLimit,semantic:n.semantic});return dc(W2(e,r.symbols))})}function C2(e,t,n){return fe(e,n,"isolated",()=>{let r=uo(e,{scope:t,...me.isolated,scanLimit:n.candidateScanLimit,semantic:n.semantic});return dc(G2(e,r))})}function x2(e,t,n){return fe(e,n,"cycles",()=>lo(e,{scope:t}).filter(i=>i.kind==="real").length)}function R2(e,t,n){let r=fe(e,n,"similar",()=>kd(e,{scope:t,...me.similar,scanLimit:n.candidateScanLimit,semantic:n.semantic}));return Math.min(r,n.candidateResultLimit)}function v2(e,t,n){return fe(e,n,"extract-candidates",()=>yo(e,{scope:t,...me.extract,limit:n.candidateResultLimit,scanLimit:n.candidateScanLimit,semantic:n.semantic}).length)}function I2(e,t,n){return fe(e,n,"duplicate-bodies",()=>{let r=Io(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 w2(e,t,n){return fe(e,n,"twin-drift",()=>{let r=ni(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 D2(e,t,n){return fe(e,n,"react-component-duplicates",()=>{let r=fo(e,{scope:t,limit:n.candidateResultLimit,scanLimit:n.candidateScanLimit});return Fm(r)})}function E2(e,t,n){return fe(e,n,"react-hook-candidates",()=>{let r=po(e,{scope:t,limit:n.candidateResultLimit,scanLimit:n.candidateScanLimit});return dv(r,V2)})}function k2(e,t,n){return fe(e,n,"react-large-component-pressure",()=>{let r=Pd(e,{scope:t,limit:n.candidateResultLimit,scanLimit:n.candidateScanLimit});return z2(r)})}function P2(e,t,n){return fe(e,n,"vue-component-duplicates",()=>{let r=go(e,{scope:t,limit:n.candidateResultLimit,scanLimit:n.candidateScanLimit});return Fm(r)})}function T2(e,t,n){return fe(e,n,"vue-composable-candidates",()=>{let r=ho(e,{scope:t,limit:n.candidateResultLimit,scanLimit:n.candidateScanLimit});return dv(r,q2)})}function _2(e,t,n){return fe(e,n,"vue-large-view-pressure",()=>{let r=Td(e,{scope:t,limit:n.candidateResultLimit,scanLimit:n.candidateScanLimit});return dc(r)})}function F2(e,t,n){return fe(e,n,"wrapper-candidates",()=>{let r=_o(e,{scope:t,...me.wrappers,limit:n.candidateResultLimit,scanLimit:n.candidateScanLimit,semantic:n.semantic});return uv(r,K2)})}function L2(e,t,n){return fe(e,n,"passthrough-candidates",()=>{let r=ko(e,{scope:t,...me.passthroughs,limit:n.candidateResultLimit,scanLimit:n.candidateScanLimit,semantic:n.semantic});return uv(r,J2)})}function N2(e,t,n){return fe(e,n,"stale-abstractions",()=>{let r=To(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 A2(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=So(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:Lm(o.findings.reduce((a,c)=>a+lv(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:lv(a),subjectContext:a.subjectContext}))},fileStats:s,commitsScanned:i?.commits.length??0}})}function M2(e,t){return fe(e,t,"suppressions",()=>{let n=sc(e);return{total:n.total,byCategory:{...n.byCategory}}})}function O2(e,t){return fe(e,t,"coverage-contracts",()=>{let n=e.config.coverageContracts??[],i=aR(e,n).filter(o=>o.status!=="ok");return{count:i.length,loc:0,files:[...new Set(i.map(o=>o.file))].sort()}})}function j2(e,t,n){return fe(e,n,"drift",()=>{let r=Eo(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 B2(e,t,n){return fe(e,n,"complexity-hotspots",()=>{let r=Em(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>d2).length}})}function $2(e,t){let n=e.symbols>=m2||e.documents>=f2,r=t?Number.POSITIVE_INFINITY:av,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:sv,candidateResultLimit:r,complexityResultLimit:i,semantic:!1,gitHistoryMode:"bounded",releaseCachesBetweenPhases:!0,warnings:[`Large index detected; candidate-style health checks scanned their highest-priority ${sv} symbols and reported their top ${av} findings. Enable full mode for unbounded candidate counts.`]}}function H2(e,t){t.releaseCachesBetweenPhases&&(yd(e),Pm())}function fe(e,t,n,r){U2(n);try{return r()}finally{H2(e,t)}}function U2(e){process.env.SCIP_QUERY_HEALTH_TRACE==="1"&&console.error(`[health] ${e}`)}function W2(e,t){return t.filter(n=>!Ee(e,n.relativePath)&&!de(e,n.symbol,n.relativePath)&&n.kind==="dead-code")}function G2(e,t){return t.filter(n=>!Ee(e,n.relativePath)&&!de(e,n.symbol,n.relativePath))}function dc(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 uv(e,t){return{...dc(e),scoreCount:Lm(e.reduce((r,i)=>r+t(i),0))}}function z2(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 Fm(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 dv(e,t){return{...Fm(e),scoreCount:Lm(e.reduce((r,i)=>r+t(i),0))}}function V2(e){let t=e.sharedHooks.length>0,n=mv({namedState:e.sharedState,requests:e.sharedRequests,lifecycle:e.sharedEffects,functions:e.sharedHandlers});return t&&n<=2?0:t?.5:fv(e.sharedState,e.sharedHandlers,e.sharedHandlerVerbs)?.25:n>=2?1:.5}function q2(e){let t=e.sharedComposables.length+e.sharedStores.length>0,n=mv({namedState:e.sharedBindings,requests:e.sharedRequests,lifecycle:e.sharedLifecycle,functions:e.sharedFunctions});return t&&n<=2?0:t?.5:fv(e.sharedBindings,e.sharedFunctions,e.sharedFunctionVerbs)?.25:n>=2?1:.5}function mv(e){return e.requests.length*2+e.lifecycle.length+e.namedState.filter(t=>!gv.has(pv(t))).length+Math.min(e.functions.length,3)}function fv(e,t,n){let r=[...e,...t,...n].map(pv);return r.length>0&&r.every(i=>gv.has(i))}function pv(e){return e.replace(/^handle/,"").replace(/^is/,"").replace(/^has/,"").toLowerCase()}function K2(e){return e.actionTier==="signal"?.25:1}function J2(e){return e.actionTier==="signal"?.25:1}function lv(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 Lm(e){return Math.round(e*100)/100}var gv=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 Y2(e,t,n,r={}){let i=Ed(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 X2(e,t={}){let{scope:n,limit:r}=t,i=new _(e),o=oJ([...Q2(e,n),...tJ(e,i,n)]);return sJ(o),r?o.slice(0,r):o}function Q2(e,t){let n=[];for(let r of Z2(e,t)){if(e.isIgnored(r.barrel_path)||e.isIgnored(r.original_path)||od(e,r.barrel_path)||P(e,r.barrel_path)&&hs(e,r.barrel_path).length===0)continue;let i=eJ(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,...yv(e,r.barrel_path)})}return n}function Z2(e,t){let n=t?"AND barrel_d.relative_path LIKE ?":"",r=t?[`%${t}%`]:[];return e.all(`SELECT DISTINCT
855
855
  barrel_d.id AS barrel_doc_id,
856
856
  barrel_d.relative_path AS barrel_path,
857
857
  gs.id AS symbol_id,
@@ -881,7 +881,7 @@ describe.skipIf(inputs.length === 0)('twin-ab: ${e.shortName} vs ${t.shortName}'
881
881
  -- Only function-level symbols (ending with ().), not module-level
882
882
  AND gs.symbol LIKE '%().'
883
883
  ${n}
884
- ORDER BY barrel_d.relative_path, gs.symbol`,...r)}function Z2(e,t){return e.get(`SELECT
884
+ ORDER BY barrel_d.relative_path, gs.symbol`,...r)}function eJ(e,t){return e.get(`SELECT
885
885
  SUM(CASE WHEN uses_barrel = 1 THEN 1 ELSE 0 END) AS barrel_consumers,
886
886
  SUM(CASE WHEN uses_barrel = 0 THEN 1 ELSE 0 END) AS direct_consumers
887
887
  FROM (
@@ -910,18 +910,18 @@ describe.skipIf(inputs.length === 0)('twin-ab: ${e.shortName} vs ${t.shortName}'
910
910
  AND consumer_d.id != ?
911
911
  ${e.pathExclusionsFor("consumer_d")}
912
912
  GROUP BY consumer_d.id
913
- )`,t.barrel_doc_id,t.symbol_id,t.barrel_doc_id,t.original_doc_id)}function eJ(e,t,n){let r=[];for(let i of tJ(e,n))yv(e,i,i)>0||r.push(...nJ(e,t,i));return r}function tJ(e,t){return N(e,{scope:t,includeIgnored:!1}).filter(n=>gs(e,n).length>0||qt(e,n).length>0)}function nJ(e,t,n){let r=gs(e,n).filter(o=>o.sourcePath&&!e.isIgnored(o.sourcePath)).flatMap(o=>gv(e,t,n,o.sourcePath,[rJ(o.specifier)])),i=qt(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 rJ(e){return e.split("::").at(-1)?.split("/").at(-1)?.replace(/\.[^.]+$/,"")??e}function hv(e,t){return ir(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 re(e,i))o.sourcePath===t&&r.add(i);return r.size}function iJ(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 oJ(e){e.sort((t,n)=>n.directConsumers-t.directConsumers||t.barrelFile.localeCompare(n.barrelFile)||t.shortName.localeCompare(n.shortName))}function sJ(e,t={}){let{samples:n=50,scope:r,maxDisagreements:i=5}=t,o=new _(e),s=aJ(o.productionCallableDefinitions({scope:r,minLoc:2,requireFunctionLikeSymbol:!0}),n),a=cJ(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"?na(e,s):new Map,m=a==="source"?dJ(e,o,s):null;for(let f of s){let p=dc(f,a==="semantic"?ta(e,f).map(S=>S.file):[...m?.referencesBySymbolId.get(f.symbolId)??[]]),g=dc(f,a==="semantic"?(d.get(f.symbolId)??[]).map(S=>S.file):[...m?.calleesBySymbolId.get(f.symbolId)??[]]);u+=1;let y=dc(f,Dt(e,f,{semanticEvidence:H}).map(S=>S.file)),h=dc(f,(o.calleeMap([f],{semantic:!1}).get(f.symbolId)??[]).map(S=>S.file)),C=Fm(a,"references"),x=Fm(a,"callees");Sv(c.references,f,"references",y,p,C,l),Sv(c.callees,f,"callees",h,g,x,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?Nm(u/s.length):0,oracleKind:a,scores:["references","callees"].map(f=>uJ(f,c[f],a)),topDisagreements:l.slice(0,i)}}function bv(){return{comparedSymbols:0,agreed:0,cheapTotal:0,oracleTotal:0,skippedOraclePartial:0}}function aJ(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 cJ(e,t){let n=t[0];if(!n)return null;if(Lm(e,n))return"source";try{if(We(e).capability("semantic-references",n.relativePath).available)return"semantic"}catch{}return t.some(r=>Lm(e,r))?"source":null}function dc(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 lJ={references:!0,callees:!1};function uJ(e,t,n){let r=t.oracleTotal>0?t.agreed/t.oracleTotal:1,i=t.cheapTotal-t.agreed,o=Fm(n,e);return{question:e,comparedSymbols:t.comparedSymbols,precision:o&&t.cheapTotal>0?Nm(t.agreed/t.cheapTotal):null,recall:Nm(r),unverified:i,skippedOraclePartial:t.skippedOraclePartial}}function Fm(e,t){return e==="semantic"?lJ[t]:!1}function Lm(e,t){return M(t.relativePath)==="clojure"&&G(e,t.relativePath)!==null}function dJ(e,t,n){let r=new Map,i=new Map,o=n.filter(c=>Lm(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=G(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=G(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 Nm(e){return Math.round(e*1e3)/1e3}var mJ=new Set(Ft());function fJ(e,t={}){let{scope:n,minLoc:r=1,limit:i,scanLimit:o,maxShapeFrequency:s=12}=t,a=t.semantic!==!1,c=hJ(e,pJ(e,{scope:n,minLoc:r,scanLimit:o}),{semantic:a,maxShapeFrequency:s}),l=bJ(c);return i?l.slice(0,i):l}function pJ(e,t){let n=xe(e,{scope:t.scope}).filter(r=>gJ(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 gJ(e){return!e.isFunctionLike||Ie(e.symbol)?!1:e.kind===null||mJ.has(e.kind)}function hJ(e,t,n){let r=[];for(let s of t){let a=CJ(e,s,n);a&&r.push({signature:a,definition:s,fn:yJ(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=SJ(s.fn.loc),c=(i.get(s.signature)??0)>n.maxShapeFrequency,l=c?sm(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 yJ(e){return{symbol:e.symbol,shortName:I(e.symbol),file:e.relativePath,startLine:e.startLine,endLine:e.endLine,loc:O(e)}}function bJ(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 SJ(e){return e<=5?"<=5":e<=20?"6-20":">20"}function CJ(e,t,n){if(n.semantic){let o=by(e,t);if(o)return o}let r=xJ(t.documentation),i=r?IJ(r):null;return i||wJ(RJ(e,t.relativePath,t.startLine,t.endLine,t.leaf),t.leaf)}function xJ(e){return Kt(Jt(e))}function RJ(e,t,n,r,i){let o=P(e,t);if(!o)return null;let s=o.split(/\r?\n/),a=EJ(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,vJ(u)))return u}if(u&&u.includes("("))return u}return null}function vJ(e){let t=e.replace(/\s+/g," ").trim();return!t.includes("(")||Ci(t)>0?!1:/[;{]$/.test(t)||/\)\s*(?::\s*[^={]+)?\s*(?:=>|=|throws\b|where\b|$)/i.test(t)||/\)\s*As\s+.+$/i.test(t)}function IJ(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 wJ(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=DJ(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 DJ(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 EJ(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 PJ,spawnSync as Hge}from"child_process";var oi=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 mc(e){return new Promise((t,n)=>{let r=e.maxBuffer??10485760,i=PJ(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 oi(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 Am(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 TJ}from"child_process";import{existsSync as _J,mkdirSync as FJ,readFileSync as LJ,renameSync as NJ,writeFileSync as AJ}from"fs";import{dirname as vv,join as MJ}from"path";var fc=3,OJ="health-report-cache.json";function Mm(e,t,n,r=HJ()){let i=Te(e);return i?{version:fc,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=kv()){let r=Dv(e),i=Ev(t),o=!1;return w("health.report-cache.read",()=>{if(!n.existsSync(r))return null;try{let s=JSON.parse(n.readFileSync(r,"utf8"));return!jJ(s)||s.keyHash!==i?null:(o=!0,s.report)}catch{return null}},()=>({available:!0,hit:o,keyHash:i}))}function wv(e,t,n,r=kv()){let i=Dv(e),o={version:fc,keyHash:Ev(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 Dv(e){return MJ(vv(e.config.dbPath),OJ)}function Ev(e){return he(JSON.stringify(e))}function jJ(e){if(!e||typeof e!="object")return!1;let t=e;return t.version===fc&&typeof t.keyHash=="string"&&BJ(t.key)&&typeof t.writtenAt=="string"&&$J(t.report)}function BJ(e){if(!e||typeof e!="object")return!1;let t=e;return t.version===fc&&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 $J(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 HJ(){return{gitHead(e){let t=TJ("git",["rev-parse","HEAD"],{cwd:e,encoding:"utf8"});return t.status===0?t.stdout.trim():null}}}function kv(){return{existsSync:_J,mkdirSync:FJ,readFileSync:LJ,renameSync:NJ,writeFileSync:AJ,nowIso:()=>new Date().toISOString()}}var _v="__health-phase",WJ="__diff-impact-batch",GJ=10,zJ=4,VJ=8,qJ=25e3,KJ=2500,Om=2500,JJ=4,YJ=12,Pv=3e4,Fv=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"]),XJ=new Set([...Lv,"suppressions"]),QJ=new Set(["similar","extract-candidates"]),pc=2,Tv=On({kind:"health-semantic-prewarm",invalidation:K("health-semantic-prewarm"),serialize:e=>JSON.stringify(e),deserialize:ZJ});function ZJ(e){try{let t=JSON.parse(e);if(!t||typeof t!="object")return null;let n=t;return n.version!==pc||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:pc,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 eY(e){let t=or(e);return t.symbols>=qJ||t.documents>=KJ}function Av(e,t,n,r={}){return eY(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 ${Om} candidates with semantic enrichment disabled. Run "scip-query ${t} --full" for the unbounded semantic pass.`),{scanLimit:Om,semantic:!1,analysisBudget:{scanLimit:Om,semanticEnrichment:!1,reason:"large index default budget; pass --full for unbounded semantic analysis"}}):{semantic:!0}}function mhe(e){return e?`analysis budget: scanning up to ${e.scanLimit} candidate(s); semantic enrichment=${e.semanticEnrichment}; ${e.reason}`:null}var tY={env:process.env,projectFingerprint:Te,semanticEngineFingerprint:oY,readMarker:(e,t,n)=>Tv.read(e,t,n),writeMarker:(e,t,n,r)=>Tv.write(e,t,n,r),candidateDefinitions:(e,t)=>new _(e).scopedDefinitions(t.scope).filter(n=>De(n.relativePath)!==null),materializeReferences:(e,t,n)=>We(e).materializeReferences(t,n),materializeCallees:Su};function nY(e,t,n=tY){if(t.full!==!0)return Ln("default-mode");if((n.env??process.env).SCIP_QUERY_HEALTH_SEMANTIC_PREWARM==="0")return Ln("disabled");let r=Ln("error");return w("health.semantic-prewarm",()=>{try{r=rY(e,t,n)}catch(i){r=Ln("error",{error:i instanceof Error?i.message:String(i)})}return r},()=>sY(r))}function rY(e,t,n){let r=n.projectFingerprint(e);if(!r)return Ln("missing-project-fingerprint");let i=iY(t,n.semanticEngineFingerprint(e)),o=n.readMarker(e,i,r);if(o&&o.referenceIncomplete===0)return Ln("cache-hit");let s=[];if(s=w("health.semantic-prewarm.candidate-definitions",()=>(s=n.candidateDefinitions(e,t),s),()=>({definitions:s.length})),s.length===0)return Ln("no-semantic-definitions");let a=0,c=w("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 Ln("provider-unavailable",{definitions:s.length,referenceMisses:c.misses});let u=0,d=w("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}:(w("health.semantic-prewarm.marker-write",()=>n.writeMarker(e,i,r,{version:pc,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 iY(e,t){return JSON.stringify({version:pc,cliVersion:Xn,semanticEngineFingerprint:t,scope:e.scope??null})}function oY(e){return he(JSON.stringify({kind:"health-semantic-prewarm-engine",rust:qn(e.config.projectRoot)}))}function Ln(e,t={}){return{status:"skipped",reason:e,definitions:0,referenceCacheHits:0,referenceCacheWrites:0,referenceMisses:0,referenceIncomplete:0,calleeRows:0,...t}}function sY(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 fhe(e){let t=mY(e),n={...e,phaseTimeoutMs:t??null},r=en(m=>{let f=Mm(m,n,Xn);if(!f)return null;let p=Iv(m,f);return p?(p.detectorPrecision=Dm(ac(m),Date.now()),p):null});if(r)return r;let{applicability:i,overview:o}=en(m=>({applicability:aY(m,e),overview:km(m,"overview",e)})),s=new Map;s.set("overview",o);let a=lc.filter(m=>m==="overview"?!1:cY(m,i)?!0:(s.set(m,dr(m)),!1)),c=lY(a);e.full&&en(m=>nY(m,e));let l=await Am(c,fY(c.length),m=>uY(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=Pm(lc.map(m=>s.get(m)));return d.detectorPrecision=en(m=>Dm(ac(m),Date.now())),en(m=>{let f=Mm(m,n,Xn);f&&wv(m,f,d)}),d}function aY(e,t){return ss(e,{scope:t.scope})}function cY(e,t){return Fv.has(e)?t.react:Lv.has(e)?t.vue:!0}function lY(e){return Rv(e,[Fv,XJ,QJ])}function dr(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 uY(e,t,n){if(e.length===1)return dY(e[0],t,n).then(s=>[s]);let r=e.join(","),i=process.argv[1]??Bm(import.meta.url),o=[r];return t.scope&&o.push("--scope",t.scope),t.full&&o.push("--full"),mc({cliPath:i,command:_v,args:o,label:`Health phases "${r}"`,timeoutMs:n}).catch(s=>{if(t.full||!(s instanceof oi))throw s;return e.map(a=>Mv(a,s.timeoutMs,`timed out after ${s.timeoutMs}ms`))})}function dY(e,t,n){let r=process.argv[1]??Bm(import.meta.url),i=[e];return t.scope&&i.push("--scope",t.scope),t.full&&i.push("--full"),mc({cliPath:r,command:_v,args:i,label:`Health phase "${e}"`,timeoutMs:n}).catch(o=>{if(t.full||!(o instanceof oi))throw o;return Mv(e,o.timeoutMs,`timed out after ${o.timeoutMs}ms`)})}function mY(e,t=process.env){if(e.full)return;let n=t.SCIP_QUERY_HEALTH_PHASE_TIMEOUT_MS;if(!n)return Pv;let r=parseInt(n,10);return!Number.isFinite(r)||r<0?Pv: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{...dr(e),...r};case"react-hook-candidates":return{...dr(e),...r};case"react-large-component-pressure":return{...dr(e),...r};case"vue-component-duplicates":return{...dr(e),...r};case"vue-composable-candidates":return{...dr(e),...r};case"vue-large-view-pressure":return{...dr(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 fY=Ov({envKey:"SCIP_QUERY_HEALTH_CONCURRENCY",defaultMinimum:JJ,defaultMaximum:YJ});function phe(e,t){if(t){console.log(JSON.stringify(e,null,2));return}if(console.log(`
913
+ )`,t.barrel_doc_id,t.symbol_id,t.barrel_doc_id,t.original_doc_id)}function tJ(e,t,n){let r=[];for(let i of nJ(e,n))bv(e,i,i)>0||r.push(...rJ(e,t,i));return r}function nJ(e,t){return N(e,{scope:t,includeIgnored:!1}).filter(n=>hs(e,n).length>0||qt(e,n).length>0)}function rJ(e,t,n){let r=hs(e,n).filter(o=>o.sourcePath&&!e.isIgnored(o.sourcePath)).flatMap(o=>hv(e,t,n,o.sourcePath,[iJ(o.specifier)])),i=qt(e,n).filter(o=>o.sourcePath&&!e.isIgnored(o.sourcePath)).flatMap(o=>hv(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 hv(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:bv(e,r,n),...yv(e,n)}})}function iJ(e){return e.split("::").at(-1)?.split("/").at(-1)?.replace(/\.[^.]+$/,"")??e}function yv(e,t){return ir(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 bv(e,t,n){let r=new Set;for(let i of N(e,{includeIgnored:!1}))if(i!==n)for(let o of re(e,i))o.sourcePath===t&&r.add(i);return r.size}function oJ(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 sJ(e){e.sort((t,n)=>n.directConsumers-t.directConsumers||t.barrelFile.localeCompare(n.barrelFile)||t.shortName.localeCompare(n.shortName))}function aJ(e,t={}){let{samples:n=50,scope:r,maxDisagreements:i=5}=t,o=new _(e),s=cJ(o.productionCallableDefinitions({scope:r,minLoc:2,requireFunctionLikeSymbol:!0}),n),a=lJ(e,s);if(s.length===0||!a)return{available:!1,sampleSize:s.length,oracleCoverage:0,scores:[],topDisagreements:[]};let c={references:Sv(),callees:Sv()},l=[],u=0,d=a==="semantic"?ra(e,s):new Map,m=a==="source"?mJ(e,o,s):null;for(let f of s){let p=mc(f,a==="semantic"?na(e,f).map(S=>S.file):[...m?.referencesBySymbolId.get(f.symbolId)??[]]),g=mc(f,a==="semantic"?(d.get(f.symbolId)??[]).map(S=>S.file):[...m?.calleesBySymbolId.get(f.symbolId)??[]]);u+=1;let y=mc(f,Dt(e,f,{semanticEvidence:H}).map(S=>S.file)),h=mc(f,(o.calleeMap([f],{semantic:!1}).get(f.symbolId)??[]).map(S=>S.file)),C=Nm(a,"references"),x=Nm(a,"callees");Cv(c.references,f,"references",y,p,C,l),Cv(c.callees,f,"callees",h,g,x,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?Mm(u/s.length):0,oracleKind:a,scores:["references","callees"].map(f=>dJ(f,c[f],a)),topDisagreements:l.slice(0,i)}}function Sv(){return{comparedSymbols:0,agreed:0,cheapTotal:0,oracleTotal:0,skippedOraclePartial:0}}function cJ(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 lJ(e,t){let n=t[0];if(!n)return null;if(Am(e,n))return"source";try{if(We(e).capability("semantic-references",n.relativePath).available)return"semantic"}catch{}return t.some(r=>Am(e,r))?"source":null}function mc(e,t){let n=new Set;for(let r of t)r!==e.relativePath&&n.add(r);return n}function Cv(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 uJ={references:!0,callees:!1};function dJ(e,t,n){let r=t.oracleTotal>0?t.agreed/t.oracleTotal:1,i=t.cheapTotal-t.agreed,o=Nm(n,e);return{question:e,comparedSymbols:t.comparedSymbols,precision:o&&t.cheapTotal>0?Mm(t.agreed/t.cheapTotal):null,recall:Mm(r),unverified:i,skippedOraclePartial:t.skippedOraclePartial}}function Nm(e,t){return e==="semantic"?uJ[t]:!1}function Am(e,t){return M(t.relativePath)==="clojure"&&G(e,t.relativePath)!==null}function mJ(e,t,n){let r=new Map,i=new Map,o=n.filter(c=>Am(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=G(e,c);if(l)for(let u of l.fileIdentifiers)for(let d of s.get(u)??[])xv(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=G(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)??[])xv(i,c.symbolId,d.relativePath)}}return{referencesBySymbolId:r,calleesBySymbolId:i}}function xv(e,t,n){let r=e.get(t);if(r){r.add(n);return}e.set(t,new Set([n]))}function Mm(e){return Math.round(e*1e3)/1e3}var fJ=new Set(Ft());function pJ(e,t={}){let{scope:n,minLoc:r=1,limit:i,scanLimit:o,maxShapeFrequency:s=12}=t,a=t.semantic!==!1,c=yJ(e,gJ(e,{scope:n,minLoc:r,scanLimit:o}),{semantic:a,maxShapeFrequency:s}),l=SJ(c);return i?l.slice(0,i):l}function gJ(e,t){let n=xe(e,{scope:t.scope}).filter(r=>hJ(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 hJ(e){return!e.isFunctionLike||Ie(e.symbol)?!1:e.kind===null||fJ.has(e.kind)}function yJ(e,t,n){let r=[];for(let s of t){let a=xJ(e,s,n);a&&r.push({signature:a,definition:s,fn:bJ(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=CJ(s.fn.loc),c=(i.get(s.signature)??0)>n.maxShapeFrequency,l=c?am(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 bJ(e){return{symbol:e.symbol,shortName:I(e.symbol),file:e.relativePath,startLine:e.startLine,endLine:e.endLine,loc:O(e)}}function SJ(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 CJ(e){return e<=5?"<=5":e<=20?"6-20":">20"}function xJ(e,t,n){if(n.semantic){let o=Sy(e,t);if(o)return o}let r=RJ(t.documentation),i=r?wJ(r):null;return i||DJ(vJ(e,t.relativePath,t.startLine,t.endLine,t.leaf),t.leaf)}function RJ(e){return Kt(Jt(e))}function vJ(e,t,n,r,i){let o=P(e,t);if(!o)return null;let s=o.split(/\r?\n/),a=kJ(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,IJ(u)))return u}if(u&&u.includes("("))return u}return null}function IJ(e){let t=e.replace(/\s+/g," ").trim();return!t.includes("(")||Ci(t)>0?!1:/[;{]$/.test(t)||/\)\s*(?::\s*[^={]+)?\s*(?:=>|=|throws\b|where\b|$)/i.test(t)||/\)\s*As\s+.+$/i.test(t)}function wJ(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 DJ(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=EJ(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 EJ(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 kJ(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 TJ,spawnSync as Wge}from"child_process";var oi=class extends Error{constructor(n,r){super(`${n} timed out after ${r}ms.`);this.label=n;this.timeoutMs=r}label;timeoutMs;timedOut=!0};function Rv(e,t){let n=[];for(let r=0;r<e.length;r+=t)n.push(e.slice(r,r+t));return n}function fc(e){return new Promise((t,n)=>{let r=e.maxBuffer??10485760,i=TJ(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 oi(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 Om(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 vv(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 _J}from"child_process";import{existsSync as FJ,mkdirSync as LJ,readFileSync as NJ,renameSync as AJ,writeFileSync as MJ}from"fs";import{dirname as Iv,join as OJ}from"path";var pc=3,jJ="health-report-cache.json";function jm(e,t,n,r=UJ()){let i=Te(e);return i?{version:pc,projectFingerprint:i,cliVersion:n,scope:t.scope??null,full:t.full===!0,phaseTimeoutMs:t.phaseTimeoutMs??null,gitHead:r.gitHead(e.config.projectRoot)}:null}function wv(e,t,n=Pv()){let r=Ev(e),i=kv(t),o=!1;return w("health.report-cache.read",()=>{if(!n.existsSync(r))return null;try{let s=JSON.parse(n.readFileSync(r,"utf8"));return!BJ(s)||s.keyHash!==i?null:(o=!0,s.report)}catch{return null}},()=>({available:!0,hit:o,keyHash:i}))}function Dv(e,t,n,r=Pv()){let i=Ev(e),o={version:pc,keyHash:kv(t),key:t,writtenAt:r.nowIso(),report:n};r.mkdirSync(Iv(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 OJ(Iv(e.config.dbPath),jJ)}function kv(e){return he(JSON.stringify(e))}function BJ(e){if(!e||typeof e!="object")return!1;let t=e;return t.version===pc&&typeof t.keyHash=="string"&&$J(t.key)&&typeof t.writtenAt=="string"&&HJ(t.report)}function $J(e){if(!e||typeof e!="object")return!1;let t=e;return t.version===pc&&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 HJ(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 UJ(){return{gitHead(e){let t=_J("git",["rev-parse","HEAD"],{cwd:e,encoding:"utf8"});return t.status===0?t.stdout.trim():null}}}function Pv(){return{existsSync:FJ,mkdirSync:LJ,readFileSync:NJ,renameSync:AJ,writeFileSync:MJ,nowIso:()=>new Date().toISOString()}}var Fv="__health-phase",GJ="__diff-impact-batch",zJ=10,VJ=4,qJ=8,KJ=25e3,JJ=2500,Bm=2500,YJ=4,XJ=12,Tv=3e4,Lv=new Set(["react-component-duplicates","react-hook-candidates","react-large-component-pressure"]),Nv=new Set(["vue-component-duplicates","vue-composable-candidates","vue-large-view-pressure"]),QJ=new Set([...Nv,"suppressions"]),ZJ=new Set(["similar","extract-candidates"]),gc=2,_v=On({kind:"health-semantic-prewarm",invalidation:K("health-semantic-prewarm"),serialize:e=>JSON.stringify(e),deserialize:eY});function eY(e){try{let t=JSON.parse(e);if(!t||typeof t!="object")return null;let n=t;return n.version!==gc||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:gc,definitions:n.definitions,referenceCacheWrites:n.referenceCacheWrites,referenceIncomplete:n.referenceIncomplete,calleeRows:n.calleeRows,warmedAt:n.warmedAt}}catch{return null}}function Av(e){console.log(`Heuristic ${e}: review before acting; these are candidates, not exact compiler facts.
915
+ `)}function tY(e){let t=or(e);return t.symbols>=KJ||t.documents>=JJ}function Mv(e,t,n,r={}){return tY(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 ${Bm} candidates with semantic enrichment disabled. Run "scip-query ${t} --full" for the unbounded semantic pass.`),{scanLimit:Bm,semantic:!1,analysisBudget:{scanLimit:Bm,semanticEnrichment:!1,reason:"large index default budget; pass --full for unbounded semantic analysis"}}):{semantic:!0}}function phe(e){return e?`analysis budget: scanning up to ${e.scanLimit} candidate(s); semantic enrichment=${e.semanticEnrichment}; ${e.reason}`:null}var nY={env:process.env,projectFingerprint:Te,semanticEngineFingerprint:sY,readMarker:(e,t,n)=>_v.read(e,t,n),writeMarker:(e,t,n,r)=>_v.write(e,t,n,r),candidateDefinitions:(e,t)=>new _(e).scopedDefinitions(t.scope).filter(n=>De(n.relativePath)!==null),materializeReferences:(e,t,n)=>We(e).materializeReferences(t,n),materializeCallees:Cu};function rY(e,t,n=nY){if(t.full!==!0)return Ln("default-mode");if((n.env??process.env).SCIP_QUERY_HEALTH_SEMANTIC_PREWARM==="0")return Ln("disabled");let r=Ln("error");return w("health.semantic-prewarm",()=>{try{r=iY(e,t,n)}catch(i){r=Ln("error",{error:i instanceof Error?i.message:String(i)})}return r},()=>aY(r))}function iY(e,t,n){let r=n.projectFingerprint(e);if(!r)return Ln("missing-project-fingerprint");let i=oY(t,n.semanticEngineFingerprint(e)),o=n.readMarker(e,i,r);if(o&&o.referenceIncomplete===0)return Ln("cache-hit");let s=[];if(s=w("health.semantic-prewarm.candidate-definitions",()=>(s=n.candidateDefinitions(e,t),s),()=>({definitions:s.length})),s.length===0)return Ln("no-semantic-definitions");let a=0,c=w("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 Ln("provider-unavailable",{definitions:s.length,referenceMisses:c.misses});let u=0,d=w("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}:(w("health.semantic-prewarm.marker-write",()=>n.writeMarker(e,i,r,{version:gc,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 oY(e,t){return JSON.stringify({version:gc,cliVersion:Xn,semanticEngineFingerprint:t,scope:e.scope??null})}function sY(e){return he(JSON.stringify({kind:"health-semantic-prewarm-engine",rust:qn(e.config.projectRoot)}))}function Ln(e,t={}){return{status:"skipped",reason:e,definitions:0,referenceCacheHits:0,referenceCacheWrites:0,referenceMisses:0,referenceIncomplete:0,calleeRows:0,...t}}function aY(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 ghe(e){let t=fY(e),n={...e,phaseTimeoutMs:t??null},r=en(m=>{let f=jm(m,n,Xn);if(!f)return null;let p=wv(m,f);return p?(p.detectorPrecision=km(cc(m),Date.now()),p):null});if(r)return r;let{applicability:i,overview:o}=en(m=>({applicability:cY(m,e),overview:Tm(m,"overview",e)})),s=new Map;s.set("overview",o);let a=uc.filter(m=>m==="overview"?!1:lY(m,i)?!0:(s.set(m,dr(m)),!1)),c=uY(a);e.full&&en(m=>rY(m,e));let l=await Om(c,pY(c.length),m=>dY(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=_m(uc.map(m=>s.get(m)));return d.detectorPrecision=en(m=>km(cc(m),Date.now())),en(m=>{let f=jm(m,n,Xn);f&&Dv(m,f,d)}),d}function cY(e,t){return as(e,{scope:t.scope})}function lY(e,t){return Lv.has(e)?t.react:Nv.has(e)?t.vue:!0}function uY(e){return vv(e,[Lv,QJ,ZJ])}function dr(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 dY(e,t,n){if(e.length===1)return mY(e[0],t,n).then(s=>[s]);let r=e.join(","),i=process.argv[1]??Hm(import.meta.url),o=[r];return t.scope&&o.push("--scope",t.scope),t.full&&o.push("--full"),fc({cliPath:i,command:Fv,args:o,label:`Health phases "${r}"`,timeoutMs:n}).catch(s=>{if(t.full||!(s instanceof oi))throw s;return e.map(a=>Ov(a,s.timeoutMs,`timed out after ${s.timeoutMs}ms`))})}function mY(e,t,n){let r=process.argv[1]??Hm(import.meta.url),i=[e];return t.scope&&i.push("--scope",t.scope),t.full&&i.push("--full"),fc({cliPath:r,command:Fv,args:i,label:`Health phase "${e}"`,timeoutMs:n}).catch(o=>{if(t.full||!(o instanceof oi))throw o;return Ov(e,o.timeoutMs,`timed out after ${o.timeoutMs}ms`)})}function fY(e,t=process.env){if(e.full)return;let n=t.SCIP_QUERY_HEALTH_PHASE_TIMEOUT_MS;if(!n)return Tv;let r=parseInt(n,10);return!Number.isFinite(r)||r<0?Tv:r===0?void 0:r}function Ov(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{...dr(e),...r};case"react-hook-candidates":return{...dr(e),...r};case"react-large-component-pressure":return{...dr(e),...r};case"vue-component-duplicates":return{...dr(e),...r};case"vue-composable-candidates":return{...dr(e),...r};case"vue-large-view-pressure":return{...dr(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=jv({envKey:"SCIP_QUERY_HEALTH_CONCURRENCY",defaultMinimum:YJ,defaultMaximum:XJ});function hhe(e,t){if(t){console.log(JSON.stringify(e,null,2));return}if(console.log(`
916
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 | ${uS(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: ${jm(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: ${jm(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: ${jm(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(`
917
+ `),console.log(` ${e.overview.documents} files | ${e.overview.symbols} symbols | ${dS(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: ${$m(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: ${$m(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: ${$m(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
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(hY(e),gY(e),e.scoreBreakdown.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(yY(e),hY(e),e.scoreBreakdown.length>0){console.log(`
921
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
922
  No findings from completed analyses. Review warnings before interpreting this result as clean.`:`
923
- No issues found. Codebase is clean.`)}function jm(e,t){return Math.abs(e-t)<.01?String(e):`${e} (${pY(t)} score-weighted)`}function pY(e){return Number.isInteger(e)?String(e):e.toFixed(2).replace(/0+$/,"").replace(/\.$/,"")}function gY(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 hY(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 ghe(e){let t=en(i=>{let o=Fn(i,{base:e.base});return o.note?{kind:"complete",result:Zr(i,{base:e.base})}:o.changedFiles.length===0?{kind:"complete",result:Zr(i,{base:e.base})}:{kind:"batched",plan:o}});if(t.kind==="complete")return t.result;let n=xv(t.plan.changedFiles,GJ),r=await Am(n,yY(n.length),i=>CY(i,e));return Wa(t.plan.changedFiles,r)}var yY=Ov({envKey:"SCIP_QUERY_DIFF_IMPACT_CONCURRENCY",defaultMinimum:zJ,defaultMaximum:VJ});function Ov(e){return(t,n=process.env,r=UJ)=>bY(t,n,r,e)}function bY(e,t,n,r){let i=t[r.envKey],o=SY(n,r),s=i?parseInt(i,10):o;return!Number.isFinite(s)||s<1?Math.min(o,e):Math.min(s,e)}function SY(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 CY(e,t){let n=process.argv[1]??Bm(import.meta.url),r=[];return t.base&&r.push("--base",t.base),mc({cliPath:n,command:WJ,args:r,env:{...process.env,SCIP_QUERY_DIFF_IMPACT_FILES:JSON.stringify(e)},label:"Diff-impact batch"})}function hhe(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:"),_t.list(e.changedSymbols,n=>` ${n.file} ${n.shortName} (fan-in: ${n.fanIn})`)),e.affectedConsumers.length>0&&(console.log(`
926
- Affected consumer files:`),_t.list(e.affectedConsumers,n=>` ${n.file} (${n.consumedSymbols} symbol(s))`))}var jv=Symbol("option-value-source"),Bv=new Map;function Rhe(e){Bv=new Map(e)}function Mo(e){return(...t)=>{let{args:n,opts:r}=EY(t);en(i=>e({db:i,args:n,opts:r}))}}function hc(e,t){return Mo(n=>{let r=Av(n.db,e,gc(n.opts,"full"),{quiet:gc(n.opts,"json")});t({...n,budget:r})})}function vhe(e){return Mo(t=>si(t,e,{kind:"list"}))}function Ihe(e){return Mo(t=>si(t,e,{kind:"table",headers:e.headers,dashWidths:e.dashWidths}))}function whe(e){return Mo(t=>si(t,e,{kind:"grouped",key:e.key}))}function xY(e){return Mo(t=>$m(t,e))}function Dhe(e){return xY({commandName:e.commandName,query:e.query,emptyMessage:e.emptyMessage,heuristicLabel:e.heuristicLabel,before:e.before,render:(t,n)=>_t.sectionedReport(e.sections(t,n)),toJson:e.toJson,after:e.after})}function RY(e,t){return hc(e,n=>$m(n,{...t,commandName:t.commandName??e}))}function Ehe(e,t){return RY(e,{commandName:t.commandName??e,query:t.query,emptyMessage:t.emptyMessage,heuristicLabel:t.heuristicLabel,before:t.before,render:(n,r)=>_t.sectionedReport(t.sections(n,r)),toJson:t.toJson,after:t.after})}function khe(e,t){return hc(e,n=>si(n,{...t,commandName:e},{kind:"list"}))}function Phe(e,t){return hc(e,n=>si(n,{...t,commandName:e},{kind:"table",headers:t.headers,dashWidths:t.dashWidths}))}function The(e,t){return hc(e,n=>si(n,{...t,commandName:e},{kind:"grouped",key:t.key}))}function _he(e,t){return String(e[t])}function Fhe(e,t){let n=e[t];return typeof n=="string"?n:void 0}function Lhe(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 gc(e,t){return!!e[t]}function Nhe(e,t){let n=e[t];return Array.isArray(n)&&n.every(r=>typeof r=="string")?n:[]}function Ahe(e,t,n){return $v(e,t)??n}function Mhe(e,t,n){let r=$v(e,t),i=r!==void 0&&vY(e,t)!=="default";if(gc(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 vY(e,t){return e[jv]?.(t)}function si(e,t,n){$m(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"?_t.list(r,o=>t.format(o,i)):n.kind==="table"?_t.table(n.headers,r.map(o=>t.format(o,i)),n.dashWidths):_t.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 $m(e,t){let n=t.query(e);if(gc(e.opts,"json")){wY(t.commandName,e.args,e.opts,t.toJson?t.toJson(n,e):n,{analysisBudget:IY(e)});return}let r=t.emptyMessage?.(n,e);if(r){_t.empty(r);return}t.heuristicLabel&&Nv(t.heuristicLabel),t.before?.(n,e),t.render(n,e),t.after?.(n,e)}function IY(e){return e.budget?.analysisBudget}function wY(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:DY(t),options:n,result:r},null,2))}function DY(e){return e.filter(t=>typeof t=="string"||typeof t=="number"||typeof t=="boolean")}function EY(e){if(e.length===0)return{args:[],opts:{}};let t=e[e.length-1];return{args:e.slice(0,-1),opts:kY(t)}}function kY(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,OY as b,N as c,mX as d,vr as e,It as f,Me as g,U as h,df as i,mf as j,ff as k,aI as l,w as m,GY as n,mn as o,$ as p,rt as q,r5 as r,i5 as s,q as t,HD as u,_X as v,op as w,W4 as x,ie as y,I as z,T as A,Q as B,xe as C,B as D,Ii as E,w8 as F,so as G,Ft as H,_S as I,Bne as J,DZ as K,Dl as L,EZ as M,Eg as N,d_ as O,Pl as P,AZ as Q,p_ as R,MZ as S,Pg as T,Fs as U,ct as V,_e as W,Ll as X,Ug as Y,m3 as Z,U_ as _,Nl as $,Pi as aa,G3 as ba,f6 as ca,Dh as da,VF as ea,Eh as fa,Xl as ga,yt as ha,YY as ia,gr as ja,xI as ka,bf as la,XY as ma,Bo as na,Rt as oa,Ar as pa,Mr as qa,kt as ra,Oh as sa,lL as ta,Vs as ua,Xh as va,Qs as wa,a7 as xa,or as ya,TO as za,AO as Aa,j7 as Ba,ld as Ca,ud as Da,dd as Ea,md as Fa,fd as Ga,sr as Ha,Nj as Ia,Oj as Ja,jj as Ka,Bj as La,K7 as Ma,Qj as Na,tB as Oa,nB as Pa,rB as Qa,oB as Ra,sB as Sa,aB as Ta,cC as Ua,qr as Va,hB as Wa,uo as Xa,SB as Ya,CB as Za,EB as _a,_B as $a,xd as ab,La as bb,Dd as cb,mo as db,x$ as eb,fo as fb,po as gb,kd as hb,go as ib,ho as jb,Pd as kb,f1 as lb,yo as mb,SH as nb,Od as ob,jd as pb,QH as qb,So as rb,Fn as sb,kx as tb,eG as ub,Io as vb,CG as wb,Eo as xb,ko as yb,To as zb,_o as Ab,hV as Bb,fm as Cb,gm as Db,ym as Eb,Xue as Fb,AV as Gb,MV as Hb,OV as Ib,jV as Jb,Sq as Kb,Cq as Lb,kq as Mb,Uq as Nb,Jq as Ob,mK as Pb,Rm as Qb,Im as Rb,sc as Sb,GK as Tb,wm as Ub,jt as Vb,gfe as Wb,hfe as Xb,Cfe as Yb,xfe as Zb,ac as _b,Rfe as $b,lc as ac,km as bc,g2 as cc,J2 as dc,tee as ec,Y2 as fc,sJ as gc,fJ as hc,Ty as ic,ra as jc,xu as kc,_y as lc,ia as mc,Ny as nc,Gy as oc,zy as pc,bee as qc,See as rc,Cee as sc,xee as tc,Ree as uc,zi as vc,nb as wc,Fee as xc,qi as yc,ob as zc,Xn as Ac,Eu as Bc,ku as Cc,Qee as Dc,Zee as Ec,ete as Fc,tte as Gc,cte as Hc,lte as Ic,ute as Jc,dte as Kc,xte as Lc,Ete as Mc,kte as Nc,ba as Oc,Zb as Pc,eS as Qc,rr as Rc,tS as Sc,Vu as Tc,Yte as Uc,qu as Vc,Qu as Wc,cS as Xc,ane as Yc,lS as Zc,cne as _c,lne as $c,une as ad,en as bd,dne as cd,uS as dd,mne as ed,dS as fd,s0 as gd,pne as hd,gne as id,_t as jd,_v as kd,WJ as ld,Nv as md,Av as nd,mhe as od,fhe as pd,phe as qd,ghe as rd,hhe as sd,Rhe as td,Mo as ud,hc as vd,vhe as wd,Ihe as xd,whe as yd,xY as zd,Dhe as Ad,RY as Bd,Ehe as Cd,khe as Dd,Phe as Ed,The as Fd,_he as Gd,Fhe as Hd,Lhe as Id,$v as Jd,gc as Kd,Nhe as Ld,Ahe as Md,Mhe as Nd,vY as Od,wY as Pd,EY as Qd,kY as Rd};
927
- //# sourceMappingURL=chunk-GBB2RUDN.js.map
923
+ No issues found. Codebase is clean.`)}function $m(e,t){return Math.abs(e-t)<.01?String(e):`${e} (${gY(t)} score-weighted)`}function gY(e){return Number.isInteger(e)?String(e):e.toFixed(2).replace(/0+$/,"").replace(/\.$/,"")}function hY(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 yY(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 yhe(e){let t=en(i=>{let o=Fn(i,{base:e.base});return o.note?{kind:"complete",result:Zr(i,{base:e.base})}:o.changedFiles.length===0?{kind:"complete",result:Zr(i,{base:e.base})}:{kind:"batched",plan:o}});if(t.kind==="complete")return t.result;let n=Rv(t.plan.changedFiles,zJ),r=await Om(n,bY(n.length),i=>xY(i,e));return Ga(t.plan.changedFiles,r)}var bY=jv({envKey:"SCIP_QUERY_DIFF_IMPACT_CONCURRENCY",defaultMinimum:VJ,defaultMaximum:qJ});function jv(e){return(t,n=process.env,r=WJ)=>SY(t,n,r,e)}function SY(e,t,n,r){let i=t[r.envKey],o=CY(n,r),s=i?parseInt(i,10):o;return!Number.isFinite(s)||s<1?Math.min(o,e):Math.min(s,e)}function CY(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 xY(e,t){let n=process.argv[1]??Hm(import.meta.url),r=[];return t.base&&r.push("--base",t.base),fc({cliPath:n,command:GJ,args:r,env:{...process.env,SCIP_QUERY_DIFF_IMPACT_FILES:JSON.stringify(e)},label:"Diff-impact batch"})}function bhe(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:"),_t.list(e.changedSymbols,n=>` ${n.file} ${n.shortName} (fan-in: ${n.fanIn})`)),e.affectedConsumers.length>0&&(console.log(`
926
+ Affected consumer files:`),_t.list(e.affectedConsumers,n=>` ${n.file} (${n.consumedSymbols} symbol(s))`))}var Bv=Symbol("option-value-source"),$v=new Map;function Ihe(e){$v=new Map(e)}function Mo(e){return(...t)=>{let{args:n,opts:r}=kY(t);en(i=>e({db:i,args:n,opts:r}))}}function yc(e,t){return Mo(n=>{let r=Mv(n.db,e,hc(n.opts,"full"),{quiet:hc(n.opts,"json")});t({...n,budget:r})})}function whe(e){return Mo(t=>si(t,e,{kind:"list"}))}function Dhe(e){return Mo(t=>si(t,e,{kind:"table",headers:e.headers,dashWidths:e.dashWidths}))}function Ehe(e){return Mo(t=>si(t,e,{kind:"grouped",key:e.key}))}function RY(e){return Mo(t=>Um(t,e))}function khe(e){return RY({commandName:e.commandName,query:e.query,emptyMessage:e.emptyMessage,heuristicLabel:e.heuristicLabel,before:e.before,render:(t,n)=>_t.sectionedReport(e.sections(t,n)),toJson:e.toJson,after:e.after})}function vY(e,t){return yc(e,n=>Um(n,{...t,commandName:t.commandName??e}))}function Phe(e,t){return vY(e,{commandName:t.commandName??e,query:t.query,emptyMessage:t.emptyMessage,heuristicLabel:t.heuristicLabel,before:t.before,render:(n,r)=>_t.sectionedReport(t.sections(n,r)),toJson:t.toJson,after:t.after})}function The(e,t){return yc(e,n=>si(n,{...t,commandName:e},{kind:"list"}))}function _he(e,t){return yc(e,n=>si(n,{...t,commandName:e},{kind:"table",headers:t.headers,dashWidths:t.dashWidths}))}function Fhe(e,t){return yc(e,n=>si(n,{...t,commandName:e},{kind:"grouped",key:t.key}))}function Lhe(e,t){return String(e[t])}function Nhe(e,t){let n=e[t];return typeof n=="string"?n:void 0}function Ahe(e,t){let n=e[t];return typeof n=="string"?n:void 0}function Hv(e,t){let n=e[t];return typeof n=="number"?n:void 0}function hc(e,t){return!!e[t]}function Mhe(e,t){let n=e[t];return Array.isArray(n)&&n.every(r=>typeof r=="string")?n:[]}function Ohe(e,t,n){return Hv(e,t)??n}function jhe(e,t,n){let r=Hv(e,t),i=r!==void 0&&IY(e,t)!=="default";if(hc(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 IY(e,t){return e[Bv]?.(t)}function si(e,t,n){Um(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"?_t.list(r,o=>t.format(o,i)):n.kind==="table"?_t.table(n.headers,r.map(o=>t.format(o,i)),n.dashWidths):_t.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 Um(e,t){let n=t.query(e);if(hc(e.opts,"json")){DY(t.commandName,e.args,e.opts,t.toJson?t.toJson(n,e):n,{analysisBudget:wY(e)});return}let r=t.emptyMessage?.(n,e);if(r){_t.empty(r);return}t.heuristicLabel&&Av(t.heuristicLabel),t.before?.(n,e),t.render(n,e),t.after?.(n,e)}function wY(e){return e.budget?.analysisBudget}function DY(e,t,n,r,i={}){let o=e?$v.get(e):void 0;console.log(JSON.stringify({command:e,...o?{evidence:o}:{},...i.analysisBudget?{analysisBudget:i.analysisBudget}:{},args:EY(t),options:n,result:r},null,2))}function EY(e){return e.filter(t=>typeof t=="string"||typeof t=="number"||typeof t=="boolean")}function kY(e){if(e.length===0)return{args:[],opts:{}};let t=e[e.length-1];return{args:e.slice(0,-1),opts:PY(t)}}function PY(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,Bv,{value:r=>t.getOptionValueSource(r),enumerable:!1}),n)}return e}export{Te as a,jY as b,N as c,fX as d,vr as e,It as f,Me as g,U as h,ff as i,pf as j,gf as k,cI as l,w as m,zY as n,mn as o,$ as p,rt as q,i5 as r,o5 as s,q as t,UD as u,FX as v,sp as w,G4 as x,ie as y,I as z,T as A,Q as B,xe as C,B as D,Ii as E,D8 as F,so as G,Ft as H,FS as I,$ne as J,EZ as K,El as L,kZ as M,kg as N,m_ as O,Tl as P,MZ as Q,g_ as R,OZ as S,Tg as T,Ls as U,ct as V,_e as W,Nl as X,Wg as Y,f3 as Z,W_ as _,Al as $,Pi as aa,z3 as ba,p6 as ca,Eh as da,qF as ea,kh as fa,Ql as ga,yt as ha,XY as ia,gr as ja,RI as ka,Cf as la,QY as ma,Bo as na,Rt as oa,Ar as pa,Mr as qa,kt as ra,jh as sa,uL as ta,qs as ua,Qh as va,Zs as wa,c7 as xa,or as ya,_O as za,MO as Aa,B7 as Ba,ud as Ca,dd as Da,md as Ea,fd as Fa,pd as Ga,sr as Ha,Aj as Ia,jj as Ja,Bj as Ka,$j as La,J7 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,qr as Va,yB as Wa,uo as Xa,CB as Ya,xB as Za,kB as _a,FB as $a,Rd as ab,Na as bb,Ed as cb,mo as db,R$ as eb,fo as fb,po as gb,Pd as hb,go as ib,ho as jb,Td as kb,p1 as lb,yo as mb,CH as nb,jd as ob,Bd as pb,ZH as qb,So as rb,Fn as sb,Px as tb,tG as ub,Io as vb,xG as wb,Eo as xb,ko as yb,To as zb,_o as Ab,yV as Bb,gm as Cb,ym as Db,Sm as Eb,Zue as Fb,MV as Gb,OV as Hb,jV as Ib,BV as Jb,Cq as Kb,xq as Lb,Pq as Mb,Wq as Nb,Yq as Ob,fK as Pb,Im as Qb,Dm as Rb,ac as Sb,zK as Tb,Em as Ub,jt as Vb,yfe as Wb,bfe as Xb,Rfe as Yb,vfe as Zb,cc as _b,Ife as $b,uc as ac,Tm as bc,h2 as cc,Y2 as dc,nee as ec,X2 as fc,aJ as gc,pJ as hc,_y as ic,ia as jc,Ru as kc,Fy as lc,oa as mc,Ay as nc,zy as oc,Vy as pc,See as qc,Cee as rc,xee as sc,Ree as tc,vee as uc,zi as vc,rb as wc,Lee as xc,qi as yc,sb as zc,Xn as Ac,ku as Bc,Pu as Cc,Zee as Dc,ete as Ec,tte as Fc,nte as Gc,lte as Hc,ute as Ic,dte as Jc,mte as Kc,Rte as Lc,kte as Mc,Pte as Nc,Sa as Oc,eS as Pc,tS as Qc,rr as Rc,nS as Sc,qu as Tc,Xte as Uc,Ku as Vc,Zu as Wc,lS as Xc,cne as Yc,uS as Zc,lne as _c,une as $c,dne as ad,en as bd,mne as cd,dS as dd,fne as ed,mS as fd,a0 as gd,gne as hd,hne as id,_t as jd,Fv as kd,GJ as ld,Av as md,Mv as nd,phe as od,ghe as pd,hhe as qd,yhe as rd,bhe as sd,Ihe as td,Mo as ud,yc as vd,whe as wd,Dhe as xd,Ehe as yd,RY as zd,khe as Ad,vY as Bd,Phe as Cd,The as Dd,_he as Ed,Fhe as Fd,Lhe as Gd,Nhe as Hd,Ahe as Id,Hv as Jd,hc as Kd,Mhe as Ld,Ohe as Md,jhe as Nd,IY as Od,DY as Pd,kY as Qd,PY as Rd};
927
+ //# sourceMappingURL=chunk-ESNRT7QN.js.map