#!/usr/bin/env node
// Simple demonstration of cognitive learning from compilation errors
// Shows how the MCP cognitive system learns and improves itself
console.log('š§ MCP Cognitive Platform - Self-Improvement Demonstration\n');
console.log('Scenario: Learning from TypeScript compilation errors\n');
// Phase 1: Error Analysis
console.log('š Phase 1: Analyzing Compilation Errors');
const compilationErrors = [
{
file: 'src/adapters/mcp-prompts-client.ts',
error: "Cannot find module 'flatbuffers'",
category: 'missing-dependency',
severity: 'error'
},
{
file: 'src/domains/code-intel/index.ts',
error: "Cannot find module './cppcheck-analyzer.js'",
category: 'missing-file',
severity: 'error'
},
{
file: 'src/services/knowledge-capture.service.ts',
error: "Type 'Set<string>' can only be iterated with --downlevelIteration",
category: 'typescript-target',
severity: 'error'
}
];
console.log(`Found ${compilationErrors.length} compilation errors:`);
compilationErrors.forEach((error, i) => {
console.log(` ${i + 1}. ${error.category}: ${error.error}`);
});
console.log();
// Phase 2: Episode Creation
console.log('šÆ Phase 2: Creating Learning Episodes');
const episodes = [];
// Group errors by category and create episodes
const errorGroups = {};
compilationErrors.forEach(error => {
if (!errorGroups[error.category]) {
errorGroups[error.category] = [];
}
errorGroups[error.category].push(error);
});
Object.keys(errorGroups).forEach(category => {
const errors = errorGroups[category];
episodes.push({
problem: `TypeScript compilation errors in ${category} category`,
symptoms: errors.map(e => e.error),
investigation: [
`Analyzed ${errors.length} errors in ${category} category`,
'Checked package.json dependencies',
'Verified file existence',
'Reviewed TypeScript configuration'
],
solution: generateSolutionForCategory(category, errors),
outcome: 'success',
cognitive_load: errors.length * 2,
tags: ['typescript', 'compilation', category, 'learning']
});
});
function generateSolutionForCategory(category, errors) {
switch (category) {
case 'missing-dependency':
return 'Install missing dependencies and update package.json';
case 'missing-file':
return 'Create missing implementation files or update imports';
case 'typescript-target':
return 'Update TypeScript target or add downlevelIteration flag';
default:
return 'Apply general TypeScript compilation error fixes';
}
}
console.log(`Created ${episodes.length} learning episodes`);
episodes.forEach((episode, i) => {
console.log(` Episode ${i + 1}: ${episode.problem}`);
console.log(` Symptoms: ${episode.symptoms.length} error patterns`);
console.log(` Solution: ${episode.solution}`);
});
console.log();
// Phase 3: Pattern Synthesis
console.log('š Phase 3: Synthesizing Patterns');
const patterns = [];
// Pattern 1: Missing dependency pattern
const missingDepEpisodes = episodes.filter(e =>
e.symptoms.some(s => s.includes('Cannot find module'))
);
if (missingDepEpisodes.length > 0) {
patterns.push({
id: 'missing-dependency-pattern',
name: 'Missing Dependency Resolution',
description: 'Pattern for resolving missing module dependencies in TypeScript projects',
confidence: 0.85,
occurrences: missingDepEpisodes.length,
solution: 'Install missing packages and update package.json dependencies',
prevention: 'Use dependency analysis tools before compilation'
});
}
// Pattern 2: TypeScript target issues
const tsTargetEpisodes = episodes.filter(e =>
e.symptoms.some(s => s.includes('downlevelIteration') || s.includes('target'))
);
if (tsTargetEpisodes.length > 0) {
patterns.push({
id: 'typescript-target-pattern',
name: 'TypeScript Target Compatibility',
description: 'Pattern for handling TypeScript target and iteration issues',
confidence: 0.90,
occurrences: tsTargetEpisodes.length,
solution: 'Update tsconfig.json target to ES2015+ or add --downlevelIteration',
prevention: 'Use consistent TypeScript targets across projects'
});
}
console.log(`Discovered ${patterns.length} patterns:`);
patterns.forEach((pattern, i) => {
console.log(` Pattern ${i + 1}: ${pattern.name}`);
console.log(` Confidence: ${(pattern.confidence * 100).toFixed(1)}%`);
console.log(` Based on: ${pattern.occurrences} episodes`);
console.log(` Solution: ${pattern.solution}`);
});
console.log();
// Phase 4: Solution Generation
console.log('š” Phase 4: Generating Solutions');
const solutions = [];
patterns.forEach(pattern => {
solutions.push({
patternId: pattern.id,
title: `Solution for ${pattern.name}`,
steps: generateSolutionSteps(pattern),
automated: true,
confidence: pattern.confidence,
estimatedTime: Math.min(5 * (pattern.occurrences || 1), 60)
});
});
function generateSolutionSteps(pattern) {
switch (pattern.id) {
case 'missing-dependency-pattern':
return [
'Identify missing packages from error messages',
'Check if packages are available in workspace',
'Add dependencies to package.json',
'Run npm/pnpm install',
'Verify imports are correct'
];
case 'typescript-target-pattern':
return [
'Check current TypeScript target in tsconfig.json',
'Update target to ES2015 or higher',
'Add --downlevelIteration flag if needed',
'Rebuild and test compilation'
];
default:
return ['Analyze error details', 'Apply appropriate fix', 'Test solution'];
}
}
console.log(`Generated ${solutions.length} solution approaches`);
solutions.forEach((solution, i) => {
console.log(` Solution ${i + 1}: ${solution.title}`);
console.log(` Steps: ${solution.steps.length}`);
console.log(` Automated: ${solution.automated ? 'Yes' : 'No'}`);
console.log(` Est. Time: ${solution.estimatedTime} minutes`);
});
console.log();
// Phase 5: Self-Improvement
console.log('š Phase 5: Applying Self-Improvement');
const improvements = [];
solutions.forEach(solution => {
console.log(` Applying: ${solution.title}`);
improvements.push({
solutionId: solution.patternId,
applied: true,
timestamp: new Date().toISOString(),
automatedSteps: solution.steps.length,
estimatedTime: solution.estimatedTime
});
});
console.log(`Applied ${improvements.length} improvements\n`);
// Phase 6: Validation
console.log('ā
Phase 6: Validating Improvements');
const validation = {
success: true,
details: [
'Dependency issues resolved by installing missing packages',
'TypeScript target updated to ES2015+',
'Missing files created with stub implementations',
'Type safety improved with proper imports'
]
};
console.log(`Validation: ${validation.success ? 'PASSED' : 'NEEDS WORK'}`);
validation.details.forEach(detail => {
console.log(` ā ${detail}`);
});
console.log();
// Phase 7: Learning Insights
console.log('š Phase 7: Generating Learning Insights');
const successRate = episodes.filter(e => e.outcome === 'success').length / episodes.length;
const insights = [
`Learning effectiveness: ${(successRate * 100).toFixed(1)}% success rate`,
`Discovered ${patterns.length} reusable patterns from ${episodes.length} episodes`,
`Identified ${Object.keys(errorGroups).length} distinct error categories for targeted learning`,
validation.success ? 'Self-improvement loop successfully resolved compilation issues' : 'Additional learning cycles needed'
];
console.log('Key Insights:');
insights.forEach((insight, i) => console.log(` ${i + 1}. ${insight}`));
console.log();
// Phase 8: Future Recommendations
console.log('šÆ Phase 8: Future Learning Recommendations');
const recommendations = [
'Implement pre-compilation dependency checking',
'Add automated TypeScript target validation',
'Create template files for common missing implementations',
'Enhance error pattern recognition for faster resolution',
'Implement proactive dependency management',
'Add compilation error prediction based on code changes'
];
recommendations.forEach((rec, i) => console.log(` ${i + 1}. ${rec}`));
console.log();
console.log('š Cognitive Learning Cycle Complete!');
console.log(`š Summary: ${episodes.length} episodes, ${patterns.length} patterns, ${insights.length} insights, ${recommendations.length} recommendations`);
console.log('\nšÆ Demonstrated Capabilities:');
console.log(' ā
Error pattern recognition and categorization');
console.log(' ā
Episode creation from problem-solving experiences');
console.log(' ā
Pattern synthesis from multiple similar episodes');
console.log(' ā
Automated solution generation');
console.log(' ā
Self-improvement through applied learning');
console.log(' ā
Validation and continuous improvement');
console.log(' ā
Insight generation for future learning');
console.log(' ā
Proactive recommendation system');
console.log('\nš Self-Improvement Loop Triggered:');
console.log(' 1. Compilation errors detected ā Learning episodes created');
console.log(' 2. Episodes analyzed ā Patterns synthesized');
console.log(' 3. Patterns processed ā Solutions generated');
console.log(' 4. Solutions applied ā System improved');
console.log(' 5. Improvements validated ā Knowledge updated');
console.log(' 6. Insights generated ā Future learning enhanced');
console.log(' 7. Recommendations made ā Proactive improvement enabled');