/** * Workspace indexer: full builds and incremental refresh. * * A build creates a new index generation atomically. Building generations are * never query authority; the most recent validated ready generation is served * during a build. Interrupted builds are discardable. Source files are never * written by the indexer. */ import { type WorkspaceIndexConfig } from "./config.js"; import { type ResolvedWorkspaceIdentity } from "./identity.js"; import { type WorkspaceDb } from "./storage.js"; import type { EmbeddingBackend, WorkspaceIndexGeneration } from "./types.js"; export interface BuildOptions { config?: WorkspaceIndexConfig; signal?: AbortSignal; onEvent?: (event: string, payload?: Record) => void; embedBackend?: EmbeddingBackend; } export interface BuildReport { generationId: string; status: WorkspaceIndexGeneration["status"]; filesIndexed: number; chunksIndexed: number; symbolsIndexed: number; embeddingsIndexed: number; discovered: number; skippedIgnored: number; sensitiveSkipped: number; changed: number; added: number; removed: number; rebuild: boolean; } export declare class WorkspaceIndexer { private db; private identity; private config; constructor(db: WorkspaceDb, identity: ResolvedWorkspaceIdentity, config?: WorkspaceIndexConfig); get generationConfig(): WorkspaceIndexConfig; /** Full (re)build of the workspace index. */ build(opts?: BuildOptions): Promise; /** Incremental refresh against the current ready generation. */ refresh(opts?: BuildOptions): Promise; private removeGenerationData; private modelFile; private writeFilesToGeneration; private writeFileModel; } //# sourceMappingURL=indexer.d.ts.map