UNPKG

deepsource-mcp-server

Version:
153 lines 4.71 kB
/** * @fileoverview Default configuration values for the DeepSource MCP server * * This module centralizes all default configuration values, providing * a single source of truth for server settings and constants. * * @packageDocumentation */ import { VERSION } from '../version.js'; /** * Default server configuration */ export const DEFAULT_SERVER_CONFIG = { name: 'deepsource-mcp-server', version: VERSION, autoRegisterTools: true, autoStart: false, logLevel: 'INFO', }; /** * Default API configuration */ export const DEFAULT_API_CONFIG = { baseUrl: 'https://api.deepsource.io/graphql', timeout: 30000, maxRetries: 3, retryBaseDelay: 1000, }; /** * Default tool discovery configuration */ export const DEFAULT_DISCOVERY_CONFIG = { directories: ['./src/tools', './plugins'], patterns: ['*.tool.js', '*.tool.mjs'], recursive: true, includeCategories: [], excludeCategories: [], includeTags: [], excludeTags: ['deprecated', 'experimental'], }; /** * Environment-specific discovery configuration */ export const DISCOVERY_CONFIG_BY_ENV = { production: { excludeTags: ['deprecated', 'experimental', 'development', 'test'], includeCategories: ['core', 'analytics', 'security', 'compliance'], }, development: { excludeTags: ['deprecated'], directories: ['./src/tools', './plugins', './src/tools/dev'], }, test: { directories: ['./src/tools/test'], excludeTags: [], }, }; /** * Tool categories enum */ export var ToolCategory; (function (ToolCategory) { ToolCategory["CORE"] = "core"; ToolCategory["ANALYTICS"] = "analytics"; ToolCategory["SECURITY"] = "security"; ToolCategory["COMPLIANCE"] = "compliance"; ToolCategory["UTILITIES"] = "utilities"; ToolCategory["DEVELOPMENT"] = "development"; ToolCategory["EXPERIMENTAL"] = "experimental"; })(ToolCategory || (ToolCategory = {})); /** * Tool tags enum */ export var ToolTag; (function (ToolTag) { ToolTag["STABLE"] = "stable"; ToolTag["BETA"] = "beta"; ToolTag["ALPHA"] = "alpha"; ToolTag["DEPRECATED"] = "deprecated"; ToolTag["EXPERIMENTAL"] = "experimental"; ToolTag["DEVELOPMENT"] = "development"; ToolTag["TEST"] = "test"; })(ToolTag || (ToolTag = {})); /** * Get configuration for the current environment * * @param env - Environment name (defaults to NODE_ENV or 'development') * @returns Merged configuration for the environment */ export function getEnvironmentConfig(env) { const environment = env || process.env.NODE_ENV || 'development'; return { server: DEFAULT_SERVER_CONFIG, api: DEFAULT_API_CONFIG, discovery: { ...DEFAULT_DISCOVERY_CONFIG, ...(DISCOVERY_CONFIG_BY_ENV[environment] || {}), }, }; } /** * Validation thresholds for configuration */ export const CONFIG_VALIDATION = { /** Minimum timeout in milliseconds */ MIN_TIMEOUT: 1000, /** Maximum timeout in milliseconds */ MAX_TIMEOUT: 300000, /** Minimum retry attempts */ MIN_RETRIES: 0, /** Maximum retry attempts */ MAX_RETRIES: 10, /** Valid log levels */ VALID_LOG_LEVELS: ['DEBUG', 'INFO', 'WARN', 'ERROR'], }; /** * Validate server configuration * * @param config - Configuration to validate * @throws Error if configuration is invalid */ export function validateServerConfig(config) { if (config.logLevel && !CONFIG_VALIDATION.VALID_LOG_LEVELS.includes(config.logLevel)) { throw new Error(`Invalid log level: ${config.logLevel}`); } if (config.name && config.name.trim().length === 0) { throw new Error('Server name cannot be empty'); } } /** * Validate API configuration * * @param config - Configuration to validate * @throws Error if configuration is invalid */ export function validateApiConfig(config) { if (config.timeout !== undefined) { if (config.timeout < CONFIG_VALIDATION.MIN_TIMEOUT || config.timeout > CONFIG_VALIDATION.MAX_TIMEOUT) { throw new Error(`Timeout must be between ${CONFIG_VALIDATION.MIN_TIMEOUT} and ${CONFIG_VALIDATION.MAX_TIMEOUT}`); } } if (config.maxRetries !== undefined) { if (config.maxRetries < CONFIG_VALIDATION.MIN_RETRIES || config.maxRetries > CONFIG_VALIDATION.MAX_RETRIES) { throw new Error(`Max retries must be between ${CONFIG_VALIDATION.MIN_RETRIES} and ${CONFIG_VALIDATION.MAX_RETRIES}`); } } if (config.baseUrl && !config.baseUrl.startsWith('http')) { throw new Error('API base URL must start with http:// or https://'); } } //# sourceMappingURL=default.js.map