import { type SearchResult, type IndexedFile, type Codebase } from "./db/store.ts"; import type { Embedder } from "./embed/types.ts"; export type { SearchResult, IndexedFile, Codebase } from "./db/store.ts"; export type { CodeChunk } from "./chunk/types.ts"; export type { Embedder } from "./embed/types.ts"; export type SearchMode = "semantic" | "keyword" | "hybrid"; export interface SearchOptions { limit?: number; threshold?: number; includeSnippet?: boolean; mode?: SearchMode; } export type IndexPhase = "scan" | "hash" | "chunk" | "embed" | "cleanup" | "fts"; export interface IndexProgress { phase: IndexPhase; /** Current item within the phase (0 before work starts, 1-based during) */ current: number; /** Total items in this phase (0 if unknown) */ total: number; } export interface IndexOptions { languages?: string[]; verbose?: boolean; onProgress?: (progress: IndexProgress) => void; } export interface IndexResult { files: number; chunks: number; embedded: number; skipped: number; removed: number; errors: string[]; duration: number; } export interface CodeIndexOptions { dbPath: string; /** Embedding function - SDK users must provide their own */ embedder: Embedder; /** Model name stored alongside embeddings (e.g. "all-MiniLM-L6-v2") */ embeddingModel: string; } /** Compute the default DB path for a project directory: