UNPKG

contextual-agent-sdk

Version:

SDK for building AI agents with seamless voice-text context switching

88 lines 4.43 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.StorageFactory = void 0; const RedisStorageProvider_1 = require("./RedisStorageProvider"); const MongoStorageProvider_1 = require("./MongoStorageProvider"); const MemoryStorageProvider_1 = require("./MemoryStorageProvider"); class StorageFactory { static createProvider(factoryConfig) { if (!factoryConfig) { console.warn('No storage configuration provided. Using in-memory storage (not recommended for production).'); return new MemoryStorageProvider_1.MemoryStorageProvider(); } switch (factoryConfig.type) { case 'redis': if (!factoryConfig.config?.url) { console.warn('Redis URL not provided. Falling back to in-memory storage.'); return new MemoryStorageProvider_1.MemoryStorageProvider(); } return new RedisStorageProvider_1.RedisStorageProvider(factoryConfig.config); case 'mongodb': if (!factoryConfig.config?.url) { console.warn('MongoDB URL not provided. Falling back to in-memory storage.'); return new MemoryStorageProvider_1.MemoryStorageProvider(); } return new MongoStorageProvider_1.MongoStorageProvider(factoryConfig.config); case 'memory': if (process.env.NODE_ENV === 'production') { console.warn('Using in-memory storage in production is not recommended.'); } return new MemoryStorageProvider_1.MemoryStorageProvider(factoryConfig.config); default: console.warn('Unknown storage type. Using in-memory storage.'); return new MemoryStorageProvider_1.MemoryStorageProvider(); } } static createFromEnv() { if (process.env.REDIS_URL) { return StorageFactory.createProvider({ type: 'redis', config: { url: process.env.REDIS_URL, username: process.env.REDIS_USERNAME, password: process.env.REDIS_PASSWORD, ssl: process.env.REDIS_SSL === 'true', maxConnections: process.env.REDIS_MAX_CONNECTIONS ? parseInt(process.env.REDIS_MAX_CONNECTIONS) : undefined, timeout: process.env.REDIS_TIMEOUT ? parseInt(process.env.REDIS_TIMEOUT) : undefined, maxAge: process.env.SESSION_MAX_AGE ? parseInt(process.env.SESSION_MAX_AGE) : 3600000, cleanupInterval: process.env.SESSION_CLEANUP_INTERVAL ? parseInt(process.env.SESSION_CLEANUP_INTERVAL) : 600000 } }); } if (process.env.MONGODB_URL) { return StorageFactory.createProvider({ type: 'mongodb', config: { url: process.env.MONGODB_URL, username: process.env.MONGODB_USERNAME, password: process.env.MONGODB_PASSWORD, ssl: process.env.MONGODB_SSL === 'true', certPath: process.env.MONGODB_CERT_PATH, maxConnections: process.env.MONGODB_MAX_CONNECTIONS ? parseInt(process.env.MONGODB_MAX_CONNECTIONS) : undefined, timeout: process.env.MONGODB_TIMEOUT ? parseInt(process.env.MONGODB_TIMEOUT) : undefined, maxAge: process.env.SESSION_MAX_AGE ? parseInt(process.env.SESSION_MAX_AGE) : 3600000, cleanupInterval: process.env.SESSION_CLEANUP_INTERVAL ? parseInt(process.env.SESSION_CLEANUP_INTERVAL) : 600000 } }); } return StorageFactory.createProvider({ type: 'memory', config: { maxAge: process.env.SESSION_MAX_AGE ? parseInt(process.env.SESSION_MAX_AGE) : 3600000, cleanupInterval: process.env.SESSION_CLEANUP_INTERVAL ? parseInt(process.env.SESSION_CLEANUP_INTERVAL) : 600000 } }); } } exports.StorageFactory = StorageFactory; //# sourceMappingURL=StorageFactory.js.map