csvlod-ai-mcp-server
Version:
CSVLOD-AI MCP Server v3.0 with Quantum Context Intelligence - Revolutionary Context Intelligence Engine and Multimodal Processor for sovereign AI development
308 lines (239 loc) • 10.9 kB
text/typescript
import { jest } from '@jest/globals';
import { CSVLODContext } from '../../src/context.js';
import { CSVLODValidator } from '../../src/validator.js';
import { CSVLODGenerator } from '../../src/generator.js';
import { LocalMCPRegistry } from '../../src/registry.js';
import { SwarmCoordinator } from '../../src/swarm.js';
import * as fs from 'fs/promises';
import * as path from 'path';
import * as os from 'os';
describe('CSVLOD-AI Individual Tools Tests v3.0 - Corrected Interfaces', () => {
let tempDir: string;
beforeEach(async () => {
tempDir = await fs.mkdtemp(path.join(os.tmpdir(), 'csvlod-test-'));
});
afterEach(async () => {
await fs.rm(tempDir, { recursive: true, force: true });
});
describe('Tool 1: CSVLOD Context (csvlod_init)', () => {
test('should initialize basic CSVLOD structure', async () => {
const context = new CSVLODContext();
const result = await context.initialize(tempDir, 'basic');
expect(result).toBeDefined();
expect(result.summary).toContain('CSVLOD');
expect(result.filesCreated).toBeInstanceOf(Array);
expect(result.filesCreated.length).toBeGreaterThan(0);
});
test('should complete initialization within performance target', async () => {
const context = new CSVLODContext();
const startTime = Date.now();
await context.initialize(tempDir, 'minimal');
const duration = Date.now() - startTime;
expect(duration).toBeLessThan(2000); // 2 seconds
});
});
describe('Tool 2: CSVLOD Validator (csvlod_validate)', () => {
test('should validate CSVLOD compliance', async () => {
// First initialize a project
const context = new CSVLODContext();
await context.initialize(tempDir, 'basic');
const validator = new CSVLODValidator();
const result = await validator.validate(tempDir);
expect(result).toBeDefined();
expect(result.valid).toBeDefined();
expect(result.score).toBeGreaterThanOrEqual(0);
expect(result.issues).toBeInstanceOf(Array);
expect(result.suggestions).toBeInstanceOf(Array);
});
test('should handle strict validation mode', async () => {
const validator = new CSVLODValidator();
const result = await validator.validate(tempDir, { strict: true });
expect(result).toBeDefined();
expect(result.valid).toBe(false); // Empty directory should fail validation
});
});
describe('Tool 3: CSVLOD Generator (csvlod_generate)', () => {
test('should generate context component', async () => {
const generator = new CSVLODGenerator();
const result = await generator.generate('context', tempDir);
expect(result).toBeDefined();
expect(result.filesGenerated).toBeInstanceOf(Array);
});
test('should generate manifest component', async () => {
const generator = new CSVLODGenerator();
const result = await generator.generate('manifest', tempDir);
expect(result).toBeDefined();
expect(result.filesGenerated).toBeInstanceOf(Array);
});
});
describe('Tool 4: CSVLOD Analyzer (csvlod_analyze)', () => {
test('should analyze context effectiveness', async () => {
// First initialize a project
const context = new CSVLODContext();
await context.initialize(tempDir, 'basic');
const analysis = await context.analyze(tempDir);
expect(analysis).toBeDefined();
expect(analysis.score).toBeGreaterThanOrEqual(0);
expect(analysis.strengths).toBeInstanceOf(Array);
expect(analysis.improvements).toBeInstanceOf(Array);
});
test('should include detailed metrics when requested', async () => {
const context = new CSVLODContext();
await context.initialize(tempDir, 'basic');
const analysis = await context.analyze(tempDir, { includeMetrics: true });
expect(analysis.metrics).toBeDefined();
expect(analysis.metrics?.contextCoverage).toBeGreaterThanOrEqual(0);
});
});
describe('Tool 5: MCP Registry (mcp_registry)', () => {
let registry: LocalMCPRegistry;
beforeEach(() => {
registry = new LocalMCPRegistry();
});
test('should sync registry', async () => {
const result = await registry.execute('sync');
expect(result).toBeDefined();
expect(result.success).toBe(true);
expect(result.message).toContain('sync');
});
test('should search registry', async () => {
const result = await registry.execute('search', { query: 'test' });
expect(result).toBeDefined();
expect(result.success).toBe(true);
expect(result.message).toContain('search');
expect(result.data).toBeDefined();
});
test('should install from registry', async () => {
const result = await registry.execute('install', { query: 'test-server' });
expect(result).toBeDefined();
expect(result.success).toBe(true);
expect(result.message).toContain('install');
});
test('should list registry contents', async () => {
const result = await registry.execute('list');
expect(result).toBeDefined();
expect(result.success).toBe(true);
expect(result.message).toContain('list');
expect(result.data).toBeDefined();
});
test('should handle local-only mode', async () => {
const result = await registry.execute('sync', { localOnly: true });
expect(result).toBeDefined();
expect(result.success).toBe(true);
expect(result.message).toContain('local');
});
});
describe('Tool 6: MCP Orchestrator (mcp_orchestrate)', () => {
test('should create orchestration plan', async () => {
const registry = new LocalMCPRegistry();
const result = await registry.orchestrate('Test task');
expect(result).toBeDefined();
expect(result.task).toBeDefined();
expect(result.servers).toBeInstanceOf(Array);
expect(result.executionOrder).toBeInstanceOf(Array);
expect(result.isLocal).toBeDefined();
expect(result.estimatedTime).toBeDefined();
});
test('should handle preferLocal option', async () => {
const registry = new LocalMCPRegistry();
const result = await registry.orchestrate('Test task', { preferLocal: true });
expect(result).toBeDefined();
expect(result.isLocal).toBe(true);
});
test('should handle ephemeral instances', async () => {
const registry = new LocalMCPRegistry();
const result = await registry.orchestrate('Test task', { ephemeral: true });
expect(result).toBeDefined();
expect(result.servers.some(s => s.isEphemeral)).toBe(true);
});
});
describe('Agent Swarm Coordination', () => {
let swarmCoordinator: SwarmCoordinator;
beforeEach(async () => {
// Create a basic CSVLOD structure first
const context = new CSVLODContext();
await context.initialize(tempDir, 'basic');
swarmCoordinator = new SwarmCoordinator(path.join(tempDir, '.csvlod', 'AGENT-MANIFEST.yaml'));
});
test('should initialize swarm coordination', async () => {
const status = swarmCoordinator.getSwarmStatus();
expect(status).toBeDefined();
expect(status.swarm_enabled).toBeDefined();
expect(status.coordination_mode).toBeDefined();
expect(status.active_agents).toBeDefined();
expect(status.task_counts).toBeDefined();
expect(status.total_tasks).toBeDefined();
expect(status.context_cache_size).toBeDefined();
});
test('should decompose tasks', async () => {
const tasks = await swarmCoordinator.decomposeTask('Complex development task', ['backend', 'frontend']);
expect(tasks).toBeInstanceOf(Array);
expect(tasks.length).toBeGreaterThan(0);
tasks.forEach(task => {
expect(task.id).toBeDefined();
expect(task.agent_type).toBeDefined();
expect(task.description).toBeDefined();
expect(task.status).toBe('pending');
});
});
test('should handle task assignment', async () => {
const tasks = await swarmCoordinator.decomposeTasks('Test task', ['test']);
const taskId = tasks[0].id;
const assignedAgent = await swarmCoordinator.assignTask(taskId);
if (assignedAgent) {
expect(assignedAgent).toContain('test-');
const updatedStatus = swarmCoordinator.getSwarmStatus();
expect(updatedStatus.task_counts.in_progress).toBeGreaterThan(0);
}
});
test('should complete tasks', async () => {
const tasks = await swarmCoordinator.decomposeTasks('Test task', ['test']);
const taskId = tasks[0].id;
await swarmCoordinator.assignTask(taskId);
await swarmCoordinator.completeTask(taskId, { result: 'Test completed' });
const taskDetails = swarmCoordinator.getTaskDetails(taskId);
expect(taskDetails).not.toBeNull();
if (taskDetails) {
expect(taskDetails.status).toBe('completed');
expect(taskDetails.result).toBeDefined();
}
});
test('should provide task details', async () => {
const tasks = await swarmCoordinator.decomposeTasks('Test task', ['test']);
const taskId = tasks[0].id;
const taskDetails = swarmCoordinator.getTaskDetails(taskId);
expect(taskDetails).not.toBeNull();
if (taskDetails) {
expect(taskDetails.id).toBe(taskId);
expect(taskDetails.agent_type).toBe('test');
expect(taskDetails.description).toContain('Test task');
}
});
});
describe('Performance Benchmarks', () => {
test('should meet initialization performance targets', async () => {
const context = new CSVLODContext();
const startTime = Date.now();
await context.initialize(tempDir, 'basic');
const duration = Date.now() - startTime;
expect(duration).toBeLessThan(2000); // 2 seconds for basic initialization
});
test('should meet validation performance targets', async () => {
const context = new CSVLODContext();
await context.initialize(tempDir, 'basic');
const validator = new CSVLODValidator();
const startTime = Date.now();
await validator.validate(tempDir);
const duration = Date.now() - startTime;
expect(duration).toBeLessThan(1000); // 1 second for validation
});
test('should meet analysis performance targets', async () => {
const context = new CSVLODContext();
await context.initialize(tempDir, 'basic');
const startTime = Date.now();
await context.analyze(tempDir);
const duration = Date.now() - startTime;
expect(duration).toBeLessThan(1500); // 1.5 seconds for analysis
});
});
});