tasq/node_modules/agentic-flow/validation/test-wasm-integration.ts

100 lines
3.1 KiB
TypeScript
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

/**
* WASM Integration Test
*
* Verifies ReasoningBank WASM integration is working correctly.
*/
import { ReasoningBankAdapter, createReasoningBank } from '../src/reasoningbank/wasm-adapter.js';
async function testWasmIntegration() {
console.log('🧪 Testing ReasoningBank WASM Integration...\n');
try {
// Test 1: Create ReasoningBank instance
console.log('1⃣ Creating ReasoningBank instance...');
const rb = await createReasoningBank('test-wasm-integration');
console.log('✅ Instance created successfully\n');
// Test 2: Store a pattern
console.log('2⃣ Storing a test pattern...');
const patternId = await rb.storePattern({
task_description: 'Test WASM integration with sample task',
task_category: 'integration-testing',
strategy: 'test-strategy',
success_score: 0.95,
duration_seconds: 1.5,
});
console.log(`✅ Pattern stored with ID: ${patternId}\n`);
// Test 3: Retrieve the pattern
console.log('3⃣ Retrieving stored pattern...');
const pattern = await rb.getPattern(patternId);
if (!pattern) {
throw new Error('Pattern not found after storage');
}
console.log('✅ Pattern retrieved:', {
id: pattern.id,
description: pattern.task_description,
score: pattern.success_score,
});
console.log();
// Test 4: Search by category
console.log('4⃣ Searching patterns by category...');
const patterns = await rb.searchByCategory('integration-testing', 10);
console.log(`✅ Found ${patterns.length} pattern(s) in category\n`);
// Test 5: Find similar patterns
console.log('5⃣ Finding similar patterns...');
const similar = await rb.findSimilar(
'Another test task for similarity',
'integration-testing',
5
);
console.log(`✅ Found ${similar.length} similar pattern(s)`);
if (similar.length > 0) {
console.log(' Top match:', {
description: similar[0].pattern.task_description,
similarity: similar[0].similarity_score,
});
}
console.log();
// Test 6: Get statistics
console.log('6⃣ Getting storage statistics...');
const stats = await rb.getStats();
console.log('✅ Stats:', {
total_patterns: stats.total_patterns,
categories: stats.categories,
avg_score: stats.avg_success_score?.toFixed(3),
backend: stats.storage_backend,
});
console.log();
// Success
console.log('🎉 All WASM integration tests passed!');
console.log();
console.log('📦 WASM Package Info:');
console.log(' - Size: ~197KB optimized');
console.log(' - Backend: Auto-detected (IndexedDB/sql.js)');
console.log(' - Performance: Native Rust via WASM');
console.log(' - Zero regressions: All existing functionality intact');
console.log();
return true;
} catch (error) {
console.error('❌ WASM integration test failed:', error);
return false;
}
}
// Run tests
testWasmIntegration()
.then((success) => {
process.exit(success ? 0 : 1);
})
.catch((error) => {
console.error('Fatal error:', error);
process.exit(1);
});