vibe-coder-mcp
Version:
Production-ready MCP server with complete agent integration, multi-transport support, and comprehensive development automation tools for AI-assisted workflows.
73 lines (72 loc) • 3.71 kB
JavaScript
import { OpenRouterConfigManager } from '../../utils/openrouter-config-manager.js';
import { JobTimeoutConfigManager } from '../../utils/job-timeout-config-manager.js';
import { ToolRegistry } from '../../services/routing/toolRegistry.js';
import { getUnifiedSecurityConfig } from '../../tools/vibe-task-manager/security/unified-security-config.js';
import { initializeToolEmbeddings } from '../../services/routing/embeddingStore.js';
import logger from '../../logger.js';
export class VibeAppInitializer {
initialized = false;
openRouterConfig = null;
async initializeCoreServices() {
if (this.initialized && this.openRouterConfig) {
logger.debug('Core services already initialized, returning cached config');
return this.openRouterConfig;
}
try {
logger.info('Starting CLI core services initialization');
logger.debug('Step 1: Initializing OpenRouterConfigManager');
const configManager = OpenRouterConfigManager.getInstance();
await configManager.initialize();
const openRouterConfig = await configManager.getOpenRouterConfig();
const mappingKeys = Object.keys(openRouterConfig.llm_mapping || {});
logger.info('Loaded OpenRouter configuration', {
hasApiKey: Boolean(openRouterConfig.apiKey),
baseUrl: openRouterConfig.baseUrl,
mappingLoaded: mappingKeys.length > 0,
numberOfMappings: mappingKeys.length
});
const validation = configManager.validateConfiguration();
if (!validation.valid) {
logger.error({ errors: validation.errors }, 'OpenRouter configuration validation failed');
throw new Error(`Configuration validation failed: ${validation.errors.join(', ')}`);
}
if (validation.warnings.length > 0) {
logger.warn({ warnings: validation.warnings }, 'OpenRouter configuration has warnings');
}
logger.debug('Step 2: Initializing JobTimeoutConfigManager');
const jobTimeoutManager = JobTimeoutConfigManager.getInstance();
await jobTimeoutManager.initialize();
logger.debug('Step 3: Initializing ToolRegistry with config');
ToolRegistry.getInstance(openRouterConfig);
logger.debug('Step 4: Importing tools for registration');
await import('../../tools/index.js');
await import('../../services/request-processor/index.js');
logger.debug('Step 5: Initializing UnifiedSecurityConfig');
const securityConfig = getUnifiedSecurityConfig();
securityConfig.initializeFromMCPConfig(openRouterConfig);
logger.info('Unified security configuration initialized');
logger.debug('Step 6: Initializing tool embeddings');
await initializeToolEmbeddings();
this.initialized = true;
this.openRouterConfig = openRouterConfig;
logger.info('CLI core services initialization completed successfully');
return openRouterConfig;
}
catch (error) {
logger.error({ err: error }, 'CLI initialization failed');
const message = error instanceof Error ? error.message : 'Unknown initialization error';
throw new Error(`Failed to initialize CLI: ${message}`);
}
}
isInitialized() {
return this.initialized;
}
getConfig() {
return this.openRouterConfig;
}
reset() {
this.initialized = false;
this.openRouterConfig = null;
}
}
export const appInitializer = new VibeAppInitializer();