UNPKG

ken-you-code

Version:

Connect your codebase to Kimi: Ultra-fast AI code analysis with Kimi-K2 model via MCP

76 lines (69 loc) 1.9 kB
import { config as dotenvConfig } from 'dotenv'; import path from 'path'; import fs from 'fs'; // Load from user config first, then fall back to local .env const homeDir = process.env.HOME || process.env.USERPROFILE || ''; const userConfigPath = path.join(homeDir, '.mcp', 'ken-you-code.env'); const fallbackConfigPath = path.join(homeDir, '.mcp', 'single-model-specialist.env'); if (fs.existsSync(userConfigPath)) { dotenvConfig({ path: userConfigPath }); } else if (fs.existsSync(fallbackConfigPath)) { dotenvConfig({ path: fallbackConfigPath }); } else { dotenvConfig(); // Fall back to local .env } export interface Config { openRouterApiKey: string; workspaceRoot?: string; logLevel: string; defaultModel: string; maxFileSizeMB: number; allowedExtensions: string[]; } function getEnvVar(name: string, defaultValue?: string): string { const value = process.env[name]; if (!value) { if (defaultValue === undefined) { throw new Error(`Environment variable ${name} is required`); } return defaultValue; } return value; } function getEnvArray(name: string, defaultValue: string[]): string[] { const value = process.env[name]; if (!value) { return defaultValue; } return value.split(',').map((item) => item.trim()); } export const config: Config = { openRouterApiKey: getEnvVar('OPENROUTER_API_KEY'), workspaceRoot: process.env.WORKSPACE_ROOT, logLevel: getEnvVar('LOG_LEVEL', 'INFO'), defaultModel: getEnvVar('DEFAULT_MODEL', 'moonshotai/kimi-k2'), maxFileSizeMB: parseInt(getEnvVar('MAX_FILE_SIZE_MB', '5'), 10), allowedExtensions: getEnvArray('ALLOWED_EXTENSIONS', [ '.py', '.js', '.ts', '.tsx', '.jsx', '.md', '.json', '.yaml', '.yml', '.txt', '.html', '.css', '.sql', '.sh', '.go', '.rs', '.java', '.c', '.cpp', '.h', '.hpp', ]), };