scip-query 0.6.1 → 0.6.2

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 (160) hide show
  1. package/dist/{chunk-FCC3XJTI.js → chunk-26LSAIEP.js} +2 -2
  2. package/dist/{chunk-SG35Y7J2.js → chunk-2HEJQBMS.js} +2 -2
  3. package/dist/chunk-3FG3VLK3.js +65 -0
  4. package/dist/{chunk-DE5ZBHMK.js → chunk-3J463LOK.js} +2 -2
  5. package/dist/{chunk-XVDASCN7.js → chunk-3QJ2NOYG.js} +2 -2
  6. package/dist/{chunk-AJ5PWKD4.js → chunk-3T53QAUS.js} +2 -2
  7. package/dist/chunk-435YC4OF.js +2 -0
  8. package/dist/chunk-4LBOHXT7.js +6 -0
  9. package/dist/chunk-5IM4IQ6N.js +2 -0
  10. package/dist/{chunk-BDBRZPX3.js → chunk-5NRGSXZQ.js} +2 -2
  11. package/dist/chunk-5V76WMMZ.js +5 -0
  12. package/dist/{chunk-HMKJTAZD.js → chunk-5VU2RVKI.js} +2 -2
  13. package/dist/{chunk-NTDA4A2D.js → chunk-5W22HCSF.js} +2 -2
  14. package/dist/{chunk-IBGBI3VU.js → chunk-67UXTIFZ.js} +2 -2
  15. package/dist/{chunk-SDX6MDBL.js → chunk-6ALIV5SZ.js} +2 -2
  16. package/dist/{chunk-K5FQFCSN.js → chunk-6CTMG3IF.js} +2 -2
  17. package/dist/{chunk-BQ3INTYT.js → chunk-6XP3KWHC.js} +2 -2
  18. package/dist/chunk-7DKDFRXQ.js +7 -0
  19. package/dist/{chunk-LX4H4LLG.js → chunk-7NEBSLI3.js} +2 -2
  20. package/dist/chunk-AEMTUHQ7.js +2 -0
  21. package/dist/{chunk-Y7LOQSWY.js → chunk-AVLUWGXG.js} +2 -2
  22. package/dist/chunk-AZQ3ENHU.js +2 -0
  23. package/dist/{chunk-ZXKURFVB.js → chunk-AZTWY4OT.js} +2 -2
  24. package/dist/{chunk-BE6EQIWY.js → chunk-CHW7433E.js} +2 -2
  25. package/dist/chunk-CW5K3KIF.js +12 -0
  26. package/dist/{chunk-ZSRXMNMK.js → chunk-F6F2QUIH.js} +3 -3
  27. package/dist/{chunk-D7KLLMPB.js → chunk-FJV7QT4G.js} +2 -2
  28. package/dist/chunk-FPDWFGBQ.js +19 -0
  29. package/dist/chunk-G2SX5EHW.js +2 -0
  30. package/dist/{chunk-RWE6FHG3.js → chunk-GK6VXKLY.js} +2 -2
  31. package/dist/{chunk-STOGKRJH.js → chunk-HS5LX75F.js} +2 -2
  32. package/dist/{chunk-D7YBWSON.js → chunk-HS65NNKP.js} +2 -2
  33. package/dist/{chunk-DHYIJHXZ.js → chunk-LKCPNPHH.js} +2 -2
  34. package/dist/{chunk-JS2RNIC7.js → chunk-MQ5FKM2F.js} +2 -2
  35. package/dist/{chunk-WTSTDJZ7.js → chunk-NFOSOUH6.js} +2 -2
  36. package/dist/{chunk-4QJ7LVW5.js → chunk-NLWXQMKR.js} +2 -2
  37. package/dist/{chunk-YIPCV7M7.js → chunk-ORD3HEWI.js} +2 -2
  38. package/dist/{chunk-2RLP74AO.js → chunk-OU2D2T4A.js} +2 -2
  39. package/dist/{chunk-NXMYYHDO.js → chunk-P6IUCZA3.js} +2 -2
  40. package/dist/{chunk-2DSS2NGF.js → chunk-PU7P5NPE.js} +2 -2
  41. package/dist/chunk-QSTMORTI.js +2 -0
  42. package/dist/{chunk-QXE6EDY2.js → chunk-RC2PKZSS.js} +2 -2
  43. package/dist/chunk-S65VVU3R.js +2 -0
  44. package/dist/{chunk-IYFZS4PV.js → chunk-SPMLGXCE.js} +5 -5
  45. package/dist/{chunk-GXVB36TG.js → chunk-T26XHATT.js} +2 -2
  46. package/dist/chunk-TWYHFB5K.js +2 -0
  47. package/dist/{chunk-XAZTIDST.js → chunk-TXADWK4I.js} +2 -2
  48. package/dist/chunk-YRUHPGC3.js +7 -0
  49. package/dist/chunk-ZJM2HD2Z.js +2 -0
  50. package/dist/chunk-ZORIMKQO.js +2 -0
  51. package/dist/cli.js +218 -169
  52. package/dist/{db-BSTtBG_H.d.ts → db-DKhNQ75l.d.ts} +15 -1
  53. package/dist/index.d.ts +36 -3
  54. package/dist/index.js +60 -12
  55. package/dist/queries/affected.d.ts +1 -1
  56. package/dist/queries/affected.js +1 -1
  57. package/dist/queries/bottlenecks.d.ts +1 -1
  58. package/dist/queries/bottlenecks.js +1 -1
  59. package/dist/queries/by-kind.d.ts +1 -1
  60. package/dist/queries/by-kind.js +1 -1
  61. package/dist/queries/call-graph.d.ts +1 -1
  62. package/dist/queries/call-graph.js +1 -1
  63. package/dist/queries/change-surface.d.ts +1 -1
  64. package/dist/queries/change-surface.js +1 -1
  65. package/dist/queries/code.d.ts +1 -1
  66. package/dist/queries/code.js +1 -1
  67. package/dist/queries/complexity-hotspots.d.ts +1 -1
  68. package/dist/queries/complexity-hotspots.js +1 -1
  69. package/dist/queries/complexity.d.ts +1 -1
  70. package/dist/queries/complexity.js +1 -1
  71. package/dist/queries/convergence.d.ts +1 -1
  72. package/dist/queries/convergence.js +1 -1
  73. package/dist/queries/coupling.d.ts +1 -1
  74. package/dist/queries/coupling.js +1 -1
  75. package/dist/queries/cycles.d.ts +1 -1
  76. package/dist/queries/cycles.js +1 -1
  77. package/dist/queries/dataflow.d.ts +1 -1
  78. package/dist/queries/dataflow.js +1 -1
  79. package/dist/queries/dead.d.ts +1 -1
  80. package/dist/queries/dead.js +1 -1
  81. package/dist/queries/deep-chains.d.ts +1 -1
  82. package/dist/queries/deep-chains.js +1 -1
  83. package/dist/queries/deps.d.ts +1 -1
  84. package/dist/queries/deps.js +1 -1
  85. package/dist/queries/diff-impact.d.ts +1 -1
  86. package/dist/queries/diff-impact.js +1 -1
  87. package/dist/queries/drift.d.ts +1 -1
  88. package/dist/queries/drift.js +1 -1
  89. package/dist/queries/extract-candidates.d.ts +1 -1
  90. package/dist/queries/extract-candidates.js +1 -1
  91. package/dist/queries/fan.d.ts +1 -1
  92. package/dist/queries/fan.js +1 -1
  93. package/dist/queries/files.d.ts +1 -1
  94. package/dist/queries/health.d.ts +1 -1
  95. package/dist/queries/health.js +1 -1
  96. package/dist/queries/hierarchy.d.ts +1 -1
  97. package/dist/queries/hierarchy.js +1 -1
  98. package/dist/queries/hotspots.d.ts +1 -1
  99. package/dist/queries/hotspots.js +1 -1
  100. package/dist/queries/imports.d.ts +1 -1
  101. package/dist/queries/imports.js +1 -1
  102. package/dist/queries/index.d.ts +1 -1
  103. package/dist/queries/index.js +1 -1
  104. package/dist/queries/isolated.d.ts +1 -1
  105. package/dist/queries/isolated.js +1 -1
  106. package/dist/queries/members.d.ts +1 -1
  107. package/dist/queries/members.js +1 -1
  108. package/dist/queries/methods.d.ts +1 -1
  109. package/dist/queries/methods.js +1 -1
  110. package/dist/queries/outline.d.ts +1 -1
  111. package/dist/queries/outline.js +1 -1
  112. package/dist/queries/passthrough-candidates.d.ts +1 -1
  113. package/dist/queries/passthrough-candidates.js +1 -1
  114. package/dist/queries/redundant-reexports.d.ts +1 -1
  115. package/dist/queries/redundant-reexports.js +1 -1
  116. package/dist/queries/refs.d.ts +1 -1
  117. package/dist/queries/refs.js +1 -1
  118. package/dist/queries/similar-chains.d.ts +1 -1
  119. package/dist/queries/similar-chains.js +1 -1
  120. package/dist/queries/similar-files.d.ts +1 -1
  121. package/dist/queries/similar-files.js +1 -1
  122. package/dist/queries/similar-signatures.d.ts +1 -1
  123. package/dist/queries/similar-signatures.js +1 -1
  124. package/dist/queries/similar.d.ts +1 -1
  125. package/dist/queries/similar.js +1 -1
  126. package/dist/queries/slice.d.ts +1 -1
  127. package/dist/queries/slice.js +1 -1
  128. package/dist/queries/stale-abstractions.d.ts +2 -1
  129. package/dist/queries/stale-abstractions.js +1 -1
  130. package/dist/queries/stats.d.ts +1 -1
  131. package/dist/queries/surface.d.ts +1 -1
  132. package/dist/queries/surface.js +1 -1
  133. package/dist/queries/symbols.d.ts +1 -1
  134. package/dist/queries/symbols.js +1 -1
  135. package/dist/queries/system.d.ts +1 -1
  136. package/dist/queries/system.js +1 -1
  137. package/dist/queries/trace.d.ts +1 -1
  138. package/dist/queries/trace.js +1 -1
  139. package/dist/queries/wrapper-candidates.d.ts +1 -1
  140. package/dist/queries/wrapper-candidates.js +1 -1
  141. package/dist/reindex-worker.js +63 -5
  142. package/package.json +15 -16
  143. package/skills/concrete-plan/SKILL.md +48 -22
  144. package/dist/chunk-5IADAU5B.js +0 -7
  145. package/dist/chunk-7754WFFV.js +0 -18
  146. package/dist/chunk-7VOF4ZG6.js +0 -2
  147. package/dist/chunk-7Z4COVMC.js +0 -2
  148. package/dist/chunk-EEF3YEHW.js +0 -2
  149. package/dist/chunk-F2LLHRRZ.js +0 -2
  150. package/dist/chunk-GNXRLK5G.js +0 -2
  151. package/dist/chunk-JH3A7HTU.js +0 -2
  152. package/dist/chunk-K6GBKEQE.js +0 -6
  153. package/dist/chunk-KO7YJRWP.js +0 -12
  154. package/dist/chunk-PZ6ESKRH.js +0 -7
  155. package/dist/chunk-RJ7SPBJ5.js +0 -5
  156. package/dist/chunk-TINPMWJK.js +0 -2
  157. package/dist/chunk-UJB62HV3.js +0 -2
  158. package/dist/chunk-VEUMRDHW.js +0 -2
  159. package/dist/chunk-WCDXJGYT.js +0 -65
  160. package/dist/chunk-Y7H6D2EV.js +0 -2
@@ -689,6 +689,8 @@ interface ScipQueryConfig {
689
689
  indexPath: string;
690
690
  /** Project root directory */
691
691
  projectRoot: string;
692
+ /** Project-specific externally-live roots for dead-code filtering */
693
+ entryRoots?: EntryRootsConfig;
692
694
  /** Paths to .gitignore files to load for filtering */
693
695
  gitignorePaths?: string[];
694
696
  }
@@ -701,6 +703,18 @@ interface ProjectConfig {
701
703
  indexer?: Partial<Record<SupportedLanguage, IndexerOverrides>>;
702
704
  /** Override the database storage path (default: ~/.cache/scip-query/<hash>/) */
703
705
  dbPath?: string;
706
+ /** Project-specific externally-live roots for dead-code filtering */
707
+ entryRoots?: EntryRootsConfig;
708
+ }
709
+ interface EntryRootsConfig {
710
+ /** Any symbol defined in these path prefixes is externally live */
711
+ pathPrefixes?: string[];
712
+ /** Any symbol defined in these exact files is externally live */
713
+ files?: string[];
714
+ /** Symbols matching these regular expressions are externally live */
715
+ symbolPatterns?: string[];
716
+ /** Qualified var names like my.ns/my-fn that are externally live */
717
+ qualifiedVars?: string[];
704
718
  }
