export interface ProjectConfig { rootPath: string; name: string; dataDir: string; dbPath: string; } export interface FileRecord { id: number; path: string; language: string | null; hash: string; last_modified: number; size_bytes: number; pagerank: number; indexed_at: number; } export type ChunkType = "function" | "class" | "method" | "type" | "interface" | "module" | "block" | "variable" | "import" | "doc_section" | "doc_code"; export type RetrievalMethod = "fts" | "vector" | "hybrid" | "symbol" | "refs" | "pagerank" | "graph-expand" | "doc-edge" | "lookup" | "audit" | "investigate" | "ast-grep"; export interface Evidence { id: string; file: string; lines: [number, number]; sha: string | null; chunk_id?: number; symbol?: string; method: RetrievalMethod; score: number; } export type VerifyStatus = "unchanged" | "moved" | "modified" | "deleted" | "file_missing"; export interface VerifyResult { id: string; status: VerifyStatus; file?: string; current_lines?: [number, number]; similarity?: number; note?: string; } export interface CodeChunk { id: number; file_id: number; type: ChunkType; name: string | null; signature: string | null; start_line: number; end_line: number; content: string; description: string | null; token_count: number; /** v0.15 P1-12: optional LLM-generated one-liner. Stored prefixed with * a content-hash marker so re-runs can detect staleness cheaply. */ purpose?: string | null; } export interface SearchResult { chunk: CodeChunk; file: FileRecord; score: number; } export interface DependencyEdge { source_file_id: number; target_file_id: number; reference_count: number; } export type MemoryCategory = "decision" | "preference" | "pattern" | "context" | "todo" | "procedural" | "correction"; export type MemoryTier = "core" | "archive"; export type MemoryKind = "episodic" | "semantic" | "procedural"; export interface Memory { id: number; category: MemoryCategory; content: string; tags: string | null; confidence: number; git_sha: string | null; git_branch: string | null; related_files: string | null; created_at: number; updated_at: number; last_accessed: number; access_count: number; is_stale: number; tier: MemoryTier; valid_from_sha: string | null; valid_until_sha: string | null; invalidated_at: number | null; superseded_by: number | null; pins: string | null; kind: MemoryKind; } export interface IndexStatus { projectName: string; rootPath: string; fileCount: number; chunkCount: number; languages: string[]; lastIndexedAt: number | null; indexing: boolean; progress?: { done: number; total: number; }; /** * Embedding pipeline observability (#60 + #59). Lets sverklo doctor, * the dashboard, and the MCP status tool surface "vector lane is only * seeing 49% of chunks" or "configured 1024 dims, stored at 384" * without the user having to drop down into SQLite. */ embeddings?: { chunksEmbedded: number; coveragePct: number; dimensionsObserved: number | null; dimensionsConfigured: number | null; provider: string | null; }; /** * Current git branch (v0.24.0). Null when not in a git repo, in * detached-HEAD, or when execSync('git branch --show-current') * fails. The dashboard breadcrumb and MCP sverklo_status both * read this; the HTTP /api/status endpoint passes it through * unchanged. */ branch?: string | null; } export interface ParsedChunk { type: ChunkType; name: string | null; signature: string | null; startLine: number; endLine: number; content: string; } export interface ParseResult { chunks: ParsedChunk[]; imports: ImportRef[]; } export interface ImportRef { source: string; names: string[]; isRelative: boolean; } export declare const SUPPORTED_LANGUAGES: Record; export declare function detectLanguage(filePath: string): string | null;