claude-flow
Version:
Ruflo - Enterprise AI agent orchestration for Claude Code. Deploy 60+ specialized agents in coordinated swarms with self-learning, fault-tolerant consensus, vector memory, and MCP integration
190 lines • 7.29 kB
JavaScript
/**
* Standalone Pattern Store Test
* Run this in any environment to verify the IPFS-based pattern store works
*
* Usage:
* npx tsx standalone-test.ts
* # or
* npm run test:pattern-store
*/
import { PatternStore, createDiscoveryService, searchPatterns, getFeaturedPatterns, getTrendingPatterns, getNewestPatterns, getCategoryStats, getTagCloud, getSearchSuggestions, } from '../index.js';
async function main() {
console.log('');
console.log('╔══════════════════════════════════════════════════════════════╗');
console.log('║ CLAUDE FLOW V3 - STANDALONE PATTERN STORE TEST ║');
console.log('║ IPFS-Based Decentralized Pattern Marketplace ║');
console.log('╚══════════════════════════════════════════════════════════════╝');
console.log('');
let passed = 0;
let failed = 0;
// Test 1: Discovery Service Creation
console.log('▶ Test 1: Create Discovery Service');
try {
const discovery = createDiscoveryService();
const registries = discovery.listRegistries();
console.log(` ✅ Created service with ${registries.length} bootstrap registries`);
passed++;
}
catch (e) {
console.log(` ❌ Failed: ${e.message}`);
failed++;
}
// Test 2: Discover Registry
console.log('▶ Test 2: Discover Registry via IPNS');
let registry = null;
try {
const discovery = createDiscoveryService();
const result = await discovery.discoverRegistry();
if (result.success && result.registry) {
registry = result.registry;
console.log(` ✅ Discovered ${result.registry.patterns.length} patterns from ${result.source}`);
passed++;
}
else {
throw new Error(result.error || 'No registry');
}
}
catch (e) {
console.log(` ❌ Failed: ${e.message}`);
failed++;
}
if (!registry) {
console.log('\n❌ Cannot continue without registry\n');
process.exit(1);
}
// Test 3: Search Patterns
console.log('▶ Test 3: Search for "agent"');
try {
const results = searchPatterns(registry, { query: 'agent' });
console.log(` ✅ Found ${results.patterns.length} patterns matching "agent"`);
passed++;
}
catch (e) {
console.log(` ❌ Failed: ${e.message}`);
failed++;
}
// Test 4: Get Featured Patterns
console.log('▶ Test 4: Get Featured Patterns');
try {
const featured = getFeaturedPatterns(registry);
console.log(` ✅ Found ${featured.length} featured patterns`);
if (featured.length > 0) {
console.log(` - ${featured[0].name} (${featured[0].id})`);
}
passed++;
}
catch (e) {
console.log(` ❌ Failed: ${e.message}`);
failed++;
}
// Test 5: Get Trending Patterns
console.log('▶ Test 5: Get Trending Patterns');
try {
const trending = getTrendingPatterns(registry);
console.log(` ✅ Found ${trending.length} trending patterns`);
passed++;
}
catch (e) {
console.log(` ❌ Failed: ${e.message}`);
failed++;
}
// Test 6: Get Newest Patterns
console.log('▶ Test 6: Get Newest Patterns');
try {
const newest = getNewestPatterns(registry);
console.log(` ✅ Found ${newest.length} newest patterns`);
passed++;
}
catch (e) {
console.log(` ❌ Failed: ${e.message}`);
failed++;
}
// Test 7: Search with Filters
console.log('▶ Test 7: Search with Filters (verified only)');
try {
const results = searchPatterns(registry, { verified: true });
console.log(` ✅ Found ${results.patterns.length} verified patterns`);
passed++;
}
catch (e) {
console.log(` ❌ Failed: ${e.message}`);
failed++;
}
// Test 8: Category Stats
console.log('▶ Test 8: Get Category Statistics');
try {
const stats = getCategoryStats(registry);
const count = Array.isArray(stats) ? stats.length : Object.keys(stats).length;
console.log(` ✅ Found ${count} categories with stats`);
passed++;
}
catch (e) {
console.log(` ❌ Failed: ${e.message}`);
failed++;
}
// Test 9: Tag Cloud
console.log('▶ Test 9: Get Tag Cloud');
try {
const tags = getTagCloud(registry);
console.log(` ✅ Found ${tags.size} unique tags`);
passed++;
}
catch (e) {
console.log(` ❌ Failed: ${e.message}`);
failed++;
}
// Test 10: Search Suggestions
console.log('▶ Test 10: Get Search Suggestions');
try {
const suggestions = getSearchSuggestions(registry, 'pat');
console.log(` ✅ Got ${suggestions.length} suggestions for "pat"`);
passed++;
}
catch (e) {
console.log(` ❌ Failed: ${e.message}`);
failed++;
}
// Test 11: PatternStore Class
console.log('▶ Test 11: PatternStore Class API');
try {
const store = new PatternStore();
await store.initialize();
const stats = store.getStats();
console.log(` ✅ PatternStore initialized:`);
console.log(` Total Patterns: ${stats.totalPatterns}`);
console.log(` Total Downloads: ${stats.totalDownloads.toLocaleString()}`);
console.log(` Categories: ${stats.categories}`);
passed++;
}
catch (e) {
console.log(` ❌ Failed: ${e.message}`);
failed++;
}
// Summary
console.log('');
console.log('═══════════════════════════════════════════════════════════════');
console.log(' TEST RESULTS ');
console.log('═══════════════════════════════════════════════════════════════');
console.log('');
console.log(` Total: ${passed + failed}`);
console.log(` ✅ Passed: ${passed}`);
console.log(` ❌ Failed: ${failed}`);
console.log('');
if (failed === 0) {
console.log(' 🎉 All tests passed! Pattern Store is working correctly.');
console.log('');
console.log(' Available CLI Commands:');
console.log(' npx @claude-flow/cli patterns list');
console.log(' npx @claude-flow/cli patterns list --featured');
console.log(' npx @claude-flow/cli patterns search -q "agent"');
console.log(' npx @claude-flow/cli patterns info -n <pattern-id>');
console.log('');
}
process.exit(failed > 0 ? 1 : 0);
}
main().catch(err => {
console.error('Fatal error:', err);
process.exit(1);
});
//# sourceMappingURL=standalone-test.js.map