/** * DocsManager - Document management for agents * * Enables agents to load, index, and retrieve documents. * * @example * ```typescript * import { DocsManager, Agent } from 'praisonai'; * * const docs = new DocsManager(); * await docs.addDocument('guide.md', markdownContent); * * const results = await docs.search('how to configure'); * ``` */ /** * Document entry */ export interface Doc { /** Unique document ID */ id: string; /** Document title/name */ title: string; /** Document content */ content: string; /** Content type */ type: 'text' | 'markdown' | 'html' | 'json' | 'code'; /** Source path or URL */ source?: string; /** Creation timestamp */ createdAt: number; /** Last updated timestamp */ updatedAt: number; /** Document metadata */ metadata?: Record; /** Tags for categorization */ tags?: string[]; /** Embedding vector (for semantic search) */ embedding?: number[]; } /** * Document chunk for RAG */ export interface DocChunk { /** Chunk ID */ id: string; /** Parent document ID */ docId: string; /** Chunk content */ content: string; /** Chunk index in document */ index: number; /** Chunk metadata */ metadata?: Record; /** Chunk embedding */ embedding?: number[]; } /** * Search result */ export interface DocSearchResult { /** Document or chunk */ doc: Doc | DocChunk; /** Relevance score (0-1) */ score: number; /** Matched highlights */ highlights?: string[]; } /** * DocsManager configuration */ export interface DocsManagerConfig { /** Maximum documents to store */ maxDocs?: number; /** Enable automatic chunking */ autoChunk?: boolean; /** Chunk size (characters) */ chunkSize?: number; /** Chunk overlap */ chunkOverlap?: number; /** Embedding function */ embedder?: (text: string) => Promise; } /** * DocsManager - Manages documents for agents */ export declare class DocsManager { readonly id: string; private docs; private chunks; private config; constructor(config?: DocsManagerConfig); /** * Add a document */ addDocument(titleOrPath: string, content: string, options?: { type?: Doc['type']; metadata?: Record; tags?: string[]; }): Promise; /** * Chunk a document */ private chunkDocument; /** * Get a document by ID */ getDocument(id: string): Doc | undefined; /** * Get document chunks */ getChunks(docId: string): DocChunk[]; /** * Get all documents */ getAllDocuments(): Doc[]; /** * Search documents */ search(query: string, options?: { topK?: number; tags?: string[]; }): Promise; /** * Delete a document */ deleteDocument(id: string): boolean; /** * Update a document */ updateDocument(id: string, content: string): Promise; /** * Get documents by tag */ getByTag(tag: string): Doc[]; /** * Clear all documents */ clear(): void; /** * Get stats */ getStats(): { docCount: number; chunkCount: number; totalSize: number; }; /** * Detect document type from path/extension */ private detectType; /** * Calculate cosine similarity */ private cosineSimilarity; /** * Enforce document limit */ private enforceLimit; } /** * Create a docs manager */ export declare function createDocsManager(config?: DocsManagerConfig): DocsManager; export default DocsManager;