mem100x
Version:
⚡ The FASTEST MCP memory server ever built - 66k+ entities/sec with intelligent context detection
107 lines • 4.16 kB
JavaScript
;
/**
* 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