import type { DocumentFileType, IngestOptions } from '../types/index.js'; import { LocalEmbedder } from './embedder.js'; import { DocumentStore } from './store.js'; /** * Callback for entity extraction — caller provides their own LLM. */ export type EntityExtractionFn = (prompt: string) => Promise; export interface IngestionResult { docId: string; filename: string; chunks: number; tokens: number; entities: number; relationships: number; embeddingsGenerated: boolean; } /** * Detect file type from extension. */ export declare function detectFileType(filePath: string): DocumentFileType | null; /** * Extract text from a file based on its type. * * For simple formats (md, txt, csv, json, html), reads directly. * For complex formats (pdf, docx, xlsx, pptx), the caller should * pre-extract text using MCP servers (MarkItDown, pdf-reader, etc.) * and pass it to ingestText() instead. */ export declare function extractText(filePath: string, fileType: DocumentFileType): string; /** * Full ingestion pipeline for a file on disk. * * 1. Detect file type * 2. Extract text * 3. Chunk the text * 4. Generate embeddings (if Ollama available) * 5. Extract entities (if LLM callback provided) * 6. Store everything in SQLite */ export declare function ingestFile(filePath: string, store: DocumentStore, options?: IngestOptions & { embedder?: LocalEmbedder; entityExtractor?: EntityExtractionFn; }): Promise; /** * Ingest pre-extracted text (e.g., from MCP server output). * Use this for PDF/DOCX/XLSX that have already been converted to text. */ export declare function ingestText(text: string, filename: string, fileType: DocumentFileType, store: DocumentStore, options?: IngestOptions & { filepath?: string; embedder?: LocalEmbedder; entityExtractor?: EntityExtractionFn; }): Promise; //# sourceMappingURL=ingestion.d.ts.map