UNPKG

mem100x

Version:

⚡ The FASTEST MCP memory server ever built - 66k+ entities/sec with intelligent context detection

107 lines 4.16 kB
"use strict"; /** * Configuration management using dotenv */ Object.defineProperty(exports, "__esModule", { value: true }); exports.configSchema = exports.config = void 0; exports.loadConfig = loadConfig; const dotenv_1 = require("dotenv"); const zod_1 = require("zod"); // Load environment variables (0, dotenv_1.config)(); // Configuration schema const configSchema = zod_1.z.object({ // Database Configuration database: zod_1.z.object({ path: zod_1.z.string().default('./data/memory.db'), cacheSizeMb: zod_1.z.number().default(64), mmapSizeMb: zod_1.z.number().default(256), }), // Performance Configuration performance: zod_1.z.object({ entityCacheSize: zod_1.z.number().default(5000), searchCacheSize: zod_1.z.number().default(1000), relationQueryThreshold: zod_1.z.number().default(200), compressionEnabled: zod_1.z.boolean().default(true), cacheStrategy: zod_1.z.enum(['lru', '2q', 'arc', 'radix']).default('lru'), }), // Bloom Filter Configuration bloomFilter: zod_1.z.object({ expectedItems: zod_1.z.number().default(50000), falsePositiveRate: zod_1.z.number().default(0.001), }), // Multi-Context Configuration multiContext: zod_1.z.object({ personalDbPath: zod_1.z.string().default('./data/personal.db'), workDbPath: zod_1.z.string().default('./data/work.db'), defaultContext: zod_1.z.enum(['personal', 'work']).default('personal'), }), // Logging Configuration logging: zod_1.z.object({ level: zod_1.z.enum(['error', 'warn', 'info', 'debug']).default('info'), }), // Server Configuration server: zod_1.z.object({ port: zod_1.z.number().default(3000), host: zod_1.z.string().default('localhost'), }), }); exports.configSchema = configSchema; // Parse configuration from environment function loadConfig() { const rawConfig = { database: { path: process.env.DATABASE_PATH, cacheSizeMb: process.env.DATABASE_CACHE_SIZE_MB ? parseInt(process.env.DATABASE_CACHE_SIZE_MB, 10) : undefined, mmapSizeMb: process.env.DATABASE_MMAP_SIZE_MB ? parseInt(process.env.DATABASE_MMAP_SIZE_MB, 10) : undefined, }, performance: { entityCacheSize: process.env.ENTITY_CACHE_SIZE ? parseInt(process.env.ENTITY_CACHE_SIZE, 10) : undefined, searchCacheSize: process.env.SEARCH_CACHE_SIZE ? parseInt(process.env.SEARCH_CACHE_SIZE, 10) : undefined, relationQueryThreshold: process.env.RELATION_QUERY_THRESHOLD ? parseInt(process.env.RELATION_QUERY_THRESHOLD, 10) : undefined, compressionEnabled: process.env.COMPRESSION_ENABLED ? process.env.COMPRESSION_ENABLED === 'true' : undefined, cacheStrategy: process.env.CACHE_STRATEGY, }, bloomFilter: { expectedItems: process.env.BLOOM_FILTER_EXPECTED_ITEMS ? parseInt(process.env.BLOOM_FILTER_EXPECTED_ITEMS, 10) : undefined, falsePositiveRate: process.env.BLOOM_FILTER_FALSE_POSITIVE_RATE ? parseFloat(process.env.BLOOM_FILTER_FALSE_POSITIVE_RATE) : undefined, }, multiContext: { personalDbPath: process.env.PERSONAL_DB_PATH, workDbPath: process.env.WORK_DB_PATH, defaultContext: process.env.DEFAULT_CONTEXT, }, logging: { level: process.env.LOG_LEVEL, }, server: { port: process.env.SERVER_PORT ? parseInt(process.env.SERVER_PORT, 10) : undefined, host: process.env.SERVER_HOST, }, }; // Remove undefined values const cleanConfig = JSON.parse(JSON.stringify(rawConfig)); // Parse and validate return configSchema.parse(cleanConfig); } // Export singleton config exports.config = loadConfig(); //# sourceMappingURL=config.js.map