dependency-context
Version:
MCP server for providing dependency documentation context to AI assistants
99 lines • 3.49 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.getConfig = getConfig;
const dotenv_1 = __importDefault(require("dotenv"));
const path_1 = __importDefault(require("path"));
const fs_extra_1 = __importDefault(require("fs-extra"));
// Load environment variables
dotenv_1.default.config();
// Default configuration
const defaultConfig = {
port: 3000,
embeddingModel: 'Xenova/all-MiniLM-L6-v2',
storageDir: '.dependency-context',
debugMode: false,
minChunkSize: 800,
maxChunkSize: 8000,
chunksReturned: 5
};
/**
* Get configuration from environment variables
*/
function getConfig(projectPath) {
const config = { ...defaultConfig };
// Server configuration
if (process.env.PORT) {
config.port = parseInt(process.env.PORT, 10);
}
// GitHub token
if (process.env.GITHUB_TOKEN) {
config.githubToken = process.env.GITHUB_TOKEN;
}
// Embedding model
if (process.env.MODEL_NAME) {
config.embeddingModel = process.env.MODEL_NAME;
}
// Debug mode
if (process.env.DEBUG === 'true') {
config.debugMode = true;
}
// Chunk sizes
if (process.env.MIN_CHUNK_SIZE) {
config.minChunkSize = parseInt(process.env.MIN_CHUNK_SIZE, 10);
}
if (process.env.MAX_CHUNK_SIZE) {
config.maxChunkSize = parseInt(process.env.MAX_CHUNK_SIZE, 10);
}
// Number of chunks to return in search results
if (process.env.CHUNKS_RETURNED) {
config.chunksReturned = parseInt(process.env.CHUNKS_RETURNED, 10);
}
// Try to load project-specific .env if a project path is provided
if (projectPath) {
tryLoadProjectEnv(projectPath, config);
}
return config;
}
/**
* Try to load environment variables from a project's .env file
*/
function tryLoadProjectEnv(projectPath, config) {
const envPaths = [
path_1.default.join(projectPath, '.env'),
path_1.default.join(projectPath, '.env.dependency-context')
];
for (const envPath of envPaths) {
if (fs_extra_1.default.existsSync(envPath)) {
try {
const envConfig = dotenv_1.default.parse(fs_extra_1.default.readFileSync(envPath));
// Update config with project-specific values
if (envConfig.GITHUB_TOKEN) {
config.githubToken = envConfig.GITHUB_TOKEN;
}
if (envConfig.MODEL_NAME) {
config.embeddingModel = envConfig.MODEL_NAME;
}
if (envConfig.DEBUG === 'true') {
config.debugMode = true;
}
if (envConfig.MIN_CHUNK_SIZE) {
config.minChunkSize = parseInt(envConfig.MIN_CHUNK_SIZE, 10);
}
if (envConfig.MAX_CHUNK_SIZE) {
config.maxChunkSize = parseInt(envConfig.MAX_CHUNK_SIZE, 10);
}
if (envConfig.CHUNKS_RETURNED) {
config.chunksReturned = parseInt(envConfig.CHUNKS_RETURNED, 10);
}
break; // Stop after first valid .env file
}
catch (error) {
console.warn(`Warning: Error loading env file ${envPath}:`, error);
}
}
}
}
//# sourceMappingURL=config.js.map