pub struct SymbolIndex { /* private fields */ }Expand description
SQLite-backed symbol index for a project.
Architecture: writer Mutex<IndexDb> for mutations + per-query read-only
connections for _cached methods. This makes SymbolIndex: Send + Sync,
enabling Arc<SymbolIndex> without an external Mutex.
Implementations§
Source§impl SymbolIndex
impl SymbolIndex
Sourcepub fn find_symbol_cached(
&self,
name: &str,
file_path: Option<&str>,
include_body: bool,
exact_match: bool,
max_matches: usize,
) -> Result<Vec<SymbolInfo>>
pub fn find_symbol_cached( &self, name: &str, file_path: Option<&str>, include_body: bool, exact_match: bool, max_matches: usize, ) -> Result<Vec<SymbolInfo>>
Query symbols from DB without lazy indexing. Returns empty if file not yet indexed.
Sourcepub fn get_symbols_overview_cached(
&self,
path: &str,
_depth: usize,
) -> Result<Vec<SymbolInfo>>
pub fn get_symbols_overview_cached( &self, path: &str, _depth: usize, ) -> Result<Vec<SymbolInfo>>
Get symbols overview from DB without lazy indexing.
Sourcepub fn get_ranked_context_cached(
&self,
query: &str,
path: Option<&str>,
max_tokens: usize,
include_body: bool,
depth: usize,
graph_cache: Option<&GraphCache>,
semantic_scores: HashMap<String, f64>,
) -> Result<RankedContextResult>
pub fn get_ranked_context_cached( &self, query: &str, path: Option<&str>, max_tokens: usize, include_body: bool, depth: usize, graph_cache: Option<&GraphCache>, semantic_scores: HashMap<String, f64>, ) -> Result<RankedContextResult>
Ranked context from DB without lazy indexing.
If graph_cache is provided, PageRank scores boost symbols in highly-imported files.
If semantic_scores is non-empty, vector similarity is blended into ranking.
Sourcepub fn get_ranked_context_cached_with_query_type(
&self,
query: &str,
path: Option<&str>,
max_tokens: usize,
include_body: bool,
depth: usize,
graph_cache: Option<&GraphCache>,
semantic_scores: HashMap<String, f64>,
query_type: Option<&str>,
) -> Result<RankedContextResult>
pub fn get_ranked_context_cached_with_query_type( &self, query: &str, path: Option<&str>, max_tokens: usize, include_body: bool, depth: usize, graph_cache: Option<&GraphCache>, semantic_scores: HashMap<String, f64>, query_type: Option<&str>, ) -> Result<RankedContextResult>
Like get_ranked_context_cached but accepts an optional query type
("identifier", "natural_language", "short_phrase") to tune
ranking weights per query category.
Sourcepub fn get_ranked_context_cached_with_lsp_boost(
&self,
query: &str,
path: Option<&str>,
max_tokens: usize,
include_body: bool,
depth: usize,
graph_cache: Option<&GraphCache>,
semantic_scores: HashMap<String, f64>,
query_type: Option<&str>,
lsp_boost_refs: HashMap<String, Vec<usize>>,
lsp_signal_weight: Option<f64>,
) -> Result<RankedContextResult>
pub fn get_ranked_context_cached_with_lsp_boost( &self, query: &str, path: Option<&str>, max_tokens: usize, include_body: bool, depth: usize, graph_cache: Option<&GraphCache>, semantic_scores: HashMap<String, f64>, query_type: Option<&str>, lsp_boost_refs: HashMap<String, Vec<usize>>, lsp_signal_weight: Option<f64>, ) -> Result<RankedContextResult>
Full form that additionally accepts per-file LSP reference line information for the P1-4 per-symbol boost.
lsp_boost_refs maps project-relative file paths to the list of
reference lines that a caller-side reference probe (LSP
textDocument/references, unioned with the tree-sitter text
search) returned for the query’s target symbol. Inside
rank_symbols, each candidate is boosted by how close its
declaration line is to the nearest ref line at or below it —
file-level uniform boost used to over-promote unrelated helpers
in large ref’d files, per-symbol proximity keeps the lift
targeted on plausible containers.
lsp_signal_weight scales the final boost. An empty ref map OR
a None weight keeps the blend byte-identical to the pre-P1-4
pipeline.
Source§impl SymbolIndex
impl SymbolIndex
pub fn refresh_all(&self) -> Result<IndexStats>
Sourcepub fn index_files(&self, paths: &[PathBuf]) -> Result<usize>
pub fn index_files(&self, paths: &[PathBuf]) -> Result<usize>
Incrementally re-index only the given files (changed/created).
Sourcepub fn refresh_file(&self, relative_path: &str) -> Result<usize>
pub fn refresh_file(&self, relative_path: &str) -> Result<usize>
Re-index a single file by relative path (convenience for post-mutation refresh).
Sourcepub fn remove_files(&self, paths: &[PathBuf]) -> Result<usize>
pub fn remove_files(&self, paths: &[PathBuf]) -> Result<usize>
Remove deleted files from the index.
Source§impl SymbolIndex
impl SymbolIndex
pub fn new(project: ProjectRoot) -> Self
Sourcepub fn new_memory(project: ProjectRoot) -> Self
pub fn new_memory(project: ProjectRoot) -> Self
Create an in-memory index (for tests and benchmarks — no disk persistence).
pub fn stats(&self) -> Result<IndexStats>
Sourcepub fn get_project_structure(&self) -> Result<Vec<DirStats>>
pub fn get_project_structure(&self) -> Result<Vec<DirStats>>
Hierarchical project structure: per-directory file count + symbol count. Used as Level 1 pruning — lets LLM decide which directories to drill into.
pub fn indexed_file_paths(&self) -> Result<Vec<String>>
pub fn get_symbols_overview( &self, path: &str, depth: usize, ) -> Result<Vec<SymbolInfo>>
pub fn find_symbol( &self, name: &str, file_path: Option<&str>, include_body: bool, exact_match: bool, max_matches: usize, ) -> Result<Vec<SymbolInfo>>
pub fn get_ranked_context( &self, query: &str, path: Option<&str>, max_tokens: usize, include_body: bool, depth: usize, ) -> Result<RankedContextResult>
Sourcepub fn db(&self) -> MutexGuard<'_, IndexDb>
pub fn db(&self) -> MutexGuard<'_, IndexDb>
Access the underlying database (e.g. for import graph queries).
Auto Trait Implementations§
impl !Freeze for SymbolIndex
impl RefUnwindSafe for SymbolIndex
impl Send for SymbolIndex
impl Sync for SymbolIndex
impl Unpin for SymbolIndex
impl UnsafeUnpin for SymbolIndex
impl UnwindSafe for SymbolIndex
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§impl<D> OwoColorize for D
impl<D> OwoColorize for D
Source§fn fg<C>(&self) -> FgColorDisplay<'_, C, Self>where
C: Color,
fn fg<C>(&self) -> FgColorDisplay<'_, C, Self>where
C: Color,
Source§fn bg<C>(&self) -> BgColorDisplay<'_, C, Self>where
C: Color,
fn bg<C>(&self) -> BgColorDisplay<'_, C, Self>where
C: Color,
Source§fn black(&self) -> FgColorDisplay<'_, Black, Self>
fn black(&self) -> FgColorDisplay<'_, Black, Self>
Source§fn on_black(&self) -> BgColorDisplay<'_, Black, Self>
fn on_black(&self) -> BgColorDisplay<'_, Black, Self>
Source§fn red(&self) -> FgColorDisplay<'_, Red, Self>
fn red(&self) -> FgColorDisplay<'_, Red, Self>
Source§fn on_red(&self) -> BgColorDisplay<'_, Red, Self>
fn on_red(&self) -> BgColorDisplay<'_, Red, Self>
Source§fn green(&self) -> FgColorDisplay<'_, Green, Self>
fn green(&self) -> FgColorDisplay<'_, Green, Self>
Source§fn on_green(&self) -> BgColorDisplay<'_, Green, Self>
fn on_green(&self) -> BgColorDisplay<'_, Green, Self>
Source§fn yellow(&self) -> FgColorDisplay<'_, Yellow, Self>
fn yellow(&self) -> FgColorDisplay<'_, Yellow, Self>
Source§fn on_yellow(&self) -> BgColorDisplay<'_, Yellow, Self>
fn on_yellow(&self) -> BgColorDisplay<'_, Yellow, Self>
Source§fn blue(&self) -> FgColorDisplay<'_, Blue, Self>
fn blue(&self) -> FgColorDisplay<'_, Blue, Self>
Source§fn on_blue(&self) -> BgColorDisplay<'_, Blue, Self>
fn on_blue(&self) -> BgColorDisplay<'_, Blue, Self>
Source§fn magenta(&self) -> FgColorDisplay<'_, Magenta, Self>
fn magenta(&self) -> FgColorDisplay<'_, Magenta, Self>
Source§fn on_magenta(&self) -> BgColorDisplay<'_, Magenta, Self>
fn on_magenta(&self) -> BgColorDisplay<'_, Magenta, Self>
Source§fn purple(&self) -> FgColorDisplay<'_, Magenta, Self>
fn purple(&self) -> FgColorDisplay<'_, Magenta, Self>
Source§fn on_purple(&self) -> BgColorDisplay<'_, Magenta, Self>
fn on_purple(&self) -> BgColorDisplay<'_, Magenta, Self>
Source§fn cyan(&self) -> FgColorDisplay<'_, Cyan, Self>
fn cyan(&self) -> FgColorDisplay<'_, Cyan, Self>
Source§fn on_cyan(&self) -> BgColorDisplay<'_, Cyan, Self>
fn on_cyan(&self) -> BgColorDisplay<'_, Cyan, Self>
Source§fn white(&self) -> FgColorDisplay<'_, White, Self>
fn white(&self) -> FgColorDisplay<'_, White, Self>
Source§fn on_white(&self) -> BgColorDisplay<'_, White, Self>
fn on_white(&self) -> BgColorDisplay<'_, White, Self>
Source§fn default_color(&self) -> FgColorDisplay<'_, Default, Self>
fn default_color(&self) -> FgColorDisplay<'_, Default, Self>
Source§fn on_default_color(&self) -> BgColorDisplay<'_, Default, Self>
fn on_default_color(&self) -> BgColorDisplay<'_, Default, Self>
Source§fn bright_black(&self) -> FgColorDisplay<'_, BrightBlack, Self>
fn bright_black(&self) -> FgColorDisplay<'_, BrightBlack, Self>
Source§fn on_bright_black(&self) -> BgColorDisplay<'_, BrightBlack, Self>
fn on_bright_black(&self) -> BgColorDisplay<'_, BrightBlack, Self>
Source§fn bright_red(&self) -> FgColorDisplay<'_, BrightRed, Self>
fn bright_red(&self) -> FgColorDisplay<'_, BrightRed, Self>
Source§fn on_bright_red(&self) -> BgColorDisplay<'_, BrightRed, Self>
fn on_bright_red(&self) -> BgColorDisplay<'_, BrightRed, Self>
Source§fn bright_green(&self) -> FgColorDisplay<'_, BrightGreen, Self>
fn bright_green(&self) -> FgColorDisplay<'_, BrightGreen, Self>
Source§fn on_bright_green(&self) -> BgColorDisplay<'_, BrightGreen, Self>
fn on_bright_green(&self) -> BgColorDisplay<'_, BrightGreen, Self>
Source§fn bright_yellow(&self) -> FgColorDisplay<'_, BrightYellow, Self>
fn bright_yellow(&self) -> FgColorDisplay<'_, BrightYellow, Self>
Source§fn on_bright_yellow(&self) -> BgColorDisplay<'_, BrightYellow, Self>
fn on_bright_yellow(&self) -> BgColorDisplay<'_, BrightYellow, Self>
Source§fn bright_blue(&self) -> FgColorDisplay<'_, BrightBlue, Self>
fn bright_blue(&self) -> FgColorDisplay<'_, BrightBlue, Self>
Source§fn on_bright_blue(&self) -> BgColorDisplay<'_, BrightBlue, Self>
fn on_bright_blue(&self) -> BgColorDisplay<'_, BrightBlue, Self>
Source§fn bright_magenta(&self) -> FgColorDisplay<'_, BrightMagenta, Self>
fn bright_magenta(&self) -> FgColorDisplay<'_, BrightMagenta, Self>
Source§fn on_bright_magenta(&self) -> BgColorDisplay<'_, BrightMagenta, Self>
fn on_bright_magenta(&self) -> BgColorDisplay<'_, BrightMagenta, Self>
Source§fn bright_purple(&self) -> FgColorDisplay<'_, BrightMagenta, Self>
fn bright_purple(&self) -> FgColorDisplay<'_, BrightMagenta, Self>
Source§fn on_bright_purple(&self) -> BgColorDisplay<'_, BrightMagenta, Self>
fn on_bright_purple(&self) -> BgColorDisplay<'_, BrightMagenta, Self>
Source§fn bright_cyan(&self) -> FgColorDisplay<'_, BrightCyan, Self>
fn bright_cyan(&self) -> FgColorDisplay<'_, BrightCyan, Self>
Source§fn on_bright_cyan(&self) -> BgColorDisplay<'_, BrightCyan, Self>
fn on_bright_cyan(&self) -> BgColorDisplay<'_, BrightCyan, Self>
Source§fn bright_white(&self) -> FgColorDisplay<'_, BrightWhite, Self>
fn bright_white(&self) -> FgColorDisplay<'_, BrightWhite, Self>
Source§fn on_bright_white(&self) -> BgColorDisplay<'_, BrightWhite, Self>
fn on_bright_white(&self) -> BgColorDisplay<'_, BrightWhite, Self>
Source§fn bold(&self) -> BoldDisplay<'_, Self>
fn bold(&self) -> BoldDisplay<'_, Self>
Source§fn dimmed(&self) -> DimDisplay<'_, Self>
fn dimmed(&self) -> DimDisplay<'_, Self>
Source§fn italic(&self) -> ItalicDisplay<'_, Self>
fn italic(&self) -> ItalicDisplay<'_, Self>
Source§fn underline(&self) -> UnderlineDisplay<'_, Self>
fn underline(&self) -> UnderlineDisplay<'_, Self>
Source§fn blink(&self) -> BlinkDisplay<'_, Self>
fn blink(&self) -> BlinkDisplay<'_, Self>
Source§fn blink_fast(&self) -> BlinkFastDisplay<'_, Self>
fn blink_fast(&self) -> BlinkFastDisplay<'_, Self>
Source§fn reversed(&self) -> ReversedDisplay<'_, Self>
fn reversed(&self) -> ReversedDisplay<'_, Self>
Source§fn strikethrough(&self) -> StrikeThroughDisplay<'_, Self>
fn strikethrough(&self) -> StrikeThroughDisplay<'_, Self>
Source§fn color<Color>(&self, color: Color) -> FgDynColorDisplay<'_, Color, Self>where
Color: DynColor,
fn color<Color>(&self, color: Color) -> FgDynColorDisplay<'_, Color, Self>where
Color: DynColor,
OwoColorize::fg or
a color-specific method, such as OwoColorize::green, Read moreSource§fn on_color<Color>(&self, color: Color) -> BgDynColorDisplay<'_, Color, Self>where
Color: DynColor,
fn on_color<Color>(&self, color: Color) -> BgDynColorDisplay<'_, Color, Self>where
Color: DynColor,
OwoColorize::bg or
a color-specific method, such as OwoColorize::on_yellow, Read more