import { chunkText } from "./chunking.js"; import { createDocument, storeDocumentChunks } from "./document-repository.js"; import type { NewDocument } from "./document-repository.js"; import { generateEmbedding } from "./ollama.js"; export const ingestDocument = async ( document: NewDocument & { content: string }, ): Promise<{ documentId: string; chunkCount: number }> => { const chunks = chunkText(document.content); if (chunks.length === 0) { throw new Error("Document content cannot be empty"); } const documentId = await createDocument({ title: document.title, source: document.source, }); try { const embeddedChunks = await Promise.all( chunks.map(async (chunk) => ({ ...chunk, embedding: await generateEmbedding(chunk.content), })), ); await storeDocumentChunks(documentId, embeddedChunks); return { documentId, chunkCount: embeddedChunks.length, }; } catch (error) { throw error; } };