@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
JavaScript
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