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.

117 lines (116 loc) 4.25 kB
import { OpenRouterConfigManager } from './openrouter-config-manager.js'; import logger from '../logger.js'; export class ProductionConfigProvider { async getOpenRouterConfig() { return OpenRouterConfigManager.getInstance().getOpenRouterConfig(); } getModelForTask(taskName) { return OpenRouterConfigManager.getInstance().getModelForTask(taskName); } validateConfiguration() { return OpenRouterConfigManager.getInstance().validateConfiguration(); } isTestEnvironment() { return process.env.NODE_ENV === 'test'; } isCIEnvironment() { return (process.env.CI === 'true' || process.env.GITHUB_ACTIONS === 'true' || process.env.NODE_ENV === 'test' || process.env.VITEST === 'true'); } } export class TestConfigProvider { mockConfig = { baseUrl: 'https://test.openrouter.ai/api/v1', apiKey: 'ci-test-key-safe-provider', geminiModel: 'google/gemini-2.5-flash-preview-05-20', perplexityModel: 'perplexity/sonar', llm_mapping: { default_generation: 'google/gemini-2.5-flash-preview-05-20', task_decomposition: 'google/gemini-2.5-flash-preview-05-20', intent_recognition: 'google/gemini-2.5-flash-preview-05-20' } }; async getOpenRouterConfig() { return { baseUrl: this.mockConfig.baseUrl, apiKey: this.mockConfig.apiKey, geminiModel: this.mockConfig.geminiModel, perplexityModel: this.mockConfig.perplexityModel, llm_mapping: this.mockConfig.llm_mapping ? { ...this.mockConfig.llm_mapping } : undefined }; } getModelForTask(taskName) { return this.mockConfig.llm_mapping?.[taskName] ?? this.mockConfig.geminiModel; } validateConfiguration() { return { valid: true, errors: [], warnings: ['Using test configuration provider'], suggestions: [] }; } isTestEnvironment() { return true; } isCIEnvironment() { return true; } updateMockConfig(updates) { this.mockConfig = { ...this.mockConfig, ...updates }; logger.debug({ updates }, 'Updated test configuration provider'); } resetMockConfig() { this.mockConfig = { baseUrl: 'https://test.openrouter.ai/api/v1', apiKey: 'ci-test-key-safe-provider', geminiModel: 'google/gemini-2.5-flash-preview-05-20', perplexityModel: 'perplexity/sonar', llm_mapping: { default_generation: 'google/gemini-2.5-flash-preview-05-20', task_decomposition: 'google/gemini-2.5-flash-preview-05-20', intent_recognition: 'google/gemini-2.5-flash-preview-05-20' } }; logger.debug('Reset test configuration provider to defaults'); } } export function createConfigProvider() { const isCIOrTest = (process.env.CI === 'true' || process.env.NODE_ENV === 'test' || process.env.VITEST === 'true' || process.env.CI_SAFE_MODE === 'true'); if (isCIOrTest && process.env.FORCE_REAL_LLM_CONFIG !== 'true') { logger.debug('Creating test configuration provider for CI/test environment'); return new TestConfigProvider(); } else { logger.debug('Creating production configuration provider'); return new ProductionConfigProvider(); } } let globalConfigProvider = null; export function getConfigProvider() { if (!globalConfigProvider) { globalConfigProvider = createConfigProvider(); } return globalConfigProvider; } export function setConfigProvider(provider) { globalConfigProvider = provider; logger.debug('Global configuration provider overridden'); } export function resetConfigProvider() { globalConfigProvider = null; logger.debug('Global configuration provider reset'); } export async function getOpenRouterConfig() { const provider = getConfigProvider(); return await provider.getOpenRouterConfig(); } export function getModelForTask(taskName) { const provider = getConfigProvider(); return provider.getModelForTask(taskName); }