UNPKG

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
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();