mcp-chain-of-draft-server
Version:
A Model Context Protocol server which provides Chain of Draft style thinking
44 lines (43 loc) • 1.67 kB
JavaScript
import { SessionManager, InMemorySessionStorage } from './sessionManager.js';
import { logger } from './logging.js';
export class SessionManagerFactory {
constructor() {
// Initialize session managers with default options
const defaultOptions = {
maxSessionAge: 24 * 60 * 60 * 1000, // 24 hours
maxSessionSize: 5 * 1024 * 1024, // 5MB
cleanupIntervalMs: 60 * 60 * 1000 // 1 hour
};
this.sessionManagers = {
apiBlueprint: new SessionManager(new InMemorySessionStorage(), defaultOptions),
adr: new SessionManager(new InMemorySessionStorage(), defaultOptions),
codeReview: new SessionManager(new InMemorySessionStorage(), defaultOptions),
implementationStrategy: new SessionManager(new InMemorySessionStorage(), defaultOptions)
};
logger.info('SessionManagerFactory initialized');
}
static getInstance() {
if (!SessionManagerFactory.instance) {
SessionManagerFactory.instance = new SessionManagerFactory();
}
return SessionManagerFactory.instance;
}
getAPIBlueprintManager() {
return this.sessionManagers.apiBlueprint;
}
getADRManager() {
return this.sessionManagers.adr;
}
getCodeReviewManager() {
return this.sessionManagers.codeReview;
}
getImplementationStrategyManager() {
return this.sessionManagers.implementationStrategy;
}
cleanup() {
Object.values(this.sessionManagers).forEach(manager => {
manager.destroy();
});
logger.info('All session managers cleaned up');
}
}