bc-code-intelligence-mcp
Version:
BC Code Intelligence MCP Server - Complete Specialist Bundle with AI-driven expert consultation, seamless handoffs, and context-preserving workflows
104 lines ⢠4.86 kB
JavaScript
/**
* Test Enhanced Layer Service with Configuration System
* Run with: npm run dev -- --test-enhanced-layers
*/
import { ConfigurationLoader } from './config-loader.js';
import { MultiContentLayerService } from '../services/multi-content-layer-service.js';
import { LayerSourceType } from '../types/index.js';
async function testEnhancedLayerService() {
console.log('š§ Testing Enhanced Layer Service...');
try {
// 1. Load configuration
console.log('š Loading configuration...');
const configLoader = new ConfigurationLoader();
const configResult = await configLoader.loadConfiguration();
if (configResult.validation_errors.length > 0) {
console.error('ā Configuration validation errors:');
configResult.validation_errors.forEach(error => {
console.error(` - ${error.field}: ${error.message}`);
});
return;
}
console.log(`ā
Configuration loaded with ${configResult.config.layers.length} layers`);
// 2. Add a git layer for testing (if not in environment)
if (!process.env['BCKB_COMPANY_KNOWLEDGE_URL']) {
configResult.config.layers.push({
name: 'test-git-layer',
priority: 50,
source: {
type: LayerSourceType.GIT,
url: 'https://github.com/microsoft/vscode-docs',
branch: 'main',
subpath: 'docs'
},
enabled: true
});
console.log('š¦ Added test git layer for demonstration');
}
// 3. Create enhanced layer service
console.log('šļø Creating enhanced layer service...');
const layerService = new MultiContentLayerService();
// 4. Initialize from configuration
console.log('š Initializing layers from configuration...');
const initResults = await layerService.initializeFromConfiguration(configResult.config);
console.log('\nš Layer Initialization Results:');
console.log('ā'.repeat(60));
let totalTopics = 0;
let successfulLayers = 0;
for (const [layerName, result] of initResults) {
const status = result.success ? 'ā
' : 'ā';
console.log(`${status} ${result.layer_name}:`);
console.log(` Layer: ${layerName}`);
console.log(` Topics: ${result.content_counts.topics || 0}`);
console.log(` Specialists: ${result.content_counts.specialists || 0}`);
console.log(` Load time: ${result.load_time_ms}ms`);
if (result.error) {
console.log(` Error: ${result.error}`);
}
if (result.success) {
totalTopics += result.content_counts.topics || 0;
successfulLayers++;
}
console.log();
}
console.log('š Summary:');
console.log(` Successful layers: ${successfulLayers}/${initResults.size}`);
console.log(` Total topics loaded: ${totalTopics}`);
// 5. Test topic resolution
if (successfulLayers > 0) {
console.log('\nš Testing topic resolution...');
// Test getting a topic
const testTopic = await layerService.resolveTopic('performance/sift-optimization');
if (testTopic) {
console.log(`ā
Resolved topic: ${testTopic.topic.id}`);
console.log(` Source layer: ${testTopic.sourceLayer}`);
console.log(` Is override: ${testTopic.isOverride}`);
}
else {
console.log('ā¹ļø No SIFT optimization topic found (expected for test setup)');
}
// Test search functionality
const searchResults = await layerService.searchTopics({
domain: 'performance',
limit: 3
});
console.log(`\nš Search results for performance domain (${searchResults.length}):`);
searchResults.slice(0, 3).forEach((result, index) => {
console.log(` ${index + 1}. ${result.id}: ${result.title}`);
console.log(` Relevance: ${result.relevance_score?.toFixed(2) || 'N/A'}`);
});
}
console.log('\nā
Enhanced layer service test completed successfully!');
}
catch (error) {
console.error('ā Enhanced layer service test failed:', error instanceof Error ? error.message : String(error));
throw error;
}
}
// Export for use in other tests
export { testEnhancedLayerService };
// Run if called directly
if (process.argv.includes('--test-enhanced-layers')) {
testEnhancedLayerService().catch(console.error);
}
//# sourceMappingURL=test-enhanced-layer-service.js.map