UNPKG

@stackmemoryai/stackmemory

Version:

Project-scoped memory for AI coding tools. Durable context across sessions with MCP integration, frames, smart retrieval, Claude Code skills, and automatic hooks.

162 lines (135 loc) 4.54 kB
#!/usr/bin/env tsx /** * Test script to verify swarm orchestration fixes */ import { SwarmCoordinator } from '../src/integrations/ralph/swarm/swarm-coordinator.js'; import { RalphStackMemoryBridge } from '../src/integrations/ralph/bridge/ralph-stackmemory-bridge.js'; import { GitWorkflowManager } from '../src/integrations/ralph/swarm/git-workflow-manager.js'; import { Agent, SwarmTask } from '../src/integrations/ralph/types.js'; import { v4 as uuidv4 } from 'uuid'; async function testDatabaseOptionalFix() { console.log('\n1. Testing database optional fix...'); try { // Test 1: Create bridge WITHOUT database requirement const bridgeWithoutDb = new RalphStackMemoryBridge({ useStackMemory: false, // This should prevent database error }); await bridgeWithoutDb.initialize({ task: 'Test task without database', criteria: 'Test criteria', }); console.log( '✅ Bridge initialized successfully without database requirement' ); } catch (error: any) { console.error( '❌ Failed to initialize bridge without database:', error.message ); return false; } return true; } async function testGitBranchConflictFix() { console.log('\n2. Testing git branch conflict fix...'); const gitManager = new GitWorkflowManager({ enableGitWorkflow: true, branchStrategy: 'agent', }); const mockAgent: Agent = { id: uuidv4(), role: 'developer', status: 'active', capabilities: ['coding'], workingDirectory: '.swarm/test', currentTask: null, performance: { tasksCompleted: 0, successRate: 1.0, averageTaskTime: 0, driftDetected: false, lastFreshStart: Date.now(), }, coordination: { communicationStyle: 'collaborative', conflictResolution: 'defer_to_expertise', collaborationPreferences: [], }, }; const mockTask: SwarmTask = { id: uuidv4(), type: 'implementation', title: 'implement-core-feature', description: 'Test task', priority: 1, estimatedEffort: 'medium', requiredRoles: ['developer'], dependencies: [], acceptanceCriteria: ['Test passes'], }; try { // Initialize workflow twice with same agent/task (should handle existing branch) await gitManager.initializeAgentWorkflow(mockAgent, mockTask); console.log('✅ First branch initialization successful'); // Try again with same task (should handle existing branch gracefully) await gitManager.initializeAgentWorkflow(mockAgent, mockTask); console.log( '✅ Second branch initialization handled existing branch gracefully' ); } catch (error: any) { console.error('❌ Git branch conflict handling failed:', error.message); return false; } return true; } async function testStopSwarmMethod() { console.log('\n3. Testing stopSwarm method...'); const coordinator = new SwarmCoordinator({ maxAgents: 5, coordinationInterval: 30000, }); try { // Initialize coordinator (minimal setup for testing) // Note: We're just testing the method exists and runs without errors // Verify stopSwarm method exists if (typeof coordinator.stopSwarm !== 'function') { console.error('❌ stopSwarm method does not exist'); return false; } // Call stopSwarm (should handle empty state gracefully) await coordinator.stopSwarm(); console.log('✅ stopSwarm method executed successfully'); } catch (error: any) { console.error('❌ stopSwarm method failed:', error.message); return false; } return true; } async function main() { console.log('Testing Swarm Orchestration Fixes'); console.log('=================================='); let allTestsPassed = true; // Test 1: Database optional fix const test1 = await testDatabaseOptionalFix(); allTestsPassed = allTestsPassed && test1; // Test 2: Git branch conflict fix const test2 = await testGitBranchConflictFix(); allTestsPassed = allTestsPassed && test2; // Test 3: stopSwarm method const test3 = await testStopSwarmMethod(); allTestsPassed = allTestsPassed && test3; // Summary console.log('\n=================================='); if (allTestsPassed) { console.log('✅ All tests passed! Fixes are working correctly.'); process.exit(0); } else { console.log('❌ Some tests failed. Please review the fixes.'); process.exit(1); } } // Run tests main().catch((error) => { console.error('Test script error:', error); process.exit(1); });