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
JavaScript
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);
}