UNPKG

@masuidrive/bloom-local-rag

Version:

RAG (Retrieval-Augmented Generation) system for local directories - Index and search your documents with AI-powered answers

66 lines 2.6 kB
import { readFile, writeFile, mkdir } from 'fs/promises'; import { join } from 'path'; import { ConfigSchema, MetadataSchema, CacheSchema } from '../types/index.js'; import { BLOOM_DIR, CONFIG_FILE, METADATA_FILE, CACHE_FILE } from './constants.js'; export async function ensureBloomDir(directory) { const bloomDir = join(directory, BLOOM_DIR); await mkdir(bloomDir, { recursive: true }); return bloomDir; } export async function loadConfig(directory) { const configPath = join(directory, BLOOM_DIR, CONFIG_FILE); const content = await readFile(configPath, 'utf-8'); return ConfigSchema.parse(JSON.parse(content)); } export async function saveConfig(directory, config) { const bloomDir = await ensureBloomDir(directory); const configPath = join(bloomDir, CONFIG_FILE); await writeFile(configPath, JSON.stringify(config, null, 2)); } export async function loadMetadata(directory) { try { const metadataPath = join(directory, BLOOM_DIR, METADATA_FILE); const content = await readFile(metadataPath, 'utf-8'); return MetadataSchema.parse(JSON.parse(content)); } catch { return null; } } export async function saveMetadata(directory, metadata) { const bloomDir = await ensureBloomDir(directory); const metadataPath = join(bloomDir, METADATA_FILE); await writeFile(metadataPath, JSON.stringify(metadata, null, 2)); } export async function loadCache(directory) { try { const cachePath = join(directory, BLOOM_DIR, CACHE_FILE); const content = await readFile(cachePath, 'utf-8'); return CacheSchema.parse(JSON.parse(content)); } catch { return { version: '1.0', entries: {} }; } } export async function saveCache(directory, cache) { const bloomDir = await ensureBloomDir(directory); const cachePath = join(bloomDir, CACHE_FILE); await writeFile(cachePath, JSON.stringify(cache, null, 2)); } export function getApiKey(provider) { if (provider === 'gemini') { const key = process.env.GOOGLE_GENERATIVE_AI_API_KEY || process.env.GOOGLE_API_KEY || process.env.GEMINI_API_KEY; if (!key) { throw new Error('Gemini API key not found. Please set GOOGLE_GENERATIVE_AI_API_KEY, GOOGLE_API_KEY or GEMINI_API_KEY environment variable.'); } return key; } else { const key = process.env.OPENAI_API_KEY; if (!key) { throw new Error('OpenAI API key not found. Please set OPENAI_API_KEY environment variable.'); } return key; } } //# sourceMappingURL=config.js.map