test-basic.jsโข4.65 kB
/**
* Basic functionality test
* Tests core memory operations without requiring MCP client
*/
import { ShortTermMemoryManager } from './src/memory/short-term.js';
import { LongTermMemoryManager } from './src/memory/long-term.js';
import { StorageManager } from './src/memory/storage.js';
import { extractKeywords } from './src/nlp/jieba.js';
import { matchKeys, createContextSnapshot } from './src/nlp/keywords.js';
console.log('๐งช Running basic functionality tests...\n');
// Test 1: NLP - Jieba keyword extraction
console.log('Test 1: Jieba Keyword Extraction');
try {
const keywords = extractKeywords('ๆๅๆฌขๅๆซ่จๅๅๅๅก๏ผ่ฟๆฏๆๆๅๆฌข็้ฃ็ฉ', 5);
console.log('โ Keywords extracted:', keywords.slice(0, 3).map(k => k.word).join(', '));
} catch (error) {
console.error('โ Failed:', error.message);
}
// Test 2: NLP - Keyword matching
console.log('\nTest 2: Keyword Matching');
try {
const messages = [
{ role: 'user', content: 'ๆ็็ๆฅๆฏ7ๆ17ๆฅ' },
{ role: 'assistant', content: 'ๅฅฝ็๏ผๆ่ฎฐไฝไบ๏ผ' }
];
const matches = matchKeys(messages, ['็ๆฅ', 'birthday'], 'any');
console.log('โ Keyword matches found:', matches);
} catch (error) {
console.error('โ Failed:', error.message);
}
// Test 3: Short-term memory - Add and search
console.log('\nTest 3: Short-term Memory Operations');
try {
const stManager = new ShortTermMemoryManager();
// Add memory
await stManager.addMemory(
[
{ role: 'user', content: 'ๆๅๆฌขๅๆซ่จ', timestamp: Date.now() },
{ role: 'assistant', content: 'ๅฅฝ็๏ผ', timestamp: Date.now() }
],
'test-conversation'
);
console.log('โ Memory added, total:', stManager.getMemories().length);
// Search memory
const searchResults = await stManager.searchRelevantMemories(
[{ role: 'user', content: 'ๆๅๆฌขไปไน้ฃ็ฉ' }],
'test-conversation'
);
console.log('โ Search complete, found relevant:',
searchResults.topRelevant.length + searchResults.nextRelevant.length);
// Get stats
const stats = stManager.getStats();
console.log('โ Stats retrieved, total memories:', stats.total);
} catch (error) {
console.error('โ Failed:', error.message);
}
// Test 4: Long-term memory - Add and trigger
console.log('\nTest 4: Long-term Memory Operations');
try {
const ltManager = new LongTermMemoryManager();
// Add memory
const addResult = await ltManager.addMemory({
name: 'birthday-memory',
prompt: '็จๆท็็ๆฅๆฏ7ๆ17ๆฅ',
trigger: 'match_keys(context.messages, ["็ๆฅ", "birthday"], "any")',
createdContext: 'ๆต่ฏไธไธๆ'
});
if (addResult.success) {
console.log('โ Long-term memory added');
} else {
throw new Error(addResult.error);
}
// Test trigger activation
const context = {
messages: [
{ role: 'user', content: 'ๆ็็ๆฅๆฏไปไนๆถๅ๏ผ' }
],
conversation_id: 'test',
participants: {}
};
const searchResults = await ltManager.searchAndActivateMemories(context);
console.log('โ Trigger evaluation complete, activated:', searchResults.activated.length);
// List memories
const names = ltManager.listMemoryNames();
console.log('โ Memory list retrieved:', names.length, 'memories');
} catch (error) {
console.error('โ Failed:', error.message);
}
// Test 5: Storage operations
console.log('\nTest 5: Storage Operations');
try {
const storage = new StorageManager('test-storage');
// Test paths
const stPath = storage.getShortTermPath();
const ltPath = storage.getLongTermPath();
console.log('โ Storage paths generated');
console.log(' Short-term:', stPath);
console.log(' Long-term:', ltPath);
} catch (error) {
console.error('โ Failed:', error.message);
}
// Test 6: Context snapshot
console.log('\nTest 6: Context Snapshot');
try {
const messages = [
{ role: 'user', content: 'ไฝ ๅฅฝ', name: 'User' },
{ role: 'assistant', content: 'ไฝ ๅฅฝ๏ผ', name: 'Assistant' }
];
const snapshot = createContextSnapshot(messages);
console.log('โ Context snapshot created');
console.log(' Preview:', snapshot.substring(0, 50) + '...');
} catch (error) {
console.error('โ Failed:', error.message);
}
console.log('\nโ
Basic functionality tests complete!\n');
console.log('Next steps:');
console.log('1. Run: npm install');
console.log('2. Configure MCP client (see example-config.json)');
console.log('3. Test with actual MCP client (see TESTING.md)');