tasq/node_modules/agentic-flow/dist/reasoningbank/test-integration.js

91 lines
4.3 KiB
JavaScript
Raw Permalink 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.

#!/usr/bin/env node
/**
* Integration test for ReasoningBank
* Tests the full workflow: retrieve → judge → distill → consolidate
*/
import { initialize, runTask } from './index.js';
console.log('🧪 ReasoningBank Integration Test\n');
async function main() {
// 1. Initialize
console.log('1⃣ Initializing ReasoningBank...');
await initialize();
console.log(' ✅ Initialization complete\n');
// 2. Test full task execution
console.log('2⃣ Testing full task execution...');
const result = await runTask({
taskId: 'test-task-001',
agentId: 'test-agent',
query: 'Test login to admin panel with CSRF validation',
domain: 'test.web',
executeFn: async (memories) => {
console.log(` 📝 Received ${memories.length} memories for task execution`);
// Simulate a successful task trajectory
const trajectory = {
steps: [
{ action: 'navigate', url: 'https://admin.test.com/login' },
{ action: 'extract_csrf', location: 'meta[name=csrf-token]', success: true },
{ action: 'fill_form', fields: { username: 'admin', password: '***', csrf: '[TOKEN]' } },
{ action: 'submit', status: 200 },
{ action: 'verify_redirect', url: '/dashboard', success: true },
{ action: 'complete', message: 'Login successful' }
],
metadata: {
duration_ms: 1234,
steps_count: 6
}
};
return trajectory;
}
});
console.log(` ✅ Task complete:`);
console.log(` - Verdict: ${result.verdict.label} (${result.verdict.confidence})`);
console.log(` - Used memories: ${result.usedMemories.length}`);
console.log(` - New memories: ${result.newMemories.length}`);
console.log(` - Consolidated: ${result.consolidated ? 'Yes' : 'No'}\n`);
// 3. Test retrieval
console.log('3⃣ Testing memory retrieval...');
const { retrieveMemories } = await import('./core/retrieve.js');
const memories = await retrieveMemories('How to handle CSRF tokens in login forms?', {
domain: 'test.web',
k: 3
});
console.log(` ✅ Retrieved ${memories.length} memories`);
if (memories.length > 0) {
console.log(` - Top memory: "${memories[0].title}"`);
console.log(` - Score: ${memories[0].score.toFixed(3)}`);
console.log(` - Similarity: ${(memories[0].components.similarity * 100).toFixed(1)}%\n`);
}
// 4. Test MaTTS (if enabled)
const config = await import('./utils/config.js').then(m => m.loadConfig());
if (config.features?.enable_matts_parallel) {
console.log('4⃣ Testing MaTTS parallel mode...');
const { mattsParallel } = await import('./core/matts.js');
const mattsResult = await mattsParallel(async () => ({
steps: [
{ action: 'test', result: 'success' }
],
metadata: {}
}), 'Test MaTTS execution', { k: 3, taskId: 'matts-test', domain: 'test.matts' });
console.log(` ✅ MaTTS complete:`);
console.log(` - Trajectories: ${mattsResult.trajectories.length}`);
console.log(` - Success rate: ${(mattsResult.successRate * 100).toFixed(1)}%`);
console.log(` - Aggregated memories: ${mattsResult.aggregatedMemories.length}`);
console.log(` - Duration: ${mattsResult.duration}ms\n`);
}
// 5. Database statistics
console.log('5⃣ Database statistics...');
const { getDb } = await import('./db/queries.js');
const db = getDb();
const totalMemories = db.prepare("SELECT COUNT(*) as count FROM patterns WHERE type = 'reasoning_memory'").get();
const totalEmbeddings = db.prepare('SELECT COUNT(*) as count FROM pattern_embeddings').get();
console.log(` ✅ Database status:`);
console.log(` - Total memories: ${totalMemories.count}`);
console.log(` - Total embeddings: ${totalEmbeddings.count}\n`);
console.log('✅ Integration test complete!\n');
process.exit(0);
}
main().catch(error => {
console.error('❌ Integration test failed:', error);
process.exit(1);
});
//# sourceMappingURL=test-integration.js.map