705
719
  interface WatchConfig {
706
720
  /** Enable file watching (default: false, must opt in) */
@@ -807,4 +821,4 @@ declare class ScipDatabase {
807
821
  close(): void;
808
822
  }
809
823
 
810
- export { type DeadSymbolResult as $, type AffectedResult as A, type BottleneckResult as B, type CallGraphResult as C, type DataflowResult as D, type ExtractCandidate as E, type FanResult as F, type SimilarChainResult as G, type HealthReport as H, type ImportResult as I, type StaleAbstraction as J, type SliceResult as K, type SimilarSignatureGroup as L, type MemberResult as M, type ScipSymbol as N, type OutlineNode as O, type PassthroughCandidate as P, type ScipLocalSymbol as Q, type RedundantReexport as R, ScipDatabase as S, type TraceResult as T, type UnusedImportResult as U, type SupportedLanguage as V, type WrapperCandidate as W, type IndexerConfig as X, type ProjectConfig as Y, type WatcherStatus as Z, type ChangeSurfaceEntry as _, type ByKindResult as a, type DescriptorSuffix as a0, type DocumentPathCandidate as a1, type DriftResult as a2, type HealthAction as a3, type IndexedDefinition as a4, type IndexerOverrides as a5, type InstallMethod as a6, type ParsedReExport as a7, type ParsedSourceExport as a8, type ParsedSourceImport as a9, type ReferenceSite as aa, type ScipDescriptor as ab, type ScipQueryConfig as ac, type SymbolLocation as ad, type SymbolMatch as ae, type WatchConfig as af, createGitignoreFilter as ag, type ChangeSurfaceResult as b, type CodeResult as c, type ComplexityHotspot as d, type ComplexityResult as e, type ConvergenceResult as f, type CouplingResult as g, type CycleResult as h, type DeadOptions as i, type DeadSummary as j, type DeepChainResult as k, type DepResult as l, type DiffImpactResult as m, type DriftSummary as n, type FileResult as o, type HierarchyNode as p, type HotspotResult as q, type IsolatedResult as r, type MethodResult as s, type StatsResult as t, type SymbolResult as u, type RefResult as v, type SystemResult as w, type SurfaceResult as x, type SimilarSymbolResult as y, type SimilarFileResult as z };
824
+ export { type DeadSymbolResult as $, type AffectedResult as A, type BottleneckResult as B, type CallGraphResult as C, type DataflowResult as D, type ExtractCandidate as E, type FanResult as F, type SimilarChainResult as G, type HealthReport as H, type ImportResult as I, type StaleAbstraction as J, type SliceResult as K, type SimilarSignatureGroup as L, type MemberResult as M, type ScipSymbol as N, type OutlineNode as O, type PassthroughCandidate as P, type ScipLocalSymbol as Q, type RedundantReexport as R, ScipDatabase as S, type TraceResult as T, type UnusedImportResult as U, type SupportedLanguage as V, type WrapperCandidate as W, type IndexerConfig as X, type ProjectConfig as Y, type WatcherStatus as Z, type ChangeSurfaceEntry as _, type ByKindResult as a, type DescriptorSuffix as a0, type DocumentPathCandidate as a1, type DriftResult as a2, type EntryRootsConfig as a3, type HealthAction as a4, type IndexedDefinition as a5, type IndexerOverrides as a6, type InstallMethod as a7, type ParsedReExport as a8, type ParsedSourceExport as a9, type ParsedSourceImport as aa, type ReferenceSite as ab, type ScipDescriptor as ac, type ScipQueryConfig as ad, type SymbolLocation as ae, type SymbolMatch as af, type WatchConfig as ag, createGitignoreFilter as ah, type ChangeSurfaceResult as b, type CodeResult as c, type ComplexityHotspot as d, type ComplexityResult as e, type ConvergenceResult as f, type CouplingResult as g, type CycleResult as h, type DeadOptions as i, type DeadSummary as j, type DeepChainResult as k, type DepResult as l, type DiffImpactResult as m, type DriftSummary as n, type FileResult as o, type HierarchyNode as p, type HotspotResult as q, type IsolatedResult as r, type MethodResult as s, type StatsResult as t, type SymbolResult as u, type RefResult as v, type SystemResult as w, type SurfaceResult as x, type SimilarSymbolResult as y, type SimilarFileResult as z };
package/dist/index.d.ts CHANGED
@@ -1,5 +1,5 @@
1
- import { N as ScipSymbol, Q as ScipLocalSymbol, V as SupportedLanguage, X as IndexerConfig, Y as ProjectConfig, Z as WatcherStatus } from './db-BSTtBG_H.js';
2
- export { A as AffectedResult, B as BottleneckResult, a as ByKindResult, C as CallGraphResult, _ as ChangeSurfaceEntry, b as ChangeSurfaceResult, c as CodeResult, d as ComplexityHotspot, e as ComplexityResult, f as ConvergenceResult, g as CouplingResult, h as CycleResult, D as DataflowResult, i as DeadOptions, j as DeadSummary, $ as DeadSymbolResult, k as DeepChainResult, l as DepResult, a0 as DescriptorSuffix, m as DiffImpactResult, a1 as DocumentPathCandidate, a2 as DriftResult, n as DriftSummary, E as ExtractCandidate, F as FanResult, o as FileResult, a3 as HealthAction, H as HealthReport, p as HierarchyNode, q as HotspotResult, I as ImportResult, a4 as IndexedDefinition, a5 as IndexerOverrides, a6 as InstallMethod, r as IsolatedResult, M as MemberResult, s as MethodResult, O as OutlineNode, a7 as ParsedReExport, a8 as ParsedSourceExport, a9 as ParsedSourceImport, P as PassthroughCandidate, R as RedundantReexport, v as RefResult, aa as ReferenceSite, S as ScipDatabase, ab as ScipDescriptor, ac as ScipQueryConfig, G as SimilarChainResult, z as SimilarFileResult, L as SimilarSignatureGroup, y as SimilarSymbolResult, K as SliceResult, J as StaleAbstraction, t as StatsResult, x as SurfaceResult, ad as SymbolLocation, ae as SymbolMatch, u as SymbolResult, w as SystemResult, T as TraceResult, U as UnusedImportResult, af as WatchConfig, W as WrapperCandidate, ag as createGitignoreFilter } from './db-BSTtBG_H.js';
1
+ import { N as ScipSymbol, Q as ScipLocalSymbol, V as SupportedLanguage, X as IndexerConfig, Y as ProjectConfig, Z as WatcherStatus } from './db-DKhNQ75l.js';
2
+ export { A as AffectedResult, B as BottleneckResult, a as ByKindResult, C as CallGraphResult, _ as ChangeSurfaceEntry, b as ChangeSurfaceResult, c as CodeResult, d as ComplexityHotspot, e as ComplexityResult, f as ConvergenceResult, g as CouplingResult, h as CycleResult, D as DataflowResult, i as DeadOptions, j as DeadSummary, $ as DeadSymbolResult, k as DeepChainResult, l as DepResult, a0 as DescriptorSuffix, m as DiffImpactResult, a1 as DocumentPathCandidate, a2 as DriftResult, n as DriftSummary, a3 as EntryRootsConfig, E as ExtractCandidate, F as FanResult, o as FileResult, a4 as HealthAction, H as HealthReport, p as HierarchyNode, q as HotspotResult, I as ImportResult, a5 as IndexedDefinition, a6 as IndexerOverrides, a7 as InstallMethod, r as IsolatedResult, M as MemberResult, s as MethodResult, O as OutlineNode, a8 as ParsedReExport, a9 as ParsedSourceExport, aa as ParsedSourceImport, P as PassthroughCandidate, R as RedundantReexport, v as RefResult, ab as ReferenceSite, S as ScipDatabase, ac as ScipDescriptor, ad as ScipQueryConfig, G as SimilarChainResult, z as SimilarFileResult, L as SimilarSignatureGroup, y as SimilarSymbolResult, K as SliceResult, J as StaleAbstraction, t as StatsResult, x as SurfaceResult, ae as SymbolLocation, af as SymbolMatch, u as SymbolResult, w as SystemResult, T as TraceResult, U as UnusedImportResult, ag as WatchConfig, W as WrapperCandidate, ah as createGitignoreFilter } from './db-DKhNQ75l.js';
3
3
  export { stats } from './queries/stats.js';
4
4
  export { files } from './queries/files.js';
5
5
  export { symbols } from './queries/symbols.js';
@@ -78,6 +78,39 @@ declare function leafName(raw: string): string;
78
78
  */
79
79
  declare function detectLanguages(projectRoot: string): SupportedLanguage[];
80
80
 
81
+ interface AugmentAuxiliaryDocumentsOptions {
82
+ projectRoot: string;
83
+ dbPath: string;
84
+ extensions?: readonly string[];
85
+ onStatus?: (message: string) => void;
86
+ }
87
+ interface AugmentAuxiliaryDocumentsResult {
88
+ scanned: number;
89
+ inserted: number;
90
+ existing: number;
91
+ }
92
+ /**
93
+ * Add source files that upstream SCIP indexers skipped to the SQLite
94
+ * documents table. Vue SFCs are the motivating case: scip-typescript can
95
+ * resolve imports to generated TS, but it does not emit `.vue` documents.
96
+ */
97
+ declare function augmentAuxiliaryDocuments(opts: AugmentAuxiliaryDocumentsOptions): AugmentAuxiliaryDocumentsResult;
98
+
99
+ interface AugmentVueResolvedOptions {
100
+ projectRoot: string;
101
+ dbPath: string;
102
+ tsconfig: string;
103
+ onStatus?: (message: string) => void;
104
+ }
105
+ interface AugmentVueResolvedResult {
106
+ vueFiles: number;
107
+ resolvedReferences: number;
108
+ insertedMentions: number;
109
+ skippedReferences: number;
110
+ syntheticSymbols: number;
111
+ }
112
+ declare function augmentVueResolvedReferences(opts: AugmentVueResolvedOptions): AugmentVueResolvedResult;
113
+
81
114
  /**
82
115
  * Indexer configurations for each supported language.
83
116
  * Each entry describes how to produce a SCIP index for that language.
@@ -274,4 +307,4 @@ declare function installSkills(opts?: {
274
307
  quiet?: boolean;
275
308
  }): InstallSkillsResult;
276
309
 
277
- export { INDEXER_CONFIGS, IndexerConfig, ProjectConfig, ScipLocalSymbol, ScipSymbol, SupportedLanguage, Watcher, WatcherStatus, detectLanguages, getIndexerConfig, getScipVersion, initProjectConfig, installSkills, isBinaryAvailable, isIndexerInstalled, isScipInstalled, leafName, loadProjectConfig, mergeScipFiles, mergeScipIndexes, parseSymbol, printScipInstallInstructions, reindex, resolveCacheDir, resolveIndexPaths, shortenSymbol, tryInstallIndexer, tryInstallScipCli };
310
+ export { INDEXER_CONFIGS, IndexerConfig, ProjectConfig, ScipLocalSymbol, ScipSymbol, SupportedLanguage, Watcher, WatcherStatus, augmentAuxiliaryDocuments, augmentVueResolvedReferences, detectLanguages, getIndexerConfig, getScipVersion, initProjectConfig, installSkills, isBinaryAvailable, isIndexerInstalled, isScipInstalled, leafName, loadProjectConfig, mergeScipFiles, mergeScipIndexes, parseSymbol, printScipInstallInstructions, reindex, resolveCacheDir, resolveIndexPaths, shortenSymbol, tryInstallIndexer, tryInstallScipCli };
package/dist/index.js CHANGED
@@ -1,4 +1,4 @@
1
- import"./chunk-FVH3Y44U.js";import{a as cn}from"./chunk-D7YBWSON.js";import{a as tn}from"./chunk-JH3A7HTU.js";import{a as ln}from"./chunk-XVDASCN7.js";import{a as sn}from"./chunk-STOGKRJH.js";import{a as rn}from"./chunk-PZ6ESKRH.js";import{a as Ln}from"./chunk-Y7LOQSWY.js";import{a as Tn}from"./chunk-4QJ7LVW5.js";import{a as Vn}from"./chunk-XAZTIDST.js";import{a as Kn}from"./chunk-AJ5PWKD4.js";import{a as dn,b as gn,c as hn}from"./chunk-DE5ZBHMK.js";import{a as fn}from"./chunk-BE6EQIWY.js";import{a as nn}from"./chunk-JS2RNIC7.js";import{a as mn}from"./chunk-2RLP74AO.js";import{a as Qn}from"./chunk-YIPCV7M7.js";import{a as On}from"./chunk-NXMYYHDO.js";import{a as yn,b as xn,c as bn,d as vn}from"./chunk-GXVB36TG.js";import{a as en}from"./chunk-KYT47WU2.js";import{a as Hn}from"./chunk-UJB62HV3.js";import{a as Mn}from"./chunk-5IADAU5B.js";import{a as Dn,b as $n}from"./chunk-K6GBKEQE.js";import"./chunk-LORWXBOO.js";import{a as Un}from"./chunk-RJ7SPBJ5.js";import{a as Zt}from"./chunk-N3Z2SJCR.js";import{a as wn}from"./chunk-7Z4COVMC.js";import{a as Wn}from"./chunk-7VOF4ZG6.js";import{a as Bn}from"./chunk-7754WFFV.js";import{a as Fn}from"./chunk-F2LLHRRZ.js";import{a as _n}from"./chunk-RWE6FHG3.js";import{a as pn}from"./chunk-NTDA4A2D.js";import{a as Jn}from"./chunk-BDBRZPX3.js";import{a as Gn}from"./chunk-HMKJTAZD.js";import{a as Sn,b as In}from"./chunk-ZXKURFVB.js";import{a as Cn}from"./chunk-EEF3YEHW.js";import{a as Xn}from"./chunk-SG35Y7J2.js";import{a as un}from"./chunk-KO7YJRWP.js";import"./chunk-GNXRLK5G.js";import"./chunk-VEUMRDHW.js";import"./chunk-ZSRXMNMK.js";import{a as jn}from"./chunk-IBGBI3VU.js";import{a as on,b as an}from"./chunk-DHYIJHXZ.js";import{a as Nn}from"./chunk-D7KLLMPB.js";import{a as kn}from"./chunk-K5FQFCSN.js";import{a as Pn,b as En}from"./chunk-SDX6MDBL.js";import{a as Rn}from"./chunk-FCC3XJTI.js";import{a as An}from"./chunk-2DSS2NGF.js";import{a as zn}from"./chunk-QXE6EDY2.js";import"./chunk-WTSTDJZ7.js";import{a as qn}from"./chunk-Y7H6D2EV.js";import"./chunk-WCDXJGYT.js";import"./chunk-BQ3INTYT.js";import"./chunk-LX4H4LLG.js";import"./chunk-IYFZS4PV.js";import{a as Te,b as Le,c as Fe}from"./chunk-TINPMWJK.js";import Ne from"better-sqlite3";import{statSync as te}from"fs";var F=class{db;config;pathFilter;constructor(e,n){this.config=e,this.pathFilter=n??null,this.db=new Ne(e.dbPath,{readonly:!0}),this.db.pragma("busy_timeout = 5000")}isIgnored(e){return this.pathFilter?.isIgnored(e)??!1}get localSymbolPredicate(){return`(
1
+ import"./chunk-FVH3Y44U.js";import{a as zn}from"./chunk-HS65NNKP.js";import{a as Wn}from"./chunk-ZORIMKQO.js";import{a as qn}from"./chunk-3QJ2NOYG.js";import{a as Un}from"./chunk-HS5LX75F.js";import{a as Vn}from"./chunk-7DKDFRXQ.js";import{a as xr}from"./chunk-AVLUWGXG.js";import{a as yr}from"./chunk-NLWXQMKR.js";import{a as Fr}from"./chunk-TXADWK4I.js";import{a as Dr}from"./chunk-3T53QAUS.js";import{a as Kn,b as Qn,c as Yn}from"./chunk-3J463LOK.js";import{a as er}from"./chunk-CHW7433E.js";import{a as Bn}from"./chunk-MQ5FKM2F.js";import{a as Zn}from"./chunk-OU2D2T4A.js";import{a as Tr}from"./chunk-ORD3HEWI.js";import{a as Ir}from"./chunk-P6IUCZA3.js";import{a as tr,b as nr,c as rr,d as ir}from"./chunk-T26XHATT.js";import{a as Mn}from"./chunk-KYT47WU2.js";import{a as Pr}from"./chunk-ZJM2HD2Z.js";import{a as kr}from"./chunk-YRUHPGC3.js";import{a as fr,b as hr}from"./chunk-4LBOHXT7.js";import"./chunk-LORWXBOO.js";import{a as Er}from"./chunk-5V76WMMZ.js";import{a as $n}from"./chunk-N3Z2SJCR.js";import{a as cr}from"./chunk-AZQ3ENHU.js";import{a as Cr}from"./chunk-TWYHFB5K.js";import{a as wr}from"./chunk-FPDWFGBQ.js";import{a as br}from"./chunk-G2SX5EHW.js";import{a as dr}from"./chunk-GK6VXKLY.js";import{a as Xn}from"./chunk-5W22HCSF.js";import{a as _r}from"./chunk-5NRGSXZQ.js";import{a as Lr}from"./chunk-5VU2RVKI.js";import{a as sr,b as or}from"./chunk-AZTWY4OT.js";import{a as ar}from"./chunk-435YC4OF.js";import{a as Nr}from"./chunk-2HEJQBMS.js";import{a as Jn}from"./chunk-CW5K3KIF.js";import"./chunk-QSTMORTI.js";import{a as pr}from"./chunk-67UXTIFZ.js";import{a as Hn,b as Gn}from"./chunk-LKCPNPHH.js";import{a as Sr}from"./chunk-FJV7QT4G.js";import{a as lr}from"./chunk-6CTMG3IF.js";import{a as ur,b as gr}from"./chunk-6ALIV5SZ.js";import{a as mr}from"./chunk-26LSAIEP.js";import{a as vr}from"./chunk-PU7P5NPE.js";import{a as jr}from"./chunk-RC2PKZSS.js";import"./chunk-NFOSOUH6.js";import{a as Rr}from"./chunk-S65VVU3R.js";import"./chunk-AEMTUHQ7.js";import{a as ae,b as le}from"./chunk-F6F2QUIH.js";import"./chunk-3FG3VLK3.js";import"./chunk-6XP3KWHC.js";import"./chunk-7NEBSLI3.js";import"./chunk-SPMLGXCE.js";import{a as He,b as Ge,c as qe}from"./chunk-5IM4IQ6N.js";import ze from"better-sqlite3";import{statSync as ce}from"fs";var U=class{db;config;pathFilter;constructor(t,r){this.config=t,this.pathFilter=r??null,this.db=new ze(t.dbPath,{readonly:!0}),this.db.pragma("busy_timeout = 5000")}isIgnored(t){return this.pathFilter?.isIgnored(t)??!1}get localSymbolPredicate(){return`(
2
2
  EXISTS (
3
3
  SELECT 1
4
4
  FROM defn_enclosing_ranges local_der
@@ -15,8 +15,8 @@ import"./chunk-FVH3Y44U.js";import{a as cn}from"./chunk-D7YBWSON.js";import{a as
15
15
  AND local_m.role = 1
16
16
  ${this.pathExclusionsFor("local_d").trimStart()}
17
17
  )
18
- )`}get pathExclusions(){return this.pathExclusionsFor("d")}get symbolNoise(){return this.symbolNoiseFor("gs")}pathExclusionsFor(...e){return e.flatMap(n=>[`AND ${n}.relative_path NOT LIKE 'node_modules/%'`,`AND ${n}.relative_path NOT LIKE '.git/%'`]).join(`
19
- `)}symbolNoiseFor(e){return`AND ${e}.symbol NOT LIKE '%().(%' AND ${e}.symbol NOT LIKE '%typeLiteral%'`}all(e,...n){return this.db.prepare(e).all(...n)}get(e,...n){return this.db.prepare(e).get(...n)}sizeBytes(){try{return te(this.config.dbPath).size}catch{return 0}}lastModified(){try{return te(this.config.dbPath).mtime}catch{return null}}close(){this.db.close()}};import Ae from"ignore";import{readFileSync as Oe,existsSync as N}from"fs";import{dirname as A,isAbsolute as ne,join as O,relative as Be,resolve as Me}from"path";function B(t){let e=Ae(),n=!1,r=We(t);for(let i of r)try{let s=Oe(i,"utf-8");e.add(s),n=!0}catch{}return n||e.add(Ue),{isIgnored:i=>re(e,t,i),filter:i=>i.filter(s=>!re(e,t,s))}}function We(t){let e=[],n=O(t,".gitignore");N(n)&&e.push(n);let r=A(t),i=0;for(;r!==A(r)&&i<5;){let s=O(r,".gitignore");if(N(s)&&e.push(s),N(O(r,".git")))break;r=A(r),i++}return e}var Ue=`
18
+ )`}get pathExclusions(){return this.pathExclusionsFor("d")}get symbolNoise(){return this.symbolNoiseFor("gs")}pathExclusionsFor(...t){return t.flatMap(r=>[`AND ${r}.relative_path NOT LIKE 'node_modules/%'`,`AND ${r}.relative_path NOT LIKE '.git/%'`]).join(`
19
+ `)}symbolNoiseFor(t){return`AND ${t}.symbol NOT LIKE '%().(%' AND ${t}.symbol NOT LIKE '%typeLiteral%'`}all(t,...r){return this.db.prepare(t).all(...r)}get(t,...r){return this.db.prepare(t).get(...r)}sizeBytes(){try{return ce(this.config.dbPath).size}catch{return 0}}lastModified(){try{return ce(this.config.dbPath).mtime}catch{return null}}close(){this.db.close()}};import Je from"ignore";import{readFileSync as Xe,existsSync as H}from"fs";import{dirname as G,isAbsolute as ue,join as q,relative as Ke,resolve as Qe}from"path";function C(e){let t=Je(),r=!1,n=Ye(e);for(let i of n)try{let s=Xe(i,"utf-8");t.add(s),r=!0}catch{}return r||t.add(Ze),{isIgnored:i=>ge(t,e,i),filter:i=>i.filter(s=>!ge(t,e,s))}}function Ye(e){let t=[],r=q(e,".gitignore");H(r)&&t.push(r);let n=G(e),i=0;for(;n!==G(n)&&i<5;){let s=q(n,".gitignore");if(H(s)&&t.push(s),H(q(n,".git")))break;n=G(n),i++}return t}var Ze=`
20
20
  # Dependencies
21
21
  node_modules/
22
22
  vendor/
@@ -73,14 +73,62 @@ Thumbs.db
73
73
 
74
74
  # Type definitions (often noise in queries)
75
75
  *.d.ts
76
- `;function re(t,e,n){let r=qe(e,n);if(!r)return!1;try{return t.ignores(r)}catch{return!1}}function qe(t,e){if(!e||e===".")return null;if(!ne(e)&&!e.startsWith(".."))return e.replaceAll("\\","/");let n=ne(e)?e:Me(t,e),r=Be(t,n).replaceAll("\\","/");return!r||r==="."||r.startsWith("..")?null:r}import{execFileSync as ye}from"child_process";import{existsSync as xe,renameSync as be,rmSync as Ct}from"fs";import{basename as kt,dirname as wt,extname as Pt,join as T}from"path";import{execFileSync as S}from"child_process";import{platform as k,arch as He}from"os";var ie=k()==="win32",se="v0.7.0";function C(t){let e=ie?"where":"which";try{return S(e,[t],{stdio:"pipe"}),!0}catch{return!1}}function Ge(){try{return S(ie?"where":"which",["scip"],{stdio:"pipe"}),!0}catch{return!1}}function ze(){try{return S("scip",["--version"],{stdio:"pipe"}).toString().trim()}catch{return null}}function Je(){let t=k(),e=He(),n,r,i;switch(t){case"darwin":n="darwin",i="tar.gz";break;case"linux":n="linux",i="tar.gz";break;case"win32":n="windows",i="zip";break;default:return null}switch(e){case"arm64":r="arm64";break;case"x64":r="amd64";break;default:return null}let s=`scip-${n}-${r}.${i}`;return{url:`https://github.com/sourcegraph/scip/releases/download/${se}/${s}`,filename:s}}function Xe(){let t=Je();console.log("\nThe `scip` CLI is required but not found on PATH.\n"),k()==="darwin"?(console.log("Install via Homebrew:"),console.log(` brew install sourcegraph/scip/scip
77
- `),console.log("Or download manually:")):console.log("Download from:"),console.log(t?` ${t.url}
78
- `:` https://github.com/sourcegraph/scip/releases/tag/${se}
79
- `),console.log("After installing, ensure `scip` is on your PATH and run `scip-query reindex`.")}function w(t){if(k()==="darwin"&&C("brew")){t("Installing scip CLI via Homebrew...");try{if(S("brew",["install","sourcegraph/scip/scip"],{stdio:"inherit",timeout:3e5,env:process.env}),C("scip"))return t("Successfully installed scip CLI via Homebrew"),!0}catch(e){let n=e instanceof Error?e.message:String(e);t(`Homebrew install failed: ${n}`)}}if(C("go")){t("Installing scip CLI via go install...");try{if(S("go",["install","github.com/sourcegraph/scip/cmd/scip@latest"],{stdio:"inherit",timeout:3e5,env:process.env}),C("scip"))return t("Successfully installed scip CLI via go install"),!0}catch(e){let n=e instanceof Error?e.message:String(e);t(`go install failed: ${n}`)}}return t("Could not auto-install scip CLI."),t("Install manually from: https://github.com/sourcegraph/scip/releases"),!1}import{existsSync as Ke,readdirSync as ae}from"fs";import{extname as Qe,join as le}from"path";var Ve=new Set([".git",".hg",".svn",".idea",".vscode","node_modules","vendor","dist","build","target","bin","obj",".dart_tool",".gradle",".next",".venv","venv","__pycache__"]),Ye=[{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:"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 P(t){let e=[],n=Ze(t),r=rt(t);for(let i of Ye){if(et(t,i.files)){e.push(i.language);continue}if(tt(n,i.globs)){e.push(i.language);continue}it(r,i.extensions)&&e.push(i.language)}return e.includes("typescript")&&oe(e,"javascript"),e.includes("cpp")&&!r.has(".c")&&oe(e,"c"),e}function Ze(t){try{return ae(t)}catch{return[]}}function et(t,e){return e?.length?e.some(n=>Ke(le(t,n))):!1}function tt(t,e){return e?.length?t.some(n=>e.some(r=>nt(n,r))):!1}function nt(t,e){if(e==="*")return!0;if(!e.includes("*"))return t===e;let[n,r]=e.split("*");return t.startsWith(n??"")&&t.endsWith(r??"")}function rt(t){let e=new Set,n=[t];for(;n.length>0;){let r=n.pop();if(!r)continue;let i;try{i=ae(r,{withFileTypes:!0})}catch{continue}for(let s of i){if(s.name.startsWith(".")&&!s.name.endsWith("proj")&&!s.name.endsWith("sln")&&s.isDirectory())continue;let a=le(r,s.name);if(s.isDirectory()){Ve.has(s.name)||n.push(a);continue}let m=Qe(s.name).toLowerCase();m&&e.add(m)}}return e}function it(t,e){return e?.length?e.some(n=>t.has(n)):!1}function oe(t,e){let n=t.indexOf(e);n!==-1&&t.splice(n,1)}import{existsSync as ce,readdirSync as st}from"fs";import{join as M}from"path";var W={typescript:{language:"typescript",indexerBinary:"scip-typescript",checkCommand:"npx scip-typescript --version",indexArgs:({outputPath:t,pnpmWorkspaces:e})=>{let n=["scip-typescript","index","--infer-tsconfig","--output",t,"--no-progress-bar"];return e&&n.splice(2,0,"--pnpm-workspaces"),{binary:"npx",args:n}},markerFiles:["tsconfig.json"],installMethods:[{label:"npm",prerequisite:"npm",binary:"npm",args:["install","-g","@sourcegraph/scip-typescript"]}],installUrl:"https://github.com/sourcegraph/scip-typescript",bundledNpmPackage:"@sourcegraph/scip-typescript"},javascript:{language:"javascript",indexerBinary:"scip-typescript",checkCommand:"npx scip-typescript --version",indexArgs:({outputPath:t})=>({binary:"npx",args:["scip-typescript","index","--infer-tsconfig","--output",t,"--no-progress-bar"]}),markerFiles:["package.json"],installMethods:[{label:"npm",prerequisite:"npm",binary:"npm",args:["install","-g","@sourcegraph/scip-typescript"]}],installUrl:"https://github.com/sourcegraph/scip-typescript",bundledNpmPackage:"@sourcegraph/scip-typescript"},java:{language:"java",indexerBinary:"scip-java",checkCommand:"scip-java --version",indexArgs:({outputPath:t})=>({binary:"scip-java",args:["index","--output",t]}),markerFiles:["pom.xml","build.gradle"],installMethods:[],installUrl:"https://github.com/sourcegraph/scip-java/releases"},scala:{language:"scala",indexerBinary:"scip-java",checkCommand:"scip-java --version",indexArgs:({outputPath:t})=>({binary:"scip-java",args:["index","--output",t]}),markerFiles:["build.sbt"],installMethods:[],installUrl:"https://github.com/sourcegraph/scip-java/releases"},kotlin:{language:"kotlin",indexerBinary:"scip-java",checkCommand:"scip-java --version",indexArgs:({outputPath:t})=>({binary:"scip-java",args:["index","--output",t]}),markerFiles:["build.gradle.kts"],installMethods:[],installUrl:"https://github.com/sourcegraph/scip-java/releases"},rust:{language:"rust",indexerBinary:"rust-analyzer",checkCommand:"rust-analyzer --version",indexArgs:({outputPath:t})=>({binary:"rust-analyzer",args:["scip",".","--output",t]}),markerFiles:["Cargo.toml"],installMethods:[{label:"rustup",prerequisite:"rustup",binary:"rustup",args:["component","add","rust-analyzer"]}],installUrl:"https://github.com/rust-lang/rust-analyzer"},python:{language:"python",indexerBinary:"scip-python",binaryAliases:["scip-python-plus"],checkCommand:"npx scip-python --version",indexArgs:({outputPath:t})=>({binary:"npx",args:["scip-python","index","--output",t,"--project-name","project"]}),markerFiles:["pyproject.toml","setup.py"],installMethods:[{label:"npm",prerequisite:"npm",binary:"npm",args:["install","-g","scip-python-plus"]}],installUrl:"https://github.com/PlunderStruck/scip-python",bundledNpmPackage:"scip-python-plus"},ruby:{language:"ruby",indexerBinary:"scip-ruby",checkCommand:"scip-ruby --version",indexArgs:({indexerBinary:t})=>({binary:t,args:["--dir","."]}),defaultOutputPath:"index.scip",markerFiles:["Gemfile"],installMethods:[],installUrl:"https://github.com/sourcegraph/scip-ruby/releases"},go:{language:"go",indexerBinary:"scip-go",checkCommand:"scip-go --version",indexArgs:({outputPath:t})=>({binary:"scip-go",args:["--output",t]}),markerFiles:["go.mod"],installMethods:[{label:"go install",prerequisite:"go",binary:"go",args:["install","github.com/sourcegraph/scip-go@latest"]}],installUrl:"https://github.com/sourcegraph/scip-go"},cpp:{language:"cpp",indexerBinary:"scip-clang",checkCommand:"scip-clang --version",indexArgs:({outputPath:t})=>({binary:"scip-clang",args:["--compdb-path","compile_commands.json","--index-output-path",t]}),markerFiles:["CMakeLists.txt","Makefile"],installMethods:[],installUrl:"https://github.com/sourcegraph/scip-clang/releases"},c:{language:"c",indexerBinary:"scip-clang",checkCommand:"scip-clang --version",indexArgs:({outputPath:t})=>({binary:"scip-clang",args:["--compdb-path","compile_commands.json","--index-output-path",t]}),markerFiles:["CMakeLists.txt","Makefile"],installMethods:[],installUrl:"https://github.com/sourcegraph/scip-clang/releases"},csharp:{language:"csharp",indexerBinary:"scip-dotnet",checkCommand:"scip-dotnet --version",indexArgs:({projectRoot:t,outputPath:e})=>({binary:"scip-dotnet",args:["index",ue(t,[".sln",".csproj"])??t,"--output",e,"--working-directory",t]}),markerFiles:["*.csproj","*.sln"],installMethods:[{label:"dotnet",prerequisite:"dotnet",binary:"dotnet",args:["tool","install","--global","scip-dotnet"]}],installUrl:"https://github.com/sourcegraph/scip-dotnet/releases"},vb:{language:"vb",indexerBinary:"scip-dotnet",checkCommand:"scip-dotnet --version",indexArgs:({projectRoot:t,outputPath:e})=>({binary:"scip-dotnet",args:["index",ue(t,[".sln",".vbproj"])??t,"--output",e,"--working-directory",t]}),markerFiles:["*.vbproj","*.sln"],installMethods:[{label:"dotnet",prerequisite:"dotnet",binary:"dotnet",args:["tool","install","--global","scip-dotnet"]}],installUrl:"https://github.com/sourcegraph/scip-dotnet/releases"},dart:{language:"dart",indexerBinary:"scip-dart",checkCommand:"scip-dart --version",indexArgs:({indexerBinary:t,outputPath:e})=>({binary:t,args:["--output",e]}),markerFiles:["pubspec.yaml"],installMethods:[{label:"dart pub",prerequisite:"dart",binary:"dart",args:["pub","global","activate","scip_dart"]}],installUrl:"https://github.com/Workiva/scip-dart/releases"},php:{language:"php",indexerBinary:"scip-php",projectLocalBinaries:["vendor/davidrjenni/scip-php/bin/scip-php","vendor/bin/scip-php"],checkCommand:"scip-php --version",indexArgs:({projectRoot:t,indexerBinary:e})=>{let n=M(t,"vendor","bin","scip-php"),r=M(t,"vendor","davidrjenni","scip-php","bin","scip-php");return{binary:"php",args:["-d","error_reporting=E_ALL & ~E_DEPRECATED & ~E_USER_DEPRECATED",ce(r)?r:ce(n)?n:e]}},defaultOutputPath:"index.scip",markerFiles:["composer.json"],installMethods:[],installUrl:"https://github.com/davidrjenni/scip-php/releases"}};function E(t){return W[t]}function ue(t,e){let n;try{n=st(t)}catch{return null}for(let r of n)if(e.some(i=>r.endsWith(i)))return M(t,r);return null}import{readFileSync as ot,writeFileSync as at}from"fs";import{create as U}from"@bufbuild/protobuf";import{deserializeSCIP as lt,serializeSCIP as ct,DocumentSchema as ut,IndexSchema as pt,SymbolInformationSchema as dt}from"@c4312/scip";function q(t){if(t.length===0)throw new Error("Cannot merge zero SCIP indexes");if(t.length===1)return t[0];let e=gt(t),n=ht(t.flatMap(i=>i.documents??[])),r=pe(t.flatMap(i=>i.externalSymbols??[]));return U(pt,{metadata:e,documents:n,externalSymbols:r})}function j(t,e){if(t.length===0)throw new Error("Cannot merge zero SCIP files");let n=t.map(i=>lt(ot(i))),r=q(n);return at(e,Buffer.from(ct(r))),{documentCount:r.documents.length,externalSymbolCount:r.externalSymbols.length,inputCount:t.length}}function gt(t){let e=t[0]?.metadata;if(!e)return;let n=e.projectRoot;for(let r of t.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 e}function ht(t){let e=new Map;for(let n of t){let r=e.get(n.relativePath);if(!r){e.set(n.relativePath,n);continue}e.set(n.relativePath,U(ut,{language:r.language||n.language,relativePath:r.relativePath||n.relativePath,occurrences:[...r.occurrences,...n.occurrences],symbols:pe([...r.symbols,...n.symbols]),text:ft(r.text,n.text),positionEncoding:r.positionEncoding||n.positionEncoding}))}return[...e.values()]}function pe(t){let e=new Map;for(let n of t){let r=e.get(n.symbol);if(!r){e.set(n.symbol,n);continue}e.set(n.symbol,U(dt,{symbol:r.symbol,documentation:yt([...r.documentation,...n.documentation]),relationships:mt([...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[...e.values()]}function mt(t){let e=new Set,n=[];for(let r of t){let i=[r.symbol,r.isReference?"1":"0",r.isImplementation?"1":"0",r.isTypeDefinition?"1":"0",r.isDefinition?"1":"0"].join("|");e.has(i)||(e.add(i),n.push(r))}return n}function ft(t,e){return t?e?t.length>=e.length?t:e:t:e}function yt(t){return[...new Set(t)]}import{execFileSync as _}from"child_process";import{existsSync as H}from"fs";import{createRequire as xt}from"module";import{platform as de}from"os";import{join as ge}from"path";var bt=xt(import.meta.url),vt=de()==="win32";function f(t){let e=vt?"where":"which";try{return _(e,[t],{stdio:"pipe"}),!0}catch{return!1}}function he(t){return[t.indexerBinary,...t.binaryAliases??[]]}function R(t){let e=he(t);return e.length===1?e[0]:e.join(" or ")}function I(t){for(let e of he(t))if(f(e))return e;return me(t)?t.indexerBinary:null}function D(t){return I(t)!==null||me(t)}function me(t){if(!t.bundledNpmPackage)return!1;try{return bt.resolve(`${t.bundledNpmPackage}/package.json`),!0}catch{return!1}}function G(t,e){for(let n of t.projectLocalBinaries??[]){let r=ge(e,n);if(H(r))return r}return null}function z(t,e=process.env,n=t.indexerBinary){if(t.indexerBinary!=="scip-dotnet"||fe(n,e))return e;let r=St(n,e);return r?{...e,DOTNET_ROOT:r}:e}function $(t,e){let n=t.installMethods,r=R(t);if(!n?.length)return e(`No auto-install method available for ${r}.`),t.installUrl&&e(`Install manually from: ${t.installUrl}`),!1;for(let i of n)if(f(i.prerequisite)){e(`Installing ${r} via ${i.label}...`);try{_(i.binary,i.args,{stdio:"inherit",timeout:3e5,env:process.env});let s=I(t);if(s){let a=s===t.indexerBinary?"":` (using ${s})`;return e(`Successfully installed ${r} via ${i.label}${a}`),!0}e(`${i.label} command completed but ${r} was not found on PATH`)}catch(s){let a=s instanceof Error?s.message:String(s);e(`${i.label} install failed: ${a}`)}}return e(`Could not auto-install ${r}.`),t.installUrl&&e(`Install manually from: ${t.installUrl}`),!1}function St(t,e){for(let n of It(e))if(fe(t,{...e,DOTNET_ROOT:n}))return n;return null}function It(t){let e=[],n=t.DOTNET_ROOT;if(n&&H(n)&&e.push(n),de()==="darwin"&&f("brew"))try{let r=_("brew",["--prefix","dotnet@9"],{stdio:"pipe",env:t}).toString().trim(),i=ge(r,"libexec");H(i)&&!e.includes(i)&&e.push(i)}catch{}return e}function fe(t,e){try{return _(t,["--version"],{stdio:"pipe",env:e}),!0}catch{return!1}}async function Et(t){let{projectRoot:e,maxHeapMb:n=8192,onStatus:r=console.log,skipAutoInstall:i=!1}=t,s=t.outputScip??T(e,"index.scip"),a=t.outputDb??T(e,"index.db"),m=Date.now(),l=t.languages??P(e);if(l.length===0)throw new Error("No supported languages detected in this project. Looked for: tsconfig.json, Cargo.toml, go.mod, pyproject.toml, etc.");if(r(`Detected languages: ${l.join(", ")}`),!f("scip")){if(i)throw new Error(`The scip CLI is required but not found on PATH.
80
- Install from: https://github.com/sourcegraph/scip/releases`);if(r("scip CLI not found on PATH. Attempting auto-install..."),!w(r))throw new Error(`The scip CLI is required but could not be installed.
81
- Install manually from: https://github.com/sourcegraph/scip/releases`)}let u={...process.env,NODE_OPTIONS:`--max-old-space-size=${n}`},x=l.map((o,h)=>({language:o,scipPath:l.length>1?_t(s,o,h):s})),c=[],g=[];for(let{language:o,scipPath:h}of x){let d=E(o),b=R(d),Z=G(d,e);if(!Z&&!D(d)){if(i){let p=`${b} not found on PATH (auto-install disabled). ${d.installUrl??""}`.trim();r(`Skipping ${o}: ${p}`),g.push({language:o,reason:p});continue}if(r(`${b} not found. Attempting auto-install...`),!$(d,r)){let p=`${b} could not be auto-installed. ${d.installUrl?`Install manually from ${d.installUrl}`:`Install ${b} and put it on PATH.`}`;r(`Skipping ${o}: ${p}`),g.push({language:o,reason:p});continue}}let v=Z??I(d);if(!v){let p=`${b} was not found after installation checks.`;r(`Skipping ${o}: ${p}`),g.push({language:o,reason:p});continue}r(`Indexing ${o} with ${v}...`);let _e=z(d,u,v),{binary:Re,args:De}=d.indexArgs({projectRoot:e,outputPath:h,pnpmWorkspaces:t.pnpmWorkspaces,indexerBinary:v});try{ye(Re,De,{cwd:e,env:_e,stdio:"pipe",maxBuffer:50*1024*1024})}catch(p){let $e=p instanceof Error?p.message:String(p),ee=`${v} indexer failed: ${$e.split(`
82
- `)[0]}`;r(`Skipping ${o}: ${ee}`),g.push({language:o,reason:ee});continue}jt(d,e,h),c.push({language:o,scipPath:h})}if(c.length===0){let o=g.map(h=>` - ${h.language}: ${h.reason}`).join(`
76
+ `;function ge(e,t,r){let n=et(t,r);if(!n)return!1;try{return e.ignores(n)}catch{return!1}}function et(e,t){if(!t||t===".")return null;if(!ue(t)&&!t.startsWith(".."))return t.replaceAll("\\","/");let r=ue(t)?t:Qe(e,t),n=Ke(e,r).replaceAll("\\","/");return!n||n==="."||n.startsWith("..")?null:n}import{execFileSync as je}from"child_process";import{existsSync as _e,renameSync as Ne,rmSync as ln}from"fs";import{basename as cn,dirname as un,extname as gn,join as W}from"path";import{execFileSync as E}from"child_process";import{platform as L,arch as tt}from"os";var pe=L()==="win32",de="v0.7.0";function P(e){let t=pe?"where":"which";try{return E(t,[e],{stdio:"pipe"}),!0}catch{return!1}}function nt(){try{return E(pe?"where":"which",["scip"],{stdio:"pipe"}),!0}catch{return!1}}function rt(){try{return E("scip",["--version"],{stdio:"pipe"}).toString().trim()}catch{return null}}function it(){let e=L(),t=tt(),r,n,i;switch(e){case"darwin":r="darwin",i="tar.gz";break;case"linux":r="linux",i="tar.gz";break;case"win32":r="windows",i="zip";break;default:return null}switch(t){case"arm64":n="arm64";break;case"x64":n="amd64";break;default:return null}let s=`scip-${r}-${n}.${i}`;return{url:`https://github.com/sourcegraph/scip/releases/download/${de}/${s}`,filename:s}}function st(){let e=it();console.log("\nThe `scip` CLI is required but not found on PATH.\n"),L()==="darwin"?(console.log("Install via Homebrew:"),console.log(` brew install sourcegraph/scip/scip
77
+ `),console.log("Or download manually:")):console.log("Download from:"),console.log(e?` ${e.url}
78
+ `:` https://github.com/sourcegraph/scip/releases/tag/${de}
79
+ `),console.log("After installing, ensure `scip` is on your PATH and run `scip-query reindex`.")}function j(e){if(L()==="darwin"&&P("brew")){e("Installing scip CLI via Homebrew...");try{if(E("brew",["install","sourcegraph/scip/scip"],{stdio:"inherit",timeout:3e5,env:process.env}),P("scip"))return e("Successfully installed scip CLI via Homebrew"),!0}catch(t){let r=t instanceof Error?t.message:String(t);e(`Homebrew install failed: ${r}`)}}if(P("go")){e("Installing scip CLI via go install...");try{if(E("go",["install","github.com/sourcegraph/scip/cmd/scip@latest"],{stdio:"inherit",timeout:3e5,env:process.env}),P("scip"))return e("Successfully installed scip CLI via go install"),!0}catch(t){let r=t instanceof Error?t.message:String(t);e(`go install failed: ${r}`)}}return e("Could not auto-install scip CLI."),e("Install manually from: https://github.com/sourcegraph/scip/releases"),!1}import ot from"better-sqlite3";import{existsSync as at,readdirSync as lt,readFileSync as ct}from"fs";import{extname as z,join as me}from"path";function w(e){let t=new Set((e.extensions??ae).map(s=>s.toLowerCase()));if(t.size===0)return{scanned:0,inserted:0,existing:0};if(!at(e.dbPath))throw new Error(`SCIP SQLite database not found at ${e.dbPath}`);let r=C(e.projectRoot),n=ut(e.projectRoot,t).filter(s=>!r.isIgnored(s)),i=new ot(e.dbPath);try{let s=n.length===0?new Set:new Set(i.prepare(`SELECT relative_path FROM documents WHERE relative_path IN (${n.map(()=>"?").join(",")})`).all(...n).map(d=>d.relative_path)),a=i.prepare(`INSERT OR IGNORE INTO documents (language, relative_path, position_encoding, text)
80
+ VALUES (?, ?, NULL, ?)`),o=i.transaction(d=>{let g=0;for(let p of d){if(s.has(p))continue;let y=ct(me(e.projectRoot,p),"utf-8"),l=a.run(gt(p),p,y);g+=Number(l.changes)}return g})(n),u={scanned:n.length,inserted:o,existing:n.length-o};return e.onStatus?.(`Augmented SQLite documents with ${o} auxiliary source file${o===1?"":"s"} (${u.existing} already present).`),u}finally{i.close()}}function ut(e,t){let r=[],n=i=>{let s=i?me(e,i):e,a=[];try{a=lt(s,{withFileTypes:!0})}catch{return}for(let c of a){if(le.has(c.name))continue;let o=i?`${i}/${c.name}`:c.name;if(c.isDirectory()){n(o);continue}t.has(z(c.name).toLowerCase())&&r.push(o)}};return n(""),r.sort()}function gt(e){return z(e).toLowerCase()===".vue"?"vue":z(e).replace(/^\./,"").toLowerCase()||"source"}import{existsSync as pt,readdirSync as he}from"fs";import{extname as dt,join as ye}from"path";var mt=new Set([".git",".hg",".svn",".idea",".vscode","node_modules","vendor","dist","build","target","bin","obj",".dart_tool",".gradle",".next",".venv","venv","__pycache__"]),ft=[{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:"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 _(e){let t=[],r=ht(e),n=St(e);for(let i of ft){if(yt(e,i.files)){t.push(i.language);continue}if(xt(r,i.globs)){t.push(i.language);continue}vt(n,i.extensions)&&t.push(i.language)}return t.includes("typescript")&&fe(t,"javascript"),t.includes("cpp")&&!n.has(".c")&&fe(t,"c"),t}function ht(e){try{return he(e)}catch{return[]}}function yt(e,t){return t?.length?t.some(r=>pt(ye(e,r))):!1}function xt(e,t){return t?.length?e.some(r=>t.some(n=>bt(r,n))):!1}function bt(e,t){if(t==="*")return!0;if(!t.includes("*"))return e===t;let[r,n]=t.split("*");return e.startsWith(r??"")&&e.endsWith(n??"")}function St(e){let t=new Set,r=[e];for(;r.length>0;){let n=r.pop();if(!n)continue;let i;try{i=he(n,{withFileTypes:!0})}catch{continue}for(let s of i){if(s.name.startsWith(".")&&!s.name.endsWith("proj")&&!s.name.endsWith("sln")&&s.isDirectory())continue;let a=ye(n,s.name);if(s.isDirectory()){mt.has(s.name)||r.push(a);continue}let c=dt(s.name).toLowerCase();c&&t.add(c)}}return t}function vt(e,t){return t?.length?t.some(r=>e.has(r)):!1}function fe(e,t){let r=e.indexOf(t);r!==-1&&e.splice(r,1)}import{existsSync as xe,readdirSync as It}from"fs";import{join as J}from"path";var X={typescript:{language:"typescript",indexerBinary:"scip-typescript",checkCommand:"npx scip-typescript --version",indexArgs:({outputPath:e,pnpmWorkspaces:t})=>{let r=["scip-typescript","index","--infer-tsconfig","--output",e,"--no-progress-bar"];return t&&r.splice(2,0,"--pnpm-workspaces"),{binary:"npx",args:r}},markerFiles:["tsconfig.json"],installMethods:[{label:"npm",prerequisite:"npm",binary:"npm",args:["install","-g","@sourcegraph/scip-typescript"]}],installUrl:"https://github.com/sourcegraph/scip-typescript",bundledNpmPackage:"@sourcegraph/scip-typescript"},javascript:{language:"javascript",indexerBinary:"scip-typescript",checkCommand:"npx scip-typescript --version",indexArgs:({outputPath:e})=>({binary:"npx",args:["scip-typescript","index","--infer-tsconfig","--output",e,"--no-progress-bar"]}),markerFiles:["package.json"],installMethods:[{label:"npm",prerequisite:"npm",binary:"npm",args:["install","-g","@sourcegraph/scip-typescript"]}],installUrl:"https://github.com/sourcegraph/scip-typescript",bundledNpmPackage:"@sourcegraph/scip-typescript"},java:{language:"java",indexerBinary:"scip-java",checkCommand:"scip-java --version",indexArgs:({outputPath:e})=>({binary:"scip-java",args:["index","--output",e]}),markerFiles:["pom.xml","build.gradle"],installMethods:[],installUrl:"https://github.com/sourcegraph/scip-java/releases"},scala:{language:"scala",indexerBinary:"scip-java",checkCommand:"scip-java --version",indexArgs:({outputPath:e})=>({binary:"scip-java",args:["index","--output",e]}),markerFiles:["build.sbt"],installMethods:[],installUrl:"https://github.com/sourcegraph/scip-java/releases"},kotlin:{language:"kotlin",indexerBinary:"scip-java",checkCommand:"scip-java --version",indexArgs:({outputPath:e})=>({binary:"scip-java",args:["index","--output",e]}),markerFiles:["build.gradle.kts"],installMethods:[],installUrl:"https://github.com/sourcegraph/scip-java/releases"},rust:{language:"rust",indexerBinary:"rust-analyzer",checkCommand:"rust-analyzer --version",indexArgs:({outputPath:e})=>({binary:"rust-analyzer",args:["scip",".","--output",e]}),markerFiles:["Cargo.toml"],installMethods:[{label:"rustup",prerequisite:"rustup",binary:"rustup",args:["component","add","rust-analyzer"]}],installUrl:"https://github.com/rust-lang/rust-analyzer"},python:{language:"python",indexerBinary:"scip-python",binaryAliases:["scip-python-plus"],checkCommand:"npx scip-python --version",indexArgs:({outputPath:e})=>({binary:"npx",args:["scip-python","index","--output",e,"--project-name","project"]}),markerFiles:["pyproject.toml","setup.py"],installMethods:[{label:"npm",prerequisite:"npm",binary:"npm",args:["install","-g","scip-python-plus"]}],installUrl:"https://github.com/PlunderStruck/scip-python",bundledNpmPackage:"scip-python-plus"},ruby:{language:"ruby",indexerBinary:"scip-ruby",checkCommand:"scip-ruby --version",indexArgs:({indexerBinary:e})=>({binary:e,args:["--dir","."]}),defaultOutputPath:"index.scip",markerFiles:["Gemfile"],installMethods:[],installUrl:"https://github.com/sourcegraph/scip-ruby/releases"},go:{language:"go",indexerBinary:"scip-go",checkCommand:"scip-go --version",indexArgs:({outputPath:e})=>({binary:"scip-go",args:["--output",e]}),markerFiles:["go.mod"],installMethods:[{label:"go install",prerequisite:"go",binary:"go",args:["install","github.com/sourcegraph/scip-go@latest"]}],installUrl:"https://github.com/sourcegraph/scip-go"},cpp:{language:"cpp",indexerBinary:"scip-clang",checkCommand:"scip-clang --version",indexArgs:({outputPath:e})=>({binary:"scip-clang",args:["--compdb-path","compile_commands.json","--index-output-path",e]}),markerFiles:["CMakeLists.txt","Makefile"],installMethods:[],installUrl:"https://github.com/sourcegraph/scip-clang/releases"},c:{language:"c",indexerBinary:"scip-clang",checkCommand:"scip-clang --version",indexArgs:({outputPath:e})=>({binary:"scip-clang",args:["--compdb-path","compile_commands.json","--index-output-path",e]}),markerFiles:["CMakeLists.txt","Makefile"],installMethods:[],installUrl:"https://github.com/sourcegraph/scip-clang/releases"},csharp:{language:"csharp",indexerBinary:"scip-dotnet",checkCommand:"scip-dotnet --version",indexArgs:({projectRoot:e,outputPath:t})=>({binary:"scip-dotnet",args:["index",be(e,[".sln",".csproj"])??e,"--output",t,"--working-directory",e]}),markerFiles:["*.csproj","*.sln"],installMethods:[{label:"dotnet",prerequisite:"dotnet",binary:"dotnet",args:["tool","install","--global","scip-dotnet"]}],installUrl:"https://github.com/sourcegraph/scip-dotnet/releases"},vb:{language:"vb",indexerBinary:"scip-dotnet",checkCommand:"scip-dotnet --version",indexArgs:({projectRoot:e,outputPath:t})=>({binary:"scip-dotnet",args:["index",be(e,[".sln",".vbproj"])??e,"--output",t,"--working-directory",e]}),markerFiles:["*.vbproj","*.sln"],installMethods:[{label:"dotnet",prerequisite:"dotnet",binary:"dotnet",args:["tool","install","--global","scip-dotnet"]}],installUrl:"https://github.com/sourcegraph/scip-dotnet/releases"},dart:{language:"dart",indexerBinary:"scip-dart",checkCommand:"scip-dart --version",indexArgs:({indexerBinary:e,outputPath:t})=>({binary:e,args:["--output",t]}),markerFiles:["pubspec.yaml"],installMethods:[{label:"dart pub",prerequisite:"dart",binary:"dart",args:["pub","global","activate","scip_dart"]}],installUrl:"https://github.com/Workiva/scip-dart/releases"},php:{language:"php",indexerBinary:"scip-php",projectLocalBinaries:["vendor/davidrjenni/scip-php/bin/scip-php","vendor/bin/scip-php"],checkCommand:"scip-php --version",indexArgs:({projectRoot:e,indexerBinary:t})=>{let r=J(e,"vendor","bin","scip-php"),n=J(e,"vendor","davidrjenni","scip-php","bin","scip-php");return{binary:"php",args:["-d","error_reporting=E_ALL & ~E_DEPRECATED & ~E_USER_DEPRECATED",xe(n)?n:xe(r)?r:t]}},defaultOutputPath:"index.scip",markerFiles:["composer.json"],installMethods:[],installUrl:"https://github.com/davidrjenni/scip-php/releases"}};function N(e){return X[e]}function be(e,t){let r;try{r=It(e)}catch{return null}for(let n of r)if(t.some(i=>n.endsWith(i)))return J(e,n);return null}import{readFileSync as wt,writeFileSync as kt}from"fs";import{create as K}from"@bufbuild/protobuf";import{deserializeSCIP as Ct,serializeSCIP as Et,DocumentSchema as Rt,IndexSchema as Pt,SymbolInformationSchema as Lt}from"@c4312/scip";function Q(e){if(e.length===0)throw new Error("Cannot merge zero SCIP indexes");if(e.length===1)return e[0];let t=jt(e),r=_t(e.flatMap(i=>i.documents??[])),n=Se(e.flatMap(i=>i.externalSymbols??[]));return K(Pt,{metadata:t,documents:r,externalSymbols:n})}function D(e,t){if(e.length===0)throw new Error("Cannot merge zero SCIP files");let r=e.map(i=>Ct(wt(i))),n=Q(r);return kt(t,Buffer.from(Et(n))),{documentCount:n.documents.length,externalSymbolCount:n.externalSymbols.length,inputCount:e.length}}function jt(e){let t=e[0]?.metadata;if(!t)return;let r=t.projectRoot;for(let n of e.slice(1)){let i=n.metadata?.projectRoot;if(r&&i&&i!==r)throw new Error(`Cannot merge SCIP indexes with different project roots: ${r} vs ${i}`)}return t}function _t(e){let t=new Map;for(let r of e){let n=t.get(r.relativePath);if(!n){t.set(r.relativePath,r);continue}t.set(r.relativePath,K(Rt,{language:n.language||r.language,relativePath:n.relativePath||r.relativePath,occurrences:[...n.occurrences,...r.occurrences],symbols:Se([...n.symbols,...r.symbols]),text:Dt(n.text,r.text),positionEncoding:n.positionEncoding||r.positionEncoding}))}return[...t.values()]}function Se(e){let t=new Map;for(let r of e){let n=t.get(r.symbol);if(!n){t.set(r.symbol,r);continue}t.set(r.symbol,K(Lt,{symbol:n.symbol,documentation:Tt([...n.documentation,...r.documentation]),relationships:Nt([...n.relationships,...r.relationships]),kind:n.kind||r.kind,displayName:n.displayName||r.displayName,enclosingSymbol:n.enclosingSymbol||r.enclosingSymbol,signatureDocumentation:n.signatureDocumentation??r.signatureDocumentation}))}return[...t.values()]}function Nt(e){let t=new Set,r=[];for(let n of e){let i=[n.symbol,n.isReference?"1":"0",n.isImplementation?"1":"0",n.isTypeDefinition?"1":"0",n.isDefinition?"1":"0"].join("|");t.has(i)||(t.add(i),r.push(n))}return r}function Dt(e,t){return e?t?e.length>=t.length?e:t:e:t}function Tt(e){return[...new Set(e)]}import{execFileSync as T}from"child_process";import{existsSync as Y}from"fs";import{createRequire as Ft}from"module";import{platform as ve}from"os";import{join as Ie}from"path";var Ot=Ft(import.meta.url),At=ve()==="win32";function v(e){let t=At?"where":"which";try{return T(t,[e],{stdio:"pipe"}),!0}catch{return!1}}function we(e){return[e.indexerBinary,...e.binaryAliases??[]]}function F(e){let t=we(e);return t.length===1?t[0]:t.join(" or ")}function R(e){for(let t of we(e))if(v(t))return t;return ke(e)?e.indexerBinary:null}function O(e){return R(e)!==null||ke(e)}function ke(e){if(!e.bundledNpmPackage)return!1;try{return Ot.resolve(`${e.bundledNpmPackage}/package.json`),!0}catch{return!1}}function Z(e,t){for(let r of e.projectLocalBinaries??[]){let n=Ie(t,r);if(Y(n))return n}return null}function ee(e,t=process.env,r=e.indexerBinary){if(e.indexerBinary!=="scip-dotnet"||Ce(r,t))return t;let n=$t(r,t);return n?{...t,DOTNET_ROOT:n}:t}function A(e,t){let r=e.installMethods,n=F(e);if(!r?.length)return t(`No auto-install method available for ${n}.`),e.installUrl&&t(`Install manually from: ${e.installUrl}`),!1;for(let i of r)if(v(i.prerequisite)){t(`Installing ${n} via ${i.label}...`);try{T(i.binary,i.args,{stdio:"inherit",timeout:3e5,env:process.env});let s=R(e);if(s){let a=s===e.indexerBinary?"":` (using ${s})`;return t(`Successfully installed ${n} via ${i.label}${a}`),!0}t(`${i.label} command completed but ${n} was not found on PATH`)}catch(s){let a=s instanceof Error?s.message:String(s);t(`${i.label} install failed: ${a}`)}}return t(`Could not auto-install ${n}.`),e.installUrl&&t(`Install manually from: ${e.installUrl}`),!1}function $t(e,t){for(let r of Mt(t))if(Ce(e,{...t,DOTNET_ROOT:r}))return r;return null}function Mt(e){let t=[],r=e.DOTNET_ROOT;if(r&&Y(r)&&t.push(r),ve()==="darwin"&&v("brew"))try{let n=T("brew",["--prefix","dotnet@9"],{stdio:"pipe",env:e}).toString().trim(),i=Ie(n,"libexec");Y(i)&&!t.includes(i)&&t.push(i)}catch{}return t}function Ce(e,t){try{return T(e,["--version"],{stdio:"pipe",env:t}),!0}catch{return!1}}import Wt from"better-sqlite3";import{createRequire as Bt}from"module";import{existsSync as Ee,readFileSync as $}from"fs";import{dirname as Vt,extname as Ut,join as Re,relative as Ht,resolve as Gt}from"path";import{pathToFileURL as qt}from"url";function Pe(e){w({projectRoot:e.projectRoot,dbPath:e.dbPath});let t=Gt(e.projectRoot,e.tsconfig);if(!Ee(t))throw new Error(`Vue tsconfig not found at ${t}`);let r=Jt(e.projectRoot,t),n=r.fileNames.filter(s=>s.endsWith(".vue")),i=new Wt(e.dbPath);try{zt(i);let s=Xt(i,e.projectRoot),a=Kt(i,e.projectRoot,n),c=[],o=0;for(let d of n){let g=r.language.scripts.get(d),p=g?.generated?.languagePlugin.typescript?.getServiceScript(g.generated.root)?.code;if(!g||!p){o++;continue}let y=r.language.maps.get(p,g),l=$(d,"utf-8");for(let m of Zt(l)){let h=en(y,m.start);if(h===null)continue;let S=(r.languageService.getDefinitionAtPosition(d,h+1)??[]).find(V=>!nn(e.projectRoot,V.fileName));if(!S){o++;continue}let b=Qt(S,s,a,r,e.projectRoot);if(b===null){o++;continue}let k=Le(l,m.start);c.push({sourceFile:M(e.projectRoot,d),sourceLine:k.line,sourceStartChar:k.character,sourceEndChar:k.character+m.text.length,symbolId:b})}}let u=Yt(i,c);return e.onStatus?.(`Resolved ${c.length} Vue references with Volar; inserted ${u} mentions.`),{vueFiles:n.length,resolvedReferences:c.length,insertedMentions:u,skippedReferences:o,syntheticSymbols:a.syntheticSymbols}}finally{i.close()}}function zt(e){e.transaction(()=>{e.prepare(`
81
+ DELETE FROM mentions
82
+ WHERE chunk_id IN (
83
+ SELECT c.id
84
+ FROM chunks c
85
+ JOIN documents d ON d.id = c.document_id
86
+ WHERE d.language = 'vue' OR d.relative_path LIKE '%.vue'
87
+ )
88
+ `).run(),e.prepare(`
89
+ DELETE FROM chunks
90
+ WHERE document_id IN (
91
+ SELECT id
92
+ FROM documents
93
+ WHERE language = 'vue' OR relative_path LIKE '%.vue'
94
+ )
95
+ `).run()})()}function Jt(e,t){let r=Bt(qt(Re(e,"package.json")).href),n=r("typescript"),i=r("@vue/language-core"),s=r("@volar/typescript"),a=n.readConfigFile(t,n.sys.readFile);if(a.error||!a.config)throw new Error(`Failed to read ${t}`);let o=i.createParsedCommandLine(n,n.sys,t).vueOptions;typeof i.createGlobalTypesWriter=="function"&&(o.globalTypesPath=i.createGlobalTypesWriter(o,n.sys.writeFile));let u=i.getAllExtensions(o).map(f=>({extension:f.slice(1),isMixedContent:!0,scriptKind:n.ScriptKind.Deferred})),d=Vt(t),g=n.parseJsonConfigFileContent(a.config,n.sys,d,void 0,t,void 0,u),p=i.createVueLanguagePlugin(n,g.options,o,f=>f),y;y=i.createLanguage([p],new Map,f=>{if(!Ee(f))return;let S=$(f,"utf-8");y.scripts.set(f,n.ScriptSnapshot.fromString(S),p.getLanguageId(f)??rn(f))});let l={getCurrentDirectory:()=>d,getCompilationSettings:()=>g.options,getScriptFileNames:()=>g.fileNames,getProjectReferences:()=>g.projectReferences,getProjectVersion:()=>"0"},{languageServiceHost:m}=s.createLanguageServiceHost(n,n.sys,y,f=>f,l),h=n.createLanguageService(m);return{ts:n,language:y,languageService:h,fileNames:g.fileNames,configDir:d}}function Xt(e,t){let r=e.prepare(`
96
+ SELECT der.symbol_id AS symbolId
97
+ FROM defn_enclosing_ranges der
98
+ JOIN documents d ON d.id = der.document_id
99
+ WHERE d.relative_path = ?
100
+ AND der.start_line <= ?
101
+ AND der.end_line >= ?
102
+ ORDER BY (der.end_line - der.start_line) ASC
103
+ LIMIT 1
104
+ `),n=e.prepare(`
105
+ SELECT der.symbol_id AS symbolId
106
+ FROM defn_enclosing_ranges der
107
+ JOIN documents d ON d.id = der.document_id
108
+ WHERE d.relative_path = ?
109
+ AND der.start_line BETWEEN ? AND ?
110
+ ORDER BY ABS(der.start_line - ?) ASC
111
+ LIMIT 1
112
+ `);return i=>{let s=M(t,i.fileName),a=sn(i.fileName);if(!a)return null;let c=Le(a,i.textSpan.start),o=r.get(s,c.line,c.line);return o?o.symbolId:n.get(s,Math.max(0,c.line-2),c.line+2,c.line)?.symbolId??null}}function Kt(e,t,r){let n=on(t),i=e.prepare("SELECT id FROM global_symbols WHERE symbol = ?"),s=e.prepare(`
113
+ INSERT OR IGNORE INTO global_symbols (symbol, display_name, kind, documentation)
114
+ VALUES (?, ?, ?, ?)
115
+ `),a=e.prepare("SELECT id FROM documents WHERE relative_path = ?"),c=e.prepare(`
116
+ INSERT INTO chunks (document_id, chunk_index, start_line, end_line, occurrences)
117
+ VALUES (?, ?, ?, ?, X'00')
118
+ `),o=e.prepare(`
119
+ INSERT OR IGNORE INTO mentions (chunk_id, symbol_id, role)
120
+ VALUES (?, ?, 1)
121
+ `),u=0,d=new Map;return e.transaction(()=>{for(let p of r){let y=M(t,p),l=an(n.name,n.version,y);s.run(l,"default",7,`Vue component|${y}`);let m=i.get(l);if(!m)continue;u++,d.set(p,m.id);let h=a.get(y);if(!h)continue;let f=c.run(h.id,-1,0,0);o.run(Number(f.lastInsertRowid),m.id)}})(),{get(p){return d.get(p)??null},syntheticSymbols:u}}function Qt(e,t,r,n,i){if(e.fileName.endsWith(".vue")){let s=n.language.scripts.get(e.fileName),a=s?.generated?.languagePlugin.typescript?.getServiceScript(s.generated.root)?.code;if(s&&a){let c=n.language.maps.get(a,s);if(tn(c,e.textSpan.start)!==null)return r.get(e.fileName)}return e.fileName.startsWith(i)?r.get(e.fileName):null}return t(e)}function Yt(e,t){let r=e.prepare("SELECT id FROM documents WHERE relative_path = ?"),n=e.prepare(`
122
+ INSERT INTO chunks (document_id, chunk_index, start_line, end_line, occurrences)
123
+ VALUES (?, ?, ?, ?, X'00')
124
+ `),i=e.prepare(`
125
+ INSERT OR IGNORE INTO mentions (chunk_id, symbol_id, role)
126
+ VALUES (?, ?, 0)
127
+ `),s=new Set;return e.transaction(()=>{let c=0,o=0;for(let u of t){let d=`${u.sourceFile}:${u.sourceLine}:${u.sourceStartChar}:${u.symbolId}`;if(s.has(d))continue;s.add(d);let g=r.get(u.sourceFile);if(!g)continue;let p=n.run(g.id,o++,u.sourceLine,u.sourceLine),y=i.run(Number(p.lastInsertRowid),u.symbolId);c+=Number(y.changes)}return c})()}function*Zt(e){let t=/\b[A-Za-z_$][A-Za-z0-9_$]*\b/g,r=new Set(["script","setup","template","style","lang","scoped","true","false","null","undefined","const","let","var","import","from","export","return","if","else","for","while","function","class","type","interface","as","await","async"]),n;for(;n=t.exec(e);){let i=n[0];r.has(i)||(yield{text:i,start:n.index,end:n.index+i.length})}}function en(e,t){for(let[r]of e.toGeneratedLocation(t,n=>!!n.navigation))return r;return null}function tn(e,t){let r=e;for(let[n]of r.toSourceLocation(t,i=>!!i.navigation))return n;return null}function Le(e,t){let r=0,n=0;for(let i=0;i<t;i++)e.charCodeAt(i)===10&&(r++,n=i+1);return{line:r,character:t-n}}function nn(e,t){return M(e,t).startsWith("node_modules/")}function M(e,t){return Ht(e,t).replaceAll("\\","/")}function rn(e){switch(Ut(e)){case".vue":return"vue";case".tsx":return"typescriptreact";case".ts":case".mts":case".cts":return"typescript";case".jsx":return"javascriptreact";case".js":case".mjs":case".cjs":return"javascript";case".json":return"json";default:return"typescript"}}function sn(e){try{return $(e,"utf-8")}catch{return null}}function on(e){try{let t=JSON.parse($(Re(e,"package.json"),"utf-8"));return{name:t.name??"workspace",version:t.version??"0.0.0"}}catch{return{name:"workspace",version:"0.0.0"}}}function an(e,t,r){let n=r.split("/").map(i=>`\`${i.replaceAll("`","")}\``).join("/");return`scip-vue npm ${e} ${t} ${n}/default.`}async function pn(e){let{projectRoot:t,maxHeapMb:r=8192,onStatus:n=console.log,skipAutoInstall:i=!1}=e,s=e.outputScip??W(t,"index.scip"),a=e.outputDb??W(t,"index.db"),c=Date.now(),o=e.languages??_(t);if(o.length===0)throw new Error("No supported languages detected in this project. Looked for: tsconfig.json, Cargo.toml, go.mod, pyproject.toml, etc.");if(n(`Detected languages: ${o.join(", ")}`),!v("scip")){if(i)throw new Error(`The scip CLI is required but not found on PATH.
128
+ Install from: https://github.com/sourcegraph/scip/releases`);if(n("scip CLI not found on PATH. Attempting auto-install..."),!j(n))throw new Error(`The scip CLI is required but could not be installed.
129
+ Install manually from: https://github.com/sourcegraph/scip/releases`)}let u={...process.env,NODE_OPTIONS:`--max-old-space-size=${r}`},d=o.map((l,m)=>({language:l,scipPath:o.length>1?mn(s,l,m):s})),g=[],p=[];for(let{language:l,scipPath:m}of d){let h=N(l),f=F(h),S=Z(h,t);if(!S&&!O(h)){if(i){let x=`${f} not found on PATH (auto-install disabled). ${h.installUrl??""}`.trim();n(`Skipping ${l}: ${x}`),p.push({language:l,reason:x});continue}if(n(`${f} not found. Attempting auto-install...`),!A(h,n)){let x=`${f} could not be auto-installed. ${h.installUrl?`Install manually from ${h.installUrl}`:`Install ${f} and put it on PATH.`}`;n(`Skipping ${l}: ${x}`),p.push({language:l,reason:x});continue}}let b=S??R(h);if(!b){let x=`${f} was not found after installation checks.`;n(`Skipping ${l}: ${x}`),p.push({language:l,reason:x});continue}n(`Indexing ${l} with ${b}...`);let k=ee(h,u,b),{binary:V,args:Ve}=h.indexArgs({projectRoot:t,outputPath:m,pnpmWorkspaces:e.pnpmWorkspaces,indexerBinary:b});try{je(V,Ve,{cwd:t,env:k,stdio:"pipe",maxBuffer:50*1024*1024})}catch(x){let Ue=x instanceof Error?x.message:String(x),oe=`${b} indexer failed: ${Ue.split(`
130
+ `)[0]}`;n(`Skipping ${l}: ${oe}`),p.push({language:l,reason:oe});continue}dn(h,t,m),g.push({language:l,scipPath:m})}if(g.length===0){let l=p.map(m=>` - ${m.language}: ${m.reason}`).join(`
83
131
  `);throw new Error(`No language indexers ran successfully. Install at least one indexer for the languages in this project.
84
- `+o)}if(g.length>0&&r(`Indexed ${c.length} of ${l.length} languages; skipped ${g.map(o=>o.language).join(", ")}.`),l.length>1&&(c.length>1?(r(`Merging ${c.length} language indexes...`),j(c.map(o=>o.scipPath),s)):c[0].scipPath!==s&&be(c[0].scipPath,s)),r("Converting to SQLite..."),!xe(s))throw new Error(`SCIP index not found at ${s} after indexing`);try{ye("scip",["expt-convert","--output",a,s],{env:u,stdio:"pipe",maxBuffer:50*1024*1024})}catch(o){let h=o instanceof Error?o.message:String(o);throw new Error(`Failed to convert SCIP index to SQLite: ${h}`,{cause:o})}finally{for(let{scipPath:o}of x)o!==s&&Ct(o,{force:!0})}let Y=Date.now()-m;return r(`Done in ${(Y/1e3).toFixed(1)}s`),{languages:c.map(o=>o.language),indexPath:s,dbPath:a,durationMs:Y,skipped:g}}function jt(t,e,n){if(!t.defaultOutputPath)return;let r=T(e,t.defaultOutputPath);n!==r&&xe(r)&&be(r,n)}function _t(t,e,n){let r=Pt(t)||".scip",i=kt(t,r);return T(wt(t),`${i}.${n+1}.${e}${r}`)}import{readFileSync as Rt,writeFileSync as Dt,existsSync as Se,mkdirSync as $t}from"fs";import{join as y,resolve as ve}from"path";import{createHash as Tt}from"crypto";import{homedir as Lt}from"os";var Ie=".scipquery.json",Ft={enabled:!1,debounceMs:3e4,cooldownMs:6e4,ignore:[]};function Nt(t){let e=y(t,Ie);if(!Se(e))return{};try{let n=Rt(e,"utf-8");return JSON.parse(n)}catch{return{}}}function Ce(t){return{...Ft,...t.watch}}function ke(t,e){let n=process.env.SCIP_QUERY_CACHE_DIR;if(n)return J(n);if(e?.dbPath)return J(ve(t,e.dbPath));let i=process.env.XDG_CACHE_HOME||y(Lt(),".cache"),s=Tt("sha256").update(ve(t)).digest("hex").slice(0,12),a=y(i,"scip-query","projects",s);return J(a)}function X(t,e){let n=ke(t,e);return{cacheDir:n,dbPath:y(n,"index.db"),indexPath:y(n,"index.scip"),metaPath:y(n,"meta.json")}}function At(t,e){let n=y(t,Ie);return Se(n)||Dt(n,JSON.stringify({languages:e,watch:{enabled:!1,debounceMs:3e4,cooldownMs:6e4}},null,2)+`
85
- `),n}function J(t){return $t(t,{recursive:!0}),t}import{watch as Ot}from"fs";import{existsSync as we,renameSync as Pe}from"fs";import{join as Bt,relative as Mt}from"path";import{fork as Wt}from"child_process";import Ut from"ignore";var K=class{projectRoot;watchConfig;indexPaths;languages;pnpmWorkspaces;onStatus;onReindexComplete;onError;status={state:"idle"};debounceTimer=null;cooldownTimer=null;dirty=!1;changedFiles=0;reindexInFlight=!1;lastReindexEnd=0;fsWatchers=[];gitignoreFilter;extraIgnore;stopped=!1;constructor(e){this.projectRoot=e.projectRoot,this.watchConfig=Ce(e.config),this.indexPaths=X(e.projectRoot,e.config),this.languages=e.languages,this.pnpmWorkspaces=e.config.indexer?.typescript?.pnpmWorkspaces??!1,this.onStatus=e.onStatus??(()=>{}),this.onReindexComplete=e.onReindexComplete??(()=>{}),this.onError=e.onError??(n=>console.error(n.message)),this.gitignoreFilter=B(e.projectRoot),this.extraIgnore=Ut(),this.watchConfig.ignore.length>0&&this.extraIgnore.add(this.watchConfig.ignore)}start(){this.stopped=!1,this.setStatus({state:"idle"});try{let e=Ot(this.projectRoot,{recursive:!0},(n,r)=>{r&&!this.stopped&&this.handleFileChange(r)});this.fsWatchers.push(e)}catch{this.onError(new Error("Failed to start file watcher. On Linux, you may need to increase inotify limits: sysctl -w fs.inotify.max_user_watches=524288"))}}stop(){this.stopped=!0;for(let e of this.fsWatchers)e.close();this.fsWatchers=[],this.debounceTimer&&clearTimeout(this.debounceTimer),this.cooldownTimer&&clearTimeout(this.cooldownTimer),this.setStatus({state:"idle"})}handleFileChange(e){let n=Mt(this.projectRoot,Bt(this.projectRoot,e));if(this.gitignoreFilter.isIgnored(n)||this.extraIgnore.ignores(n)||e.endsWith("index.db")||e.endsWith("index.scip")||e.endsWith("index.db.tmp")||e.endsWith(".scipquery.json"))return;if(this.changedFiles++,this.reindexInFlight){this.dirty=!0,this.setStatus({state:"indexing",startedAt:this.status.startedAt});return}if(this.status.state==="cooldown"){this.dirty=!0,this.setStatus({state:"cooldown",until:this.status.until,dirty:!0});return}this.debounceTimer&&clearTimeout(this.debounceTimer);let r=Date.now()+this.watchConfig.debounceMs;this.setStatus({state:"waiting",changedFiles:this.changedFiles,reindexAt:r}),this.debounceTimer=setTimeout(()=>{this.debounceTimer=null,this.triggerReindex()},this.watchConfig.debounceMs)}triggerReindex(){if(this.reindexInFlight||this.stopped)return;let e=Date.now()-this.lastReindexEnd;if(this.lastReindexEnd>0&&e<this.watchConfig.cooldownMs){let r=this.watchConfig.cooldownMs-e;this.dirty=!0;let i=Date.now()+r;this.setStatus({state:"cooldown",until:i,dirty:!0}),this.cooldownTimer=setTimeout(()=>{this.cooldownTimer=null,this.dirty&&!this.stopped&&(this.dirty=!1,this.triggerReindex())},r);return}this.reindexInFlight=!0,this.dirty=!1,this.changedFiles=0;let n=Date.now();this.setStatus({state:"indexing",startedAt:n}),this.runReindex().then(r=>{if(this.reindexInFlight=!1,this.lastReindexEnd=Date.now(),this.onReindexComplete(r),this.dirty&&!this.stopped){let i=Date.now()+this.watchConfig.cooldownMs;this.setStatus({state:"cooldown",until:i,dirty:!0}),this.cooldownTimer=setTimeout(()=>{this.cooldownTimer=null,this.dirty&&!this.stopped?(this.dirty=!1,this.triggerReindex()):this.setStatus({state:"idle"})},this.watchConfig.cooldownMs)}else this.setStatus({state:"idle"})}).catch(r=>{this.reindexInFlight=!1,this.lastReindexEnd=Date.now(),this.onError(r instanceof Error?r:new Error(String(r))),this.setStatus({state:"idle"})})}runReindex(){return new Promise((e,n)=>{let r=Date.now(),i=this.indexPaths.dbPath+".tmp",s=qt(this.indexPaths.indexPath),a=Wt(new URL("./reindex-worker.js",import.meta.url).pathname,[],{env:{...process.env,SCIP_REINDEX_PROJECT_ROOT:this.projectRoot,SCIP_REINDEX_OUTPUT_SCIP:s,SCIP_REINDEX_OUTPUT_DB:i,SCIP_REINDEX_LANGUAGES:this.languages?.join(",")??"",SCIP_REINDEX_PNPM_WORKSPACES:this.pnpmWorkspaces?"1":""},stdio:"pipe"});a.on("exit",m=>{if(m===0)try{we(i)&&Pe(i,this.indexPaths.dbPath),we(s)&&Pe(s,this.indexPaths.indexPath),e(Date.now()-r)}catch(l){n(new Error(`Atomic swap failed: ${l}`))}else n(new Error(`Reindex worker exited with code ${m}`))}),a.on("error",n)})}setStatus(e){this.status=e,this.onStatus(e)}};function qt(t){return t.endsWith(".scip")?t.slice(0,-5)+".tmp.scip":t+".tmp.scip"}import{existsSync as Q,mkdirSync as Ht,symlinkSync as Gt,readlinkSync as zt,unlinkSync as Jt}from"fs";import{join as L,dirname as Ee,resolve as V}from"path";import{homedir as je,platform as Xt}from"os";import{fileURLToPath as Kt}from"url";var Qt=Xt()==="win32",Vt=["concrete-plan","scip-explore","scip-debloat","scip-verify","scip-language-playbook"];function Yt(t={}){let e=t.quiet?()=>{}:console.log,n=Kt(import.meta.url),r=V(Ee(n),"..","skills"),i=[L(je(),".claude","skills"),L(je(),".codex","skills")],s={installed:[],skipped:[],alreadyLinked:[]};for(let a of i){let m=Ee(a);if(!Q(m))continue;Ht(a,{recursive:!0});let l=a.includes(".codex")?"Codex":"Claude";for(let u of Vt){let x=L(r,u),c=L(a,u);if(!Q(x)){s.skipped.push(`${l}/${u}`);continue}if(Q(c)){try{let g=zt(c);if(V(g)===V(x)){s.alreadyLinked.push(`${l}/${u}`),e(` ok: ${u} \u2192 ${l} (already linked)`);continue}}catch{s.skipped.push(`${l}/${u}`),e(` skip: ${u} \u2192 ${l} (exists, not a symlink)`);continue}Jt(c)}Gt(x,c,Qt?"junction":"dir"),s.installed.push(`${l}/${u}`),e(` done: ${u} \u2192 ${l}`)}}return s}export{W as INDEXER_CONFIGS,F as ScipDatabase,K as Watcher,Nn as affected,kn as bottlenecks,Pn as byKind,Rn as callGraph,An as changeSurface,zn as code,Jn as complexity,qn as complexityHotspots,Gn as convergence,Sn as coupling,B as createGitignoreFilter,Cn as cycles,Xn as dataflow,un as dead,jn as deepChains,on as deps,P as detectLanguages,On as diffImpact,Bn as drift,Fn as extractCandidates,yn as fanIn,xn as fanOut,en as files,E as getIndexerConfig,ze as getScipVersion,Hn as health,_n as hierarchy,pn as hotspots,gn as importedBy,dn as imports,At as initProjectConfig,Yt as installSkills,f as isBinaryAvailable,D as isIndexerInstalled,Ge as isScipInstalled,wn as isolated,En as kindCounts,Fe as leafName,Nt as loadProjectConfig,fn as members,j as mergeScipFiles,q as mergeScipIndexes,nn as methods,mn as outline,Te as parseSymbol,Wn as passthroughCandidates,Xe as printScipInstallInstructions,an as rdeps,Qn as redundantReexports,rn as refs,Et as reindex,ke as resolveCacheDir,X as resolveIndexPaths,Le as shortenSymbol,Dn as similar,$n as similarAll,Ln as similarChains,Tn as similarFiles,Vn as similarSignatures,Kn as slice,Un as staleAbstractions,Zt as stats,cn as surface,tn as symbols,ln as system,In as topCoupling,bn as topFanIn,vn as topFanOut,sn as trace,$ as tryInstallIndexer,w as tryInstallScipCli,hn as unusedImports,Mn as wrapperCandidates};
132
+ `+l)}if(p.length>0&&n(`Indexed ${g.length} of ${o.length} languages; skipped ${p.map(l=>l.language).join(", ")}.`),o.length>1&&(g.length>1?(n(`Merging ${g.length} language indexes...`),D(g.map(l=>l.scipPath),s)):g[0].scipPath!==s&&Ne(g[0].scipPath,s)),n("Converting to SQLite..."),!_e(s))throw new Error(`SCIP index not found at ${s} after indexing`);try{je("scip",["expt-convert","--output",a,s],{env:u,stdio:"pipe",maxBuffer:50*1024*1024})}catch(l){let m=l instanceof Error?l.message:String(l);throw new Error(`Failed to convert SCIP index to SQLite: ${m}`,{cause:l})}finally{for(let{scipPath:l}of d)l!==s&&ln(l,{force:!0})}w({projectRoot:t,dbPath:a,onStatus:n});let y=Date.now()-c;return n(`Done in ${(y/1e3).toFixed(1)}s`),{languages:g.map(l=>l.language),indexPath:s,dbPath:a,durationMs:y,skipped:p}}function dn(e,t,r){if(!e.defaultOutputPath)return;let n=W(t,e.defaultOutputPath);r!==n&&_e(n)&&Ne(n,r)}function mn(e,t,r){let n=gn(e)||".scip",i=cn(e,n);return W(un(e),`${i}.${r+1}.${t}${n}`)}import{readFileSync as fn,writeFileSync as hn,existsSync as Te,mkdirSync as yn}from"fs";import{join as I,resolve as De}from"path";import{createHash as xn}from"crypto";import{homedir as bn}from"os";var Fe=".scipquery.json",Sn={enabled:!1,debounceMs:3e4,cooldownMs:6e4,ignore:[]};function vn(e){let t=I(e,Fe);if(!Te(t))return{};try{let r=fn(t,"utf-8");return JSON.parse(r)}catch{return{}}}function Oe(e){return{...Sn,...e.watch}}function Ae(e,t){let r=process.env.SCIP_QUERY_CACHE_DIR;if(r)return te(r);if(t?.dbPath)return te(De(e,t.dbPath));let i=process.env.XDG_CACHE_HOME||I(bn(),".cache"),s=xn("sha256").update(De(e)).digest("hex").slice(0,12),a=I(i,"scip-query","projects",s);return te(a)}function ne(e,t){let r=Ae(e,t);return{cacheDir:r,dbPath:I(r,"index.db"),indexPath:I(r,"index.scip"),metaPath:I(r,"meta.json")}}function In(e,t){let r=I(e,Fe);return Te(r)||hn(r,JSON.stringify({languages:t,watch:{enabled:!1,debounceMs:3e4,cooldownMs:6e4}},null,2)+`
133
+ `),r}function te(e){return yn(e,{recursive:!0}),e}import{watch as wn}from"fs";import{existsSync as $e,renameSync as Me}from"fs";import{join as kn,relative as Cn}from"path";import{fork as En}from"child_process";import Rn from"ignore";var re=class{projectRoot;watchConfig;indexPaths;languages;pnpmWorkspaces;onStatus;onReindexComplete;onError;status={state:"idle"};debounceTimer=null;cooldownTimer=null;dirty=!1;changedFiles=0;reindexInFlight=!1;lastReindexEnd=0;fsWatchers=[];gitignoreFilter;extraIgnore;stopped=!1;constructor(t){this.projectRoot=t.projectRoot,this.watchConfig=Oe(t.config),this.indexPaths=ne(t.projectRoot,t.config),this.languages=t.languages,this.pnpmWorkspaces=t.config.indexer?.typescript?.pnpmWorkspaces??!1,this.onStatus=t.onStatus??(()=>{}),this.onReindexComplete=t.onReindexComplete??(()=>{}),this.onError=t.onError??(r=>console.error(r.message)),this.gitignoreFilter=C(t.projectRoot),this.extraIgnore=Rn(),this.watchConfig.ignore.length>0&&this.extraIgnore.add(this.watchConfig.ignore)}start(){this.stopped=!1,this.setStatus({state:"idle"});try{let t=wn(this.projectRoot,{recursive:!0},(r,n)=>{n&&!this.stopped&&this.handleFileChange(n)});this.fsWatchers.push(t)}catch{this.onError(new Error("Failed to start file watcher. On Linux, you may need to increase inotify limits: sysctl -w fs.inotify.max_user_watches=524288"))}}stop(){this.stopped=!0;for(let t of this.fsWatchers)t.close();this.fsWatchers=[],this.debounceTimer&&clearTimeout(this.debounceTimer),this.cooldownTimer&&clearTimeout(this.cooldownTimer),this.setStatus({state:"idle"})}handleFileChange(t){let r=Cn(this.projectRoot,kn(this.projectRoot,t));if(this.gitignoreFilter.isIgnored(r)||this.extraIgnore.ignores(r)||t.endsWith("index.db")||t.endsWith("index.scip")||t.endsWith("index.db.tmp")||t.endsWith(".scipquery.json"))return;if(this.changedFiles++,this.reindexInFlight){this.dirty=!0,this.setStatus({state:"indexing",startedAt:this.status.startedAt});return}if(this.status.state==="cooldown"){this.dirty=!0,this.setStatus({state:"cooldown",until:this.status.until,dirty:!0});return}this.debounceTimer&&clearTimeout(this.debounceTimer);let n=Date.now()+this.watchConfig.debounceMs;this.setStatus({state:"waiting",changedFiles:this.changedFiles,reindexAt:n}),this.debounceTimer=setTimeout(()=>{this.debounceTimer=null,this.triggerReindex()},this.watchConfig.debounceMs)}triggerReindex(){if(this.reindexInFlight||this.stopped)return;let t=Date.now()-this.lastReindexEnd;if(this.lastReindexEnd>0&&t<this.watchConfig.cooldownMs){let n=this.watchConfig.cooldownMs-t;this.dirty=!0;let i=Date.now()+n;this.setStatus({state:"cooldown",until:i,dirty:!0}),this.cooldownTimer=setTimeout(()=>{this.cooldownTimer=null,this.dirty&&!this.stopped&&(this.dirty=!1,this.triggerReindex())},n);return}this.reindexInFlight=!0,this.dirty=!1,this.changedFiles=0;let r=Date.now();this.setStatus({state:"indexing",startedAt:r}),this.runReindex().then(n=>{if(this.reindexInFlight=!1,this.lastReindexEnd=Date.now(),this.onReindexComplete(n),this.dirty&&!this.stopped){let i=Date.now()+this.watchConfig.cooldownMs;this.setStatus({state:"cooldown",until:i,dirty:!0}),this.cooldownTimer=setTimeout(()=>{this.cooldownTimer=null,this.dirty&&!this.stopped?(this.dirty=!1,this.triggerReindex()):this.setStatus({state:"idle"})},this.watchConfig.cooldownMs)}else this.setStatus({state:"idle"})}).catch(n=>{this.reindexInFlight=!1,this.lastReindexEnd=Date.now(),this.onError(n instanceof Error?n:new Error(String(n))),this.setStatus({state:"idle"})})}runReindex(){return new Promise((t,r)=>{let n=Date.now(),i=this.indexPaths.dbPath+".tmp",s=Pn(this.indexPaths.indexPath),a=En(new URL("./reindex-worker.js",import.meta.url).pathname,[],{env:{...process.env,SCIP_REINDEX_PROJECT_ROOT:this.projectRoot,SCIP_REINDEX_OUTPUT_SCIP:s,SCIP_REINDEX_OUTPUT_DB:i,SCIP_REINDEX_LANGUAGES:this.languages?.join(",")??"",SCIP_REINDEX_PNPM_WORKSPACES:this.pnpmWorkspaces?"1":""},stdio:"pipe"});a.on("exit",c=>{if(c===0)try{$e(i)&&Me(i,this.indexPaths.dbPath),$e(s)&&Me(s,this.indexPaths.indexPath),t(Date.now()-n)}catch(o){r(new Error(`Atomic swap failed: ${o}`))}else r(new Error(`Reindex worker exited with code ${c}`))}),a.on("error",r)})}setStatus(t){this.status=t,this.onStatus(t)}};function Pn(e){return e.endsWith(".scip")?e.slice(0,-5)+".tmp.scip":e+".tmp.scip"}import{existsSync as ie,mkdirSync as Ln,symlinkSync as jn,readlinkSync as _n,unlinkSync as Nn}from"fs";import{join as B,dirname as We,resolve as se}from"path";import{homedir as Be,platform as Dn}from"os";import{fileURLToPath as Tn}from"url";var Fn=Dn()==="win32",On=["concrete-plan","scip-explore","scip-debloat","scip-verify","scip-language-playbook"];function An(e={}){let t=e.quiet?()=>{}:console.log,r=Tn(import.meta.url),n=se(We(r),"..","skills"),i=[B(Be(),".claude","skills"),B(Be(),".codex","skills")],s={installed:[],skipped:[],alreadyLinked:[]};for(let a of i){let c=We(a);if(!ie(c))continue;Ln(a,{recursive:!0});let o=a.includes(".codex")?"Codex":"Claude";for(let u of On){let d=B(n,u),g=B(a,u);if(!ie(d)){s.skipped.push(`${o}/${u}`);continue}if(ie(g)){try{let p=_n(g);if(se(p)===se(d)){s.alreadyLinked.push(`${o}/${u}`),t(` ok: ${u} \u2192 ${o} (already linked)`);continue}}catch{s.skipped.push(`${o}/${u}`),t(` skip: ${u} \u2192 ${o} (exists, not a symlink)`);continue}Nn(g)}jn(d,g,Fn?"junction":"dir"),s.installed.push(`${o}/${u}`),t(` done: ${u} \u2192 ${o}`)}}return s}export{X as INDEXER_CONFIGS,U as ScipDatabase,re as Watcher,Sr as affected,w as augmentAuxiliaryDocuments,Pe as augmentVueResolvedReferences,lr as bottlenecks,ur as byKind,mr as callGraph,vr as changeSurface,jr as code,_r as complexity,Rr as complexityHotspots,Lr as convergence,sr as coupling,C as createGitignoreFilter,ar as cycles,Nr as dataflow,Jn as dead,pr as deepChains,Hn as deps,_ as detectLanguages,Ir as diffImpact,wr as drift,br as extractCandidates,tr as fanIn,nr as fanOut,Mn as files,N as getIndexerConfig,rt as getScipVersion,Pr as health,dr as hierarchy,Xn as hotspots,Qn as importedBy,Kn as imports,In as initProjectConfig,An as installSkills,v as isBinaryAvailable,O as isIndexerInstalled,nt as isScipInstalled,cr as isolated,gr as kindCounts,qe as leafName,vn as loadProjectConfig,er as members,D as mergeScipFiles,Q as mergeScipIndexes,Bn as methods,Zn as outline,He as parseSymbol,Cr as passthroughCandidates,st as printScipInstallInstructions,Gn as rdeps,Tr as redundantReexports,Vn as refs,pn as reindex,Ae as resolveCacheDir,ne as resolveIndexPaths,Ge as shortenSymbol,fr as similar,hr as similarAll,xr as similarChains,yr as similarFiles,Fr as similarSignatures,Dr as slice,Er as staleAbstractions,$n as stats,zn as surface,Wn as symbols,qn as system,or as topCoupling,rr as topFanIn,ir as topFanOut,Un as trace,A as tryInstallIndexer,j as tryInstallScipCli,Yn as unusedImports,kr as wrapperCandidates};
86
134
  //# sourceMappingURL=index.js.map
@@ -1,4 +1,4 @@
1
- import { S as ScipDatabase, A as AffectedResult } from '../db-BSTtBG_H.js';
1
+ import { S as ScipDatabase, A as AffectedResult } from '../db-DKhNQ75l.js';
2
2
  import 'better-sqlite3';
3
3
 
4
4
  /**
@@ -1,2 +1,2 @@
1
- import{a}from"../chunk-D7KLLMPB.js";import"../chunk-WCDXJGYT.js";import"../chunk-BQ3INTYT.js";import"../chunk-LX4H4LLG.js";import"../chunk-IYFZS4PV.js";import"../chunk-TINPMWJK.js";export{a as affected};
1
+ import{a}from"../chunk-FJV7QT4G.js";import"../chunk-3FG3VLK3.js";import"../chunk-6XP3KWHC.js";import"../chunk-7NEBSLI3.js";import"../chunk-SPMLGXCE.js";import"../chunk-5IM4IQ6N.js";export{a as affected};
2
2
  //# sourceMappingURL=affected.js.map
@@ -1,4 +1,4 @@
1
- import { S as ScipDatabase, B as BottleneckResult } from '../db-BSTtBG_H.js';
1
+ import { S as ScipDatabase, B as BottleneckResult } from '../db-DKhNQ75l.js';
2
2
  import 'better-sqlite3';
3
3
 
4
4
  /**
@@ -1,2 +1,2 @@
1
- import{a}from"../chunk-K5FQFCSN.js";import"../chunk-WCDXJGYT.js";import"../chunk-BQ3INTYT.js";import"../chunk-LX4H4LLG.js";import"../chunk-IYFZS4PV.js";import"../chunk-TINPMWJK.js";export{a as bottlenecks};
1
+ import{a}from"../chunk-6CTMG3IF.js";import"../chunk-3FG3VLK3.js";import"../chunk-6XP3KWHC.js";import"../chunk-7NEBSLI3.js";import"../chunk-SPMLGXCE.js";import"../chunk-5IM4IQ6N.js";export{a as bottlenecks};
2
2
  //# sourceMappingURL=bottlenecks.js.map
@@ -1,4 +1,4 @@
1
- import { S as ScipDatabase, a as ByKindResult } from '../db-BSTtBG_H.js';
1
+ import { S as ScipDatabase, a as ByKindResult } from '../db-DKhNQ75l.js';
2
2
  import 'better-sqlite3';
3
3
 
4
4
  declare function byKind(db: ScipDatabase, kindQuery: string, opts?: {
@@ -1,2 +1,2 @@
1
- import{a,b}from"../chunk-SDX6MDBL.js";import"../chunk-IYFZS4PV.js";import"../chunk-TINPMWJK.js";export{a as byKind,b as kindCounts};
1
+ import{a,b}from"../chunk-6ALIV5SZ.js";import"../chunk-SPMLGXCE.js";import"../chunk-5IM4IQ6N.js";export{a as byKind,b as kindCounts};
2
2
  //# sourceMappingURL=by-kind.js.map
@@ -1,4 +1,4 @@
1
- import { S as ScipDatabase, C as CallGraphResult } from '../db-BSTtBG_H.js';
1
+ import { S as ScipDatabase, C as CallGraphResult } from '../db-DKhNQ75l.js';
2
2
  import 'better-sqlite3';
3
3
 
4
4
  /**
@@ -1,2 +1,2 @@
1
- import{a}from"../chunk-FCC3XJTI.js";import"../chunk-WCDXJGYT.js";import"../chunk-BQ3INTYT.js";import"../chunk-LX4H4LLG.js";import"../chunk-IYFZS4PV.js";import"../chunk-TINPMWJK.js";export{a as callGraph};
1
+ import{a}from"../chunk-26LSAIEP.js";import"../chunk-3FG3VLK3.js";import"../chunk-6XP3KWHC.js";import"../chunk-7NEBSLI3.js";import"../chunk-SPMLGXCE.js";import"../chunk-5IM4IQ6N.js";export{a as callGraph};
2
2
  //# sourceMappingURL=call-graph.js.map
@@ -1,4 +1,4 @@
1
- import { S as ScipDatabase, b as ChangeSurfaceResult } from '../db-BSTtBG_H.js';
1
+ import { S as ScipDatabase, b as ChangeSurfaceResult } from '../db-DKhNQ75l.js';
2
2
  import 'better-sqlite3';
3
3
 
4
4
  /**
@@ -1,2 +1,2 @@
1
- import{a}from"../chunk-2DSS2NGF.js";import"../chunk-WTSTDJZ7.js";import"../chunk-LX4H4LLG.js";import"../chunk-IYFZS4PV.js";import"../chunk-TINPMWJK.js";export{a as changeSurface};
1
+ import{a}from"../chunk-PU7P5NPE.js";import"../chunk-NFOSOUH6.js";import"../chunk-7NEBSLI3.js";import"../chunk-SPMLGXCE.js";import"../chunk-5IM4IQ6N.js";export{a as changeSurface};
2
2
  //# sourceMappingURL=change-surface.js.map
@@ -1,4 +1,4 @@
1
- import { S as ScipDatabase, c as CodeResult } from '../db-BSTtBG_H.js';
1
+ import { S as ScipDatabase, c as CodeResult } from '../db-DKhNQ75l.js';
2
2
  import 'better-sqlite3';
3
3
 
4
4
  /**
@@ -1,2 +1,2 @@
1
- import{a}from"../chunk-QXE6EDY2.js";import"../chunk-WTSTDJZ7.js";import"../chunk-LX4H4LLG.js";import"../chunk-IYFZS4PV.js";import"../chunk-TINPMWJK.js";export{a as code};
1
+ import{a}from"../chunk-RC2PKZSS.js";import"../chunk-NFOSOUH6.js";import"../chunk-7NEBSLI3.js";import"../chunk-SPMLGXCE.js";import"../chunk-5IM4IQ6N.js";export{a as code};
2
2
  //# sourceMappingURL=code.js.map
@@ -1,4 +1,4 @@
1
- import { S as ScipDatabase, d as ComplexityHotspot } from '../db-BSTtBG_H.js';
1
+ import { S as ScipDatabase, d as ComplexityHotspot } from '../db-DKhNQ75l.js';
2
2
  import 'better-sqlite3';
3
3
 
4
4
  /**
@@ -1,2 +1,2 @@
1
- import{a}from"../chunk-Y7H6D2EV.js";import"../chunk-WCDXJGYT.js";import"../chunk-BQ3INTYT.js";import"../chunk-LX4H4LLG.js";import"../chunk-IYFZS4PV.js";import"../chunk-TINPMWJK.js";export{a as complexityHotspots};
1
+ import{a}from"../chunk-S65VVU3R.js";import"../chunk-AEMTUHQ7.js";import"../chunk-F6F2QUIH.js";import"../chunk-3FG3VLK3.js";import"../chunk-6XP3KWHC.js";import"../chunk-7NEBSLI3.js";import"../chunk-SPMLGXCE.js";import"../chunk-5IM4IQ6N.js";export{a as complexityHotspots};
2
2
  //# sourceMappingURL=complexity-hotspots.js.map
@@ -1,4 +1,4 @@
1
- import { S as ScipDatabase, e as ComplexityResult } from '../db-BSTtBG_H.js';
1
+ import { S as ScipDatabase, e as ComplexityResult } from '../db-DKhNQ75l.js';
2
2
  import 'better-sqlite3';
3
3
 
4
4
  /**
@@ -1,2 +1,2 @@
1
- import{a}from"../chunk-BDBRZPX3.js";import"../chunk-WCDXJGYT.js";import"../chunk-BQ3INTYT.js";import"../chunk-LX4H4LLG.js";import"../chunk-IYFZS4PV.js";import"../chunk-TINPMWJK.js";export{a as complexity};
1
+ import{a}from"../chunk-5NRGSXZQ.js";import"../chunk-3FG3VLK3.js";import"../chunk-6XP3KWHC.js";import"../chunk-7NEBSLI3.js";import"../chunk-SPMLGXCE.js";import"../chunk-5IM4IQ6N.js";export{a as complexity};
2
2
  //# sourceMappingURL=complexity.js.map
@@ -1,4 +1,4 @@
1
- import { S as ScipDatabase, f as ConvergenceResult } from '../db-BSTtBG_H.js';
1
+ import { S as ScipDatabase, f as ConvergenceResult } from '../db-DKhNQ75l.js';
2
2
  import 'better-sqlite3';
3
3
 
4
4
  /**
@@ -1,2 +1,2 @@
1
- import{a}from"../chunk-HMKJTAZD.js";import"../chunk-WCDXJGYT.js";import"../chunk-BQ3INTYT.js";import"../chunk-LX4H4LLG.js";import"../chunk-IYFZS4PV.js";import"../chunk-TINPMWJK.js";export{a as convergence};
1
+ import{a}from"../chunk-5VU2RVKI.js";import"../chunk-3FG3VLK3.js";import"../chunk-6XP3KWHC.js";import"../chunk-7NEBSLI3.js";import"../chunk-SPMLGXCE.js";import"../chunk-5IM4IQ6N.js";export{a as convergence};
2
2
  //# sourceMappingURL=convergence.js.map
@@ -1,4 +1,4 @@
1
- import { S as ScipDatabase, g as CouplingResult } from '../db-BSTtBG_H.js';
1
+ import { S as ScipDatabase, g as CouplingResult } from '../db-DKhNQ75l.js';
2
2
  import 'better-sqlite3';
3
3
 
4
4
  /**
@@ -1,2 +1,2 @@
1
- import{a,b}from"../chunk-ZXKURFVB.js";import"../chunk-WTSTDJZ7.js";import"../chunk-LX4H4LLG.js";import"../chunk-IYFZS4PV.js";import"../chunk-TINPMWJK.js";export{a as coupling,b as topCoupling};
1
+ import{a,b}from"../chunk-AZTWY4OT.js";import"../chunk-NFOSOUH6.js";import"../chunk-7NEBSLI3.js";import"../chunk-SPMLGXCE.js";import"../chunk-5IM4IQ6N.js";export{a as coupling,b as topCoupling};
2
2
  //# sourceMappingURL=coupling.js.map
@@ -1,4 +1,4 @@
1
- import { S as ScipDatabase, h as CycleResult } from '../db-BSTtBG_H.js';
1
+ import { S as ScipDatabase, h as CycleResult } from '../db-DKhNQ75l.js';
2
2
  import 'better-sqlite3';
3
3
 
4
4
  /**
@@ -1,2 +1,2 @@
1
- import{a}from"../chunk-EEF3YEHW.js";import"../chunk-GNXRLK5G.js";import"../chunk-ZSRXMNMK.js";import"../chunk-WCDXJGYT.js";import"../chunk-BQ3INTYT.js";import"../chunk-LX4H4LLG.js";import"../chunk-IYFZS4PV.js";import"../chunk-TINPMWJK.js";export{a as cycles};
1
+ import{a}from"../chunk-435YC4OF.js";import"../chunk-AEMTUHQ7.js";import"../chunk-F6F2QUIH.js";import"../chunk-3FG3VLK3.js";import"../chunk-6XP3KWHC.js";import"../chunk-7NEBSLI3.js";import"../chunk-SPMLGXCE.js";import"../chunk-5IM4IQ6N.js";export{a as cycles};
2
2
  //# sourceMappingURL=cycles.js.map
@@ -1,4 +1,4 @@
1
- import { S as ScipDatabase, D as DataflowResult } from '../db-BSTtBG_H.js';
1
+ import { S as ScipDatabase, D as DataflowResult } from '../db-DKhNQ75l.js';
2
2
  import 'better-sqlite3';
3
3
 
4
4
  /**
@@ -1,2 +1,2 @@
1
- import{a}from"../chunk-SG35Y7J2.js";import"../chunk-VEUMRDHW.js";import"../chunk-ZSRXMNMK.js";import"../chunk-WCDXJGYT.js";import"../chunk-BQ3INTYT.js";import"../chunk-LX4H4LLG.js";import"../chunk-IYFZS4PV.js";import"../chunk-TINPMWJK.js";export{a as dataflow};
1
+ import{a}from"../chunk-2HEJQBMS.js";import"../chunk-QSTMORTI.js";import"../chunk-F6F2QUIH.js";import"../chunk-3FG3VLK3.js";import"../chunk-6XP3KWHC.js";import"../chunk-7NEBSLI3.js";import"../chunk-SPMLGXCE.js";import"../chunk-5IM4IQ6N.js";export{a as dataflow};
2
2
  //# sourceMappingURL=dataflow.js.map
@@ -1,4 +1,4 @@
1
- import { S as ScipDatabase, i as DeadOptions, j as DeadSummary } from '../db-BSTtBG_H.js';
1
+ import { S as ScipDatabase, i as DeadOptions, j as DeadSummary } from '../db-DKhNQ75l.js';
2
2
  import 'better-sqlite3';
3
3
 
4
4
  /**
@@ -1,2 +1,2 @@
1
- import{a}from"../chunk-KO7YJRWP.js";import"../chunk-GNXRLK5G.js";import"../chunk-VEUMRDHW.js";import"../chunk-ZSRXMNMK.js";import"../chunk-WCDXJGYT.js";import"../chunk-BQ3INTYT.js";import"../chunk-LX4H4LLG.js";import"../chunk-IYFZS4PV.js";import"../chunk-TINPMWJK.js";export{a as dead};
1
+ import{a}from"../chunk-CW5K3KIF.js";import"../chunk-QSTMORTI.js";import"../chunk-AEMTUHQ7.js";import"../chunk-F6F2QUIH.js";import"../chunk-3FG3VLK3.js";import"../chunk-6XP3KWHC.js";import"../chunk-7NEBSLI3.js";import"../chunk-SPMLGXCE.js";import"../chunk-5IM4IQ6N.js";export{a as dead};
2
2
  //# sourceMappingURL=dead.js.map
@@ -1,4 +1,4 @@
1
- import { S as ScipDatabase, k as DeepChainResult } from '../db-BSTtBG_H.js';
1
+ import { S as ScipDatabase, k as DeepChainResult } from '../db-DKhNQ75l.js';
2
2
  import 'better-sqlite3';
3
3
 
4
4
  /**
@@ -1,2 +1,2 @@
1
- import{a}from"../chunk-IBGBI3VU.js";import"../chunk-WCDXJGYT.js";import"../chunk-BQ3INTYT.js";import"../chunk-LX4H4LLG.js";import"../chunk-IYFZS4PV.js";import"../chunk-TINPMWJK.js";export{a as deepChains};
1
+ import{a}from"../chunk-67UXTIFZ.js";import"../chunk-3FG3VLK3.js";import"../chunk-6XP3KWHC.js";import"../chunk-7NEBSLI3.js";import"../chunk-SPMLGXCE.js";import"../chunk-5IM4IQ6N.js";export{a as deepChains};
2
2
  //# sourceMappingURL=deep-chains.js.map
@@ -1,4 +1,4 @@
1
- import { S as ScipDatabase, l as DepResult } from '../db-BSTtBG_H.js';
1
+ import { S as ScipDatabase, l as DepResult } from '../db-DKhNQ75l.js';
2
2
  import 'better-sqlite3';
3
3
 
4
4
  /** What internal files does this file depend on? (forward dependencies) */
@@ -1,2 +1,2 @@
1
- import{a,b}from"../chunk-DHYIJHXZ.js";import"../chunk-WTSTDJZ7.js";import"../chunk-LX4H4LLG.js";import"../chunk-IYFZS4PV.js";import"../chunk-TINPMWJK.js";export{a as deps,b as rdeps};
1
+ import{a,b}from"../chunk-LKCPNPHH.js";import"../chunk-NFOSOUH6.js";import"../chunk-7NEBSLI3.js";import"../chunk-SPMLGXCE.js";import"../chunk-5IM4IQ6N.js";export{a as deps,b as rdeps};
2
2
  //# sourceMappingURL=deps.js.map