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
text/typescript
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',
]),
};