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
126 lines • 7.22 kB
JavaScript
/**
* Plugin Store Demo
* Demonstrates the IPFS-based plugin registry working end-to-end
*/
import { createPluginDiscoveryService, searchPlugins, getOfficialPlugins, } from '../store/index.js';
async function demo() {
console.log('');
console.log('╔══════════════════════════════════════════════════════════════╗');
console.log('║ CLAUDE FLOW V3 - IPFS PLUGIN STORE DEMO ║');
console.log('║ Decentralized Plugin Marketplace ║');
console.log('╚══════════════════════════════════════════════════════════════╝');
console.log('');
// Step 1: Initialize discovery service
console.log('🔍 Step 1: Initialize Plugin Discovery Service');
const discovery = createPluginDiscoveryService();
const registries = discovery.listRegistries();
console.log(` Found ${registries.length} bootstrap registries:`);
registries.forEach(r => {
console.log(` ├─ ${r.name} ${r.official ? '(Official)' : '(Community)'}`);
console.log(` │ └─ IPNS: ${r.ipnsName.slice(0, 30)}...`);
});
console.log('');
// Step 2: Discover registry via IPNS
console.log('🌐 Step 2: Discover Registry via IPNS');
const result = await discovery.discoverRegistry();
if (!result.success || !result.registry) {
console.error(' ❌ Failed to discover registry');
return;
}
console.log(` ✅ Registry discovered from: ${result.source}`);
console.log(` ├─ Total plugins: ${result.registry.totalPlugins}`);
console.log(` ├─ Total downloads: ${result.registry.totalDownloads.toLocaleString()}`);
console.log(` └─ CID: ${result.cid?.slice(0, 40)}...`);
console.log('');
// Step 3: List official plugins
console.log('📦 Step 3: Official Plugins Available');
const official = getOfficialPlugins(result.registry);
console.log('');
official.forEach(p => {
const stars = '★'.repeat(Math.round(p.rating));
console.log(` ${p.verified ? '✓' : ' '} ${p.displayName} v${p.version}`);
console.log(` └─ ${p.description.slice(0, 60)}...`);
console.log(` └─ ${p.downloads.toLocaleString()} downloads | ${stars} ${p.rating}`);
console.log('');
});
// Step 4: Search for plugin-creator
console.log('🔎 Step 4: Search for "plugin creator"');
const searchResult = searchPlugins(result.registry, { query: 'plugin creator' });
console.log(` Found ${searchResult.total} results`);
console.log('');
// Step 5: Plugin Creator details
const pluginCreator = searchResult.plugins.find(p => p.id === 'plugin-creator');
if (pluginCreator) {
console.log('═══════════════════════════════════════════════════════════════');
console.log(' PLUGIN CREATOR PRO ');
console.log('═══════════════════════════════════════════════════════════════');
console.log('');
console.log(` Name: ${pluginCreator.displayName}`);
console.log(` Version: ${pluginCreator.version}`);
console.log(` Trust: ${pluginCreator.trustLevel.toUpperCase()}`);
console.log(` Verified: ${pluginCreator.verified ? '✓ Yes' : '✗ No'}`);
console.log(` Downloads: ${pluginCreator.downloads.toLocaleString()}`);
console.log(` Rating: ${'★'.repeat(Math.round(pluginCreator.rating))} ${pluginCreator.rating}/5`);
console.log(` License: ${pluginCreator.license}`);
console.log('');
console.log(' Description:');
console.log(` ${pluginCreator.description}`);
console.log('');
console.log(' IPFS Storage:');
console.log(` ├─ CID: ${pluginCreator.cid}`);
console.log(` ├─ Size: ${(pluginCreator.size / 1024).toFixed(1)} KB`);
console.log(` └─ Checksum: ${pluginCreator.checksum}`);
console.log('');
console.log(' Commands Available:');
pluginCreator.commands.forEach(cmd => {
console.log(` └─ ${cmd}`);
});
console.log('');
console.log(' Hooks Provided:');
pluginCreator.hooks.forEach(hook => {
console.log(` └─ ${hook}`);
});
console.log('');
console.log(' Permissions Required:');
console.log(` └─ ${pluginCreator.permissions.join(', ')}`);
console.log('');
if (pluginCreator.securityAudit) {
console.log(' Security Audit:');
console.log(` ├─ Auditor: ${pluginCreator.securityAudit.auditor}`);
console.log(` ├─ Date: ${pluginCreator.securityAudit.auditDate}`);
console.log(` └─ Passed: ${pluginCreator.securityAudit.passed ? '✓ Yes' : '✗ No'}`);
console.log('');
}
console.log(' To install:');
console.log(' $ claude-flow plugins install -n plugin-creator');
console.log('');
}
// Summary
console.log('═══════════════════════════════════════════════════════════════');
console.log(' DEMO COMPLETE ');
console.log('═══════════════════════════════════════════════════════════════');
console.log('');
console.log(' The IPFS-based Plugin Store is working!');
console.log('');
console.log(' Features demonstrated:');
console.log(' ✅ Registry discovery via IPNS');
console.log(' ✅ Plugin search with full-text matching');
console.log(' ✅ Official/Verified plugin filtering');
console.log(' ✅ Plugin Creator Pro available for download');
console.log(' ✅ Security audit verification');
console.log(' ✅ Content-addressed storage (CID)');
console.log('');
console.log(' CLI Commands:');
console.log(' $ claude-flow plugins list # List all plugins');
console.log(' $ claude-flow plugins list --official # Official only');
console.log(' $ claude-flow plugins search -q neural # Search plugins');
console.log(' $ claude-flow plugins info -n plugin-creator');
console.log(' $ claude-flow plugins install -n plugin-creator');
console.log('');
}
demo().catch(err => {
console.error('Demo failed:', err);
process.exit(1);
});
//# sourceMappingURL=demo-plugin-store.js.map