@claude-flow/cli 3.0.0-alpha.55 → 3.0.0-alpha.57

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (139) hide show
  1. package/.claude/settings.json +2 -2
  2. package/dist/src/commands/hooks.d.ts.map +1 -1
  3. package/dist/src/commands/hooks.js +45 -5
  4. package/dist/src/commands/hooks.js.map +1 -1
  5. package/dist/src/commands/init.d.ts.map +1 -1
  6. package/dist/src/commands/init.js +80 -9
  7. package/dist/src/commands/init.js.map +1 -1
  8. package/dist/src/commands/memory.d.ts.map +1 -1
  9. package/dist/src/commands/memory.js +221 -2
  10. package/dist/src/commands/memory.js.map +1 -1
  11. package/dist/src/commands/plugins.d.ts +1 -0
  12. package/dist/src/commands/plugins.d.ts.map +1 -1
  13. package/dist/src/commands/plugins.js +439 -89
  14. package/dist/src/commands/plugins.js.map +1 -1
  15. package/dist/src/commands/transfer-store.d.ts +13 -0
  16. package/dist/src/commands/transfer-store.d.ts.map +1 -0
  17. package/dist/src/commands/transfer-store.js +428 -0
  18. package/dist/src/commands/transfer-store.js.map +1 -0
  19. package/dist/src/init/mcp-generator.d.ts +9 -0
  20. package/dist/src/init/mcp-generator.d.ts.map +1 -1
  21. package/dist/src/init/mcp-generator.js +57 -28
  22. package/dist/src/init/mcp-generator.js.map +1 -1
  23. package/dist/src/init/settings-generator.d.ts.map +1 -1
  24. package/dist/src/init/settings-generator.js +4 -2
  25. package/dist/src/init/settings-generator.js.map +1 -1
  26. package/dist/src/mcp-tools/index.d.ts +1 -0
  27. package/dist/src/mcp-tools/index.d.ts.map +1 -1
  28. package/dist/src/mcp-tools/index.js +1 -0
  29. package/dist/src/mcp-tools/index.js.map +1 -1
  30. package/dist/src/mcp-tools/transfer-tools.d.ts +14 -0
  31. package/dist/src/mcp-tools/transfer-tools.d.ts.map +1 -0
  32. package/dist/src/mcp-tools/transfer-tools.js +396 -0
  33. package/dist/src/mcp-tools/transfer-tools.js.map +1 -0
  34. package/dist/src/plugins/store/discovery.d.ts +73 -0
  35. package/dist/src/plugins/store/discovery.d.ts.map +1 -0
  36. package/dist/src/plugins/store/discovery.js +568 -0
  37. package/dist/src/plugins/store/discovery.js.map +1 -0
  38. package/dist/src/plugins/store/index.d.ts +76 -0
  39. package/dist/src/plugins/store/index.d.ts.map +1 -0
  40. package/dist/src/plugins/store/index.js +141 -0
  41. package/dist/src/plugins/store/index.js.map +1 -0
  42. package/dist/src/plugins/store/search.d.ts +46 -0
  43. package/dist/src/plugins/store/search.d.ts.map +1 -0
  44. package/dist/src/plugins/store/search.js +230 -0
  45. package/dist/src/plugins/store/search.js.map +1 -0
  46. package/dist/src/plugins/store/types.d.ts +274 -0
  47. package/dist/src/plugins/store/types.d.ts.map +1 -0
  48. package/dist/src/plugins/store/types.js +7 -0
  49. package/dist/src/plugins/store/types.js.map +1 -0
  50. package/dist/src/plugins/tests/demo-plugin-store.d.ts +7 -0
  51. package/dist/src/plugins/tests/demo-plugin-store.d.ts.map +1 -0
  52. package/dist/src/plugins/tests/demo-plugin-store.js +126 -0
  53. package/dist/src/plugins/tests/demo-plugin-store.js.map +1 -0
  54. package/dist/src/plugins/tests/standalone-test.d.ts +12 -0
  55. package/dist/src/plugins/tests/standalone-test.d.ts.map +1 -0
  56. package/dist/src/plugins/tests/standalone-test.js +188 -0
  57. package/dist/src/plugins/tests/standalone-test.js.map +1 -0
  58. package/dist/src/plugins/tests/test-plugin-store.d.ts +7 -0
  59. package/dist/src/plugins/tests/test-plugin-store.d.ts.map +1 -0
  60. package/dist/src/plugins/tests/test-plugin-store.js +206 -0
  61. package/dist/src/plugins/tests/test-plugin-store.js.map +1 -0
  62. package/dist/src/transfer/anonymization/index.d.ts +25 -0
  63. package/dist/src/transfer/anonymization/index.d.ts.map +1 -0
  64. package/dist/src/transfer/anonymization/index.js +175 -0
  65. package/dist/src/transfer/anonymization/index.js.map +1 -0
  66. package/dist/src/transfer/deploy-seraphine.d.ts +13 -0
  67. package/dist/src/transfer/deploy-seraphine.d.ts.map +1 -0
  68. package/dist/src/transfer/deploy-seraphine.js +205 -0
  69. package/dist/src/transfer/deploy-seraphine.js.map +1 -0
  70. package/dist/src/transfer/export.d.ts +25 -0
  71. package/dist/src/transfer/export.d.ts.map +1 -0
  72. package/dist/src/transfer/export.js +113 -0
  73. package/dist/src/transfer/export.js.map +1 -0
  74. package/dist/src/transfer/index.d.ts +12 -0
  75. package/dist/src/transfer/index.d.ts.map +1 -0
  76. package/dist/src/transfer/index.js +31 -0
  77. package/dist/src/transfer/index.js.map +1 -0
  78. package/dist/src/transfer/ipfs/client.d.ts +31 -0
  79. package/dist/src/transfer/ipfs/client.d.ts.map +1 -0
  80. package/dist/src/transfer/ipfs/client.js +74 -0
  81. package/dist/src/transfer/ipfs/client.js.map +1 -0
  82. package/dist/src/transfer/ipfs/upload.d.ts +85 -0
  83. package/dist/src/transfer/ipfs/upload.d.ts.map +1 -0
  84. package/dist/src/transfer/ipfs/upload.js +319 -0
  85. package/dist/src/transfer/ipfs/upload.js.map +1 -0
  86. package/dist/src/transfer/models/seraphine.d.ts +72 -0
  87. package/dist/src/transfer/models/seraphine.d.ts.map +1 -0
  88. package/dist/src/transfer/models/seraphine.js +373 -0
  89. package/dist/src/transfer/models/seraphine.js.map +1 -0
  90. package/dist/src/transfer/serialization/cfp.d.ts +49 -0
  91. package/dist/src/transfer/serialization/cfp.d.ts.map +1 -0
  92. package/dist/src/transfer/serialization/cfp.js +180 -0
  93. package/dist/src/transfer/serialization/cfp.js.map +1 -0
  94. package/dist/src/transfer/store/discovery.d.ts +84 -0
  95. package/dist/src/transfer/store/discovery.d.ts.map +1 -0
  96. package/dist/src/transfer/store/discovery.js +275 -0
  97. package/dist/src/transfer/store/discovery.js.map +1 -0
  98. package/dist/src/transfer/store/download.d.ts +70 -0
  99. package/dist/src/transfer/store/download.d.ts.map +1 -0
  100. package/dist/src/transfer/store/download.js +295 -0
  101. package/dist/src/transfer/store/download.js.map +1 -0
  102. package/dist/src/transfer/store/index.d.ts +84 -0
  103. package/dist/src/transfer/store/index.d.ts.map +1 -0
  104. package/dist/src/transfer/store/index.js +153 -0
  105. package/dist/src/transfer/store/index.js.map +1 -0
  106. package/dist/src/transfer/store/publish.d.ts +76 -0
  107. package/dist/src/transfer/store/publish.d.ts.map +1 -0
  108. package/dist/src/transfer/store/publish.js +262 -0
  109. package/dist/src/transfer/store/publish.js.map +1 -0
  110. package/dist/src/transfer/store/registry.d.ts +58 -0
  111. package/dist/src/transfer/store/registry.d.ts.map +1 -0
  112. package/dist/src/transfer/store/registry.js +285 -0
  113. package/dist/src/transfer/store/registry.js.map +1 -0
  114. package/dist/src/transfer/store/search.d.ts +54 -0
  115. package/dist/src/transfer/store/search.d.ts.map +1 -0
  116. package/dist/src/transfer/store/search.js +232 -0
  117. package/dist/src/transfer/store/search.js.map +1 -0
  118. package/dist/src/transfer/store/tests/standalone-test.d.ts +12 -0
  119. package/dist/src/transfer/store/tests/standalone-test.d.ts.map +1 -0
  120. package/dist/src/transfer/store/tests/standalone-test.js +190 -0
  121. package/dist/src/transfer/store/tests/standalone-test.js.map +1 -0
  122. package/dist/src/transfer/store/types.d.ts +193 -0
  123. package/dist/src/transfer/store/types.d.ts.map +1 -0
  124. package/dist/src/transfer/store/types.js +6 -0
  125. package/dist/src/transfer/store/types.js.map +1 -0
  126. package/dist/src/transfer/test-seraphine.d.ts +6 -0
  127. package/dist/src/transfer/test-seraphine.d.ts.map +1 -0
  128. package/dist/src/transfer/test-seraphine.js +105 -0
  129. package/dist/src/transfer/test-seraphine.js.map +1 -0
  130. package/dist/src/transfer/tests/test-store.d.ts +7 -0
  131. package/dist/src/transfer/tests/test-store.d.ts.map +1 -0
  132. package/dist/src/transfer/tests/test-store.js +214 -0
  133. package/dist/src/transfer/tests/test-store.js.map +1 -0
  134. package/dist/src/transfer/types.d.ts +245 -0
  135. package/dist/src/transfer/types.d.ts.map +1 -0
  136. package/dist/src/transfer/types.js +6 -0
  137. package/dist/src/transfer/types.js.map +1 -0
  138. package/dist/tsconfig.tsbuildinfo +1 -1
  139. package/package.json +3 -1
@@ -0,0 +1,274 @@
1
+ /**
2
+ * Plugin Store Types
3
+ * Decentralized plugin marketplace using IPFS
4
+ * Extends the pattern store architecture for plugins
5
+ */
6
+ import type { TrustLevel } from '../../transfer/types.js';
7
+ /**
8
+ * Plugin entry in the registry
9
+ */
10
+ export interface PluginEntry {
11
+ id: string;
12
+ name: string;
13
+ displayName: string;
14
+ description: string;
15
+ version: string;
16
+ cid: string;
17
+ size: number;
18
+ checksum: string;
19
+ author: PluginAuthor;
20
+ license: string;
21
+ categories: string[];
22
+ tags: string[];
23
+ keywords: string[];
24
+ downloads: number;
25
+ rating: number;
26
+ ratingCount: number;
27
+ lastUpdated: string;
28
+ createdAt: string;
29
+ minClaudeFlowVersion: string;
30
+ maxClaudeFlowVersion?: string;
31
+ dependencies: PluginDependency[];
32
+ peerDependencies?: PluginDependency[];
33
+ type: PluginType;
34
+ hooks: string[];
35
+ commands: string[];
36
+ permissions: PluginPermission[];
37
+ exports: string[];
38
+ verified: boolean;
39
+ trustLevel: TrustLevel;
40
+ signature?: string;
41
+ publicKey?: string;
42
+ securityAudit?: SecurityAudit;
43
+ knownVulnerabilities?: string[];
44
+ }
45
+ /**
46
+ * Plugin types
47
+ */
48
+ export type PluginType = 'agent' | 'hook' | 'command' | 'provider' | 'integration' | 'theme' | 'core' | 'hybrid';
49
+ /**
50
+ * Plugin dependency
51
+ */
52
+ export interface PluginDependency {
53
+ name: string;
54
+ version: string;
55
+ optional?: boolean;
56
+ }
57
+ /**
58
+ * Plugin permissions
59
+ */
60
+ export type PluginPermission = 'network' | 'filesystem' | 'execute' | 'memory' | 'agents' | 'credentials' | 'config' | 'hooks' | 'privileged';
61
+ /**
62
+ * Security audit info
63
+ */
64
+ export interface SecurityAudit {
65
+ auditor: string;
66
+ auditDate: string;
67
+ auditVersion: string;
68
+ passed: boolean;
69
+ issues: SecurityIssue[];
70
+ reportCid?: string;
71
+ }
72
+ /**
73
+ * Security issue
74
+ */
75
+ export interface SecurityIssue {
76
+ severity: 'low' | 'medium' | 'high' | 'critical';
77
+ description: string;
78
+ resolved: boolean;
79
+ resolvedVersion?: string;
80
+ }
81
+ /**
82
+ * Plugin author info
83
+ */
84
+ export interface PluginAuthor {
85
+ id: string;
86
+ displayName?: string;
87
+ email?: string;
88
+ website?: string;
89
+ publicKey?: string;
90
+ verified: boolean;
91
+ plugins: number;
92
+ totalDownloads: number;
93
+ reputation: number;
94
+ }
95
+ /**
96
+ * Plugin category
97
+ */
98
+ export interface PluginCategory {
99
+ id: string;
100
+ name: string;
101
+ description: string;
102
+ pluginCount: number;
103
+ icon?: string;
104
+ subcategories?: PluginCategory[];
105
+ }
106
+ /**
107
+ * Decentralized plugin registry
108
+ * Stored on IPFS with IPNS pointer for updates
109
+ */
110
+ export interface PluginRegistry {
111
+ version: string;
112
+ type: 'plugins';
113
+ updatedAt: string;
114
+ ipnsName: string;
115
+ previousCid?: string;
116
+ plugins: PluginEntry[];
117
+ categories: PluginCategory[];
118
+ authors: PluginAuthor[];
119
+ totalPlugins: number;
120
+ totalDownloads: number;
121
+ totalAuthors: number;
122
+ featured: string[];
123
+ trending: string[];
124
+ newest: string[];
125
+ official: string[];
126
+ registrySignature?: string;
127
+ registryPublicKey?: string;
128
+ compatibilityMatrix: CompatibilityEntry[];
129
+ }
130
+ /**
131
+ * Compatibility entry
132
+ */
133
+ export interface CompatibilityEntry {
134
+ pluginId: string;
135
+ pluginVersion: string;
136
+ claudeFlowVersions: string[];
137
+ tested: boolean;
138
+ notes?: string;
139
+ }
140
+ /**
141
+ * Search query options for plugins
142
+ */
143
+ export interface PluginSearchOptions {
144
+ query?: string;
145
+ category?: string;
146
+ type?: PluginType;
147
+ tags?: string[];
148
+ author?: string;
149
+ minRating?: number;
150
+ minDownloads?: number;
151
+ verified?: boolean;
152
+ trustLevel?: TrustLevel;
153
+ permissions?: PluginPermission[];
154
+ hasSecurityAudit?: boolean;
155
+ sortBy?: 'downloads' | 'rating' | 'newest' | 'name' | 'reputation';
156
+ sortOrder?: 'asc' | 'desc';
157
+ limit?: number;
158
+ offset?: number;
159
+ }
160
+ /**
161
+ * Search result
162
+ */
163
+ export interface PluginSearchResult {
164
+ plugins: PluginEntry[];
165
+ total: number;
166
+ page: number;
167
+ pageSize: number;
168
+ hasMore: boolean;
169
+ query: PluginSearchOptions;
170
+ }
171
+ /**
172
+ * Publish options for plugins
173
+ */
174
+ export interface PluginPublishOptions {
175
+ name: string;
176
+ displayName: string;
177
+ description: string;
178
+ version: string;
179
+ categories: string[];
180
+ tags: string[];
181
+ license: string;
182
+ type: PluginType;
183
+ hooks?: string[];
184
+ commands?: string[];
185
+ permissions: PluginPermission[];
186
+ dependencies?: PluginDependency[];
187
+ privateKeyPath?: string;
188
+ requestAudit?: boolean;
189
+ }
190
+ /**
191
+ * Publish result
192
+ */
193
+ export interface PluginPublishResult {
194
+ success: boolean;
195
+ pluginId: string;
196
+ cid: string;
197
+ registryCid: string;
198
+ gatewayUrl: string;
199
+ message: string;
200
+ auditRequestId?: string;
201
+ }
202
+ /**
203
+ * Download options for plugins
204
+ */
205
+ export interface PluginDownloadOptions {
206
+ output?: string;
207
+ verify?: boolean;
208
+ install?: boolean;
209
+ global?: boolean;
210
+ skipDependencies?: boolean;
211
+ }
212
+ /**
213
+ * Download result
214
+ */
215
+ export interface PluginDownloadResult {
216
+ success: boolean;
217
+ plugin: PluginEntry;
218
+ outputPath?: string;
219
+ installed?: boolean;
220
+ verified: boolean;
221
+ size: number;
222
+ dependenciesInstalled?: string[];
223
+ }
224
+ /**
225
+ * Known plugin registries (bootstrap nodes)
226
+ */
227
+ export interface KnownPluginRegistry {
228
+ name: string;
229
+ description: string;
230
+ ipnsName: string;
231
+ gateway: string;
232
+ publicKey: string;
233
+ trusted: boolean;
234
+ official: boolean;
235
+ }
236
+ /**
237
+ * Plugin store configuration
238
+ */
239
+ export interface PluginStoreConfig {
240
+ registries: KnownPluginRegistry[];
241
+ defaultRegistry: string;
242
+ gateway: string;
243
+ timeout: number;
244
+ cacheDir: string;
245
+ cacheExpiry: number;
246
+ requireVerification: boolean;
247
+ requireSecurityAudit: boolean;
248
+ minTrustLevel: TrustLevel;
249
+ trustedAuthors: string[];
250
+ blockedPlugins: string[];
251
+ allowedPermissions: PluginPermission[];
252
+ requirePermissionPrompt: boolean;
253
+ authorId?: string;
254
+ privateKeyPath?: string;
255
+ }
256
+ /**
257
+ * Plugin installation manifest
258
+ */
259
+ export interface PluginManifest {
260
+ name: string;
261
+ version: string;
262
+ cid: string;
263
+ installedAt: string;
264
+ enabled: boolean;
265
+ config?: Record<string, unknown>;
266
+ }
267
+ /**
268
+ * Installed plugins database
269
+ */
270
+ export interface InstalledPlugins {
271
+ plugins: PluginManifest[];
272
+ lastUpdated: string;
273
+ }
274
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/plugins/store/types.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ /**
2
+ * Plugin Store Types
3
+ * Decentralized plugin marketplace using IPFS
4
+ * Extends the pattern store architecture for plugins
5
+ */
6
+ export {};
7
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../../src/plugins/store/types.ts"],"names":[],"mappings":"AAAA;;;;GAIG"}
@@ -0,0 +1,7 @@
1
+ #!/usr/bin/env npx tsx
2
+ /**
3
+ * Plugin Store Demo
4
+ * Demonstrates the IPFS-based plugin registry working end-to-end
5
+ */
6
+ export {};
7
+ //# sourceMappingURL=demo-plugin-store.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"demo-plugin-store.d.ts","sourceRoot":"","sources":["../../../../src/plugins/tests/demo-plugin-store.ts"],"names":[],"mappings":";AACA;;;GAGG"}
@@ -0,0 +1,126 @@
1
+ #!/usr/bin/env npx tsx
2
+ /**
3
+ * Plugin Store Demo
4
+ * Demonstrates the IPFS-based plugin registry working end-to-end
5
+ */
6
+ import { createPluginDiscoveryService, searchPlugins, getOfficialPlugins, } from '../store/index.js';
7
+ async function demo() {
8
+ console.log('');
9
+ console.log('╔══════════════════════════════════════════════════════════════╗');
10
+ console.log('║ CLAUDE FLOW V3 - IPFS PLUGIN STORE DEMO ║');
11
+ console.log('║ Decentralized Plugin Marketplace ║');
12
+ console.log('╚══════════════════════════════════════════════════════════════╝');
13
+ console.log('');
14
+ // Step 1: Initialize discovery service
15
+ console.log('🔍 Step 1: Initialize Plugin Discovery Service');
16
+ const discovery = createPluginDiscoveryService();
17
+ const registries = discovery.listRegistries();
18
+ console.log(` Found ${registries.length} bootstrap registries:`);
19
+ registries.forEach(r => {
20
+ console.log(` ├─ ${r.name} ${r.official ? '(Official)' : '(Community)'}`);
21
+ console.log(` │ └─ IPNS: ${r.ipnsName.slice(0, 30)}...`);
22
+ });
23
+ console.log('');
24
+ // Step 2: Discover registry via IPNS
25
+ console.log('🌐 Step 2: Discover Registry via IPNS');
26
+ const result = await discovery.discoverRegistry();
27
+ if (!result.success || !result.registry) {
28
+ console.error(' ❌ Failed to discover registry');
29
+ return;
30
+ }
31
+ console.log(` ✅ Registry discovered from: ${result.source}`);
32
+ console.log(` ├─ Total plugins: ${result.registry.totalPlugins}`);
33
+ console.log(` ├─ Total downloads: ${result.registry.totalDownloads.toLocaleString()}`);
34
+ console.log(` └─ CID: ${result.cid?.slice(0, 40)}...`);
35
+ console.log('');
36
+ // Step 3: List official plugins
37
+ console.log('📦 Step 3: Official Plugins Available');
38
+ const official = getOfficialPlugins(result.registry);
39
+ console.log('');
40
+ official.forEach(p => {
41
+ const stars = '★'.repeat(Math.round(p.rating));
42
+ console.log(` ${p.verified ? '✓' : ' '} ${p.displayName} v${p.version}`);
43
+ console.log(` └─ ${p.description.slice(0, 60)}...`);
44
+ console.log(` └─ ${p.downloads.toLocaleString()} downloads | ${stars} ${p.rating}`);
45
+ console.log('');
46
+ });
47
+ // Step 4: Search for plugin-creator
48
+ console.log('🔎 Step 4: Search for "plugin creator"');
49
+ const searchResult = searchPlugins(result.registry, { query: 'plugin creator' });
50
+ console.log(` Found ${searchResult.total} results`);
51
+ console.log('');
52
+ // Step 5: Plugin Creator details
53
+ const pluginCreator = searchResult.plugins.find(p => p.id === 'plugin-creator');
54
+ if (pluginCreator) {
55
+ console.log('═══════════════════════════════════════════════════════════════');
56
+ console.log(' PLUGIN CREATOR PRO ');
57
+ console.log('═══════════════════════════════════════════════════════════════');
58
+ console.log('');
59
+ console.log(` Name: ${pluginCreator.displayName}`);
60
+ console.log(` Version: ${pluginCreator.version}`);
61
+ console.log(` Trust: ${pluginCreator.trustLevel.toUpperCase()}`);
62
+ console.log(` Verified: ${pluginCreator.verified ? '✓ Yes' : '✗ No'}`);
63
+ console.log(` Downloads: ${pluginCreator.downloads.toLocaleString()}`);
64
+ console.log(` Rating: ${'★'.repeat(Math.round(pluginCreator.rating))} ${pluginCreator.rating}/5`);
65
+ console.log(` License: ${pluginCreator.license}`);
66
+ console.log('');
67
+ console.log(' Description:');
68
+ console.log(` ${pluginCreator.description}`);
69
+ console.log('');
70
+ console.log(' IPFS Storage:');
71
+ console.log(` ├─ CID: ${pluginCreator.cid}`);
72
+ console.log(` ├─ Size: ${(pluginCreator.size / 1024).toFixed(1)} KB`);
73
+ console.log(` └─ Checksum: ${pluginCreator.checksum}`);
74
+ console.log('');
75
+ console.log(' Commands Available:');
76
+ pluginCreator.commands.forEach(cmd => {
77
+ console.log(` └─ ${cmd}`);
78
+ });
79
+ console.log('');
80
+ console.log(' Hooks Provided:');
81
+ pluginCreator.hooks.forEach(hook => {
82
+ console.log(` └─ ${hook}`);
83
+ });
84
+ console.log('');
85
+ console.log(' Permissions Required:');
86
+ console.log(` └─ ${pluginCreator.permissions.join(', ')}`);
87
+ console.log('');
88
+ if (pluginCreator.securityAudit) {
89
+ console.log(' Security Audit:');
90
+ console.log(` ├─ Auditor: ${pluginCreator.securityAudit.auditor}`);
91
+ console.log(` ├─ Date: ${pluginCreator.securityAudit.auditDate}`);
92
+ console.log(` └─ Passed: ${pluginCreator.securityAudit.passed ? '✓ Yes' : '✗ No'}`);
93
+ console.log('');
94
+ }
95
+ console.log(' To install:');
96
+ console.log(' $ claude-flow plugins install -n plugin-creator');
97
+ console.log('');
98
+ }
99
+ // Summary
100
+ console.log('═══════════════════════════════════════════════════════════════');
101
+ console.log(' DEMO COMPLETE ');
102
+ console.log('═══════════════════════════════════════════════════════════════');
103
+ console.log('');
104
+ console.log(' The IPFS-based Plugin Store is working!');
105
+ console.log('');
106
+ console.log(' Features demonstrated:');
107
+ console.log(' ✅ Registry discovery via IPNS');
108
+ console.log(' ✅ Plugin search with full-text matching');
109
+ console.log(' ✅ Official/Verified plugin filtering');
110
+ console.log(' ✅ Plugin Creator Pro available for download');
111
+ console.log(' ✅ Security audit verification');
112
+ console.log(' ✅ Content-addressed storage (CID)');
113
+ console.log('');
114
+ console.log(' CLI Commands:');
115
+ console.log(' $ claude-flow plugins list # List all plugins');
116
+ console.log(' $ claude-flow plugins list --official # Official only');
117
+ console.log(' $ claude-flow plugins search -q neural # Search plugins');
118
+ console.log(' $ claude-flow plugins info -n plugin-creator');
119
+ console.log(' $ claude-flow plugins install -n plugin-creator');
120
+ console.log('');
121
+ }
122
+ demo().catch(err => {
123
+ console.error('Demo failed:', err);
124
+ process.exit(1);
125
+ });
126
+ //# sourceMappingURL=demo-plugin-store.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"demo-plugin-store.js","sourceRoot":"","sources":["../../../../src/plugins/tests/demo-plugin-store.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,12 @@
1
+ #!/usr/bin/env npx tsx
2
+ /**
3
+ * Standalone Plugin Store Test
4
+ * Run this in any environment to verify the IPFS-based plugin store works
5
+ *
6
+ * Usage:
7
+ * npx tsx standalone-test.ts
8
+ * # or
9
+ * npm run test:plugin-store
10
+ */
11
+ export {};
12
+ //# sourceMappingURL=standalone-test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"standalone-test.d.ts","sourceRoot":"","sources":["../../../../src/plugins/tests/standalone-test.ts"],"names":[],"mappings":";AACA;;;;;;;;GAQG"}
@@ -0,0 +1,188 @@
1
+ #!/usr/bin/env npx tsx
2
+ /**
3
+ * Standalone Plugin Store Test
4
+ * Run this in any environment to verify the IPFS-based plugin store works
5
+ *
6
+ * Usage:
7
+ * npx tsx standalone-test.ts
8
+ * # or
9
+ * npm run test:plugin-store
10
+ */
11
+ import { createPluginDiscoveryService, searchPlugins, getFeaturedPlugins, getOfficialPlugins, getPluginSearchSuggestions, getPluginTagCloud, findSimilarPlugins, } from '../store/index.js';
12
+ async function main() {
13
+ console.log('');
14
+ console.log('╔══════════════════════════════════════════════════════════════╗');
15
+ console.log('║ CLAUDE FLOW V3 - STANDALONE PLUGIN STORE TEST ║');
16
+ console.log('║ IPFS-Based Decentralized Plugin Marketplace ║');
17
+ console.log('╚══════════════════════════════════════════════════════════════╝');
18
+ console.log('');
19
+ let passed = 0;
20
+ let failed = 0;
21
+ // Test 1: Discovery Service Creation
22
+ console.log('▶ Test 1: Create Discovery Service');
23
+ try {
24
+ const discovery = createPluginDiscoveryService();
25
+ const registries = discovery.listRegistries();
26
+ console.log(` ✅ Created service with ${registries.length} bootstrap registries`);
27
+ passed++;
28
+ }
29
+ catch (e) {
30
+ console.log(` ❌ Failed: ${e.message}`);
31
+ failed++;
32
+ }
33
+ // Test 2: Discover Registry
34
+ console.log('▶ Test 2: Discover Registry via IPNS');
35
+ let registry = null;
36
+ try {
37
+ const discovery = createPluginDiscoveryService();
38
+ const result = await discovery.discoverRegistry();
39
+ if (result.success && result.registry) {
40
+ registry = result.registry;
41
+ console.log(` ✅ Discovered ${result.registry.plugins.length} plugins from ${result.source}`);
42
+ passed++;
43
+ }
44
+ else {
45
+ throw new Error(result.error || 'No registry');
46
+ }
47
+ }
48
+ catch (e) {
49
+ console.log(` ❌ Failed: ${e.message}`);
50
+ failed++;
51
+ }
52
+ if (!registry) {
53
+ console.log('\n❌ Cannot continue without registry\n');
54
+ process.exit(1);
55
+ }
56
+ // Test 3: Search Plugins
57
+ console.log('▶ Test 3: Search for "plugin creator"');
58
+ try {
59
+ const results = searchPlugins(registry, { query: 'plugin creator' });
60
+ const found = results.plugins.find(p => p.id === 'plugin-creator');
61
+ if (found) {
62
+ console.log(` ✅ Found Plugin Creator Pro v${found.version}`);
63
+ passed++;
64
+ }
65
+ else {
66
+ throw new Error('Plugin Creator not found in search results');
67
+ }
68
+ }
69
+ catch (e) {
70
+ console.log(` ❌ Failed: ${e.message}`);
71
+ failed++;
72
+ }
73
+ // Test 4: Get Official Plugins
74
+ console.log('▶ Test 4: Get Official Plugins');
75
+ try {
76
+ const official = getOfficialPlugins(registry);
77
+ console.log(` ✅ Found ${official.length} official plugins:`);
78
+ official.forEach(p => console.log(` - ${p.displayName} (${p.id})`));
79
+ passed++;
80
+ }
81
+ catch (e) {
82
+ console.log(` ❌ Failed: ${e.message}`);
83
+ failed++;
84
+ }
85
+ // Test 5: Get Featured Plugins
86
+ console.log('▶ Test 5: Get Featured Plugins');
87
+ try {
88
+ const featured = getFeaturedPlugins(registry);
89
+ const hasPluginCreator = featured.some(p => p.id === 'plugin-creator');
90
+ console.log(` ✅ Found ${featured.length} featured plugins (Plugin Creator featured: ${hasPluginCreator})`);
91
+ passed++;
92
+ }
93
+ catch (e) {
94
+ console.log(` ❌ Failed: ${e.message}`);
95
+ failed++;
96
+ }
97
+ // Test 6: Search with Filters
98
+ console.log('▶ Test 6: Search with Filters (verified only)');
99
+ try {
100
+ const results = searchPlugins(registry, { verified: true });
101
+ console.log(` ✅ Found ${results.plugins.length} verified plugins`);
102
+ passed++;
103
+ }
104
+ catch (e) {
105
+ console.log(` ❌ Failed: ${e.message}`);
106
+ failed++;
107
+ }
108
+ // Test 7: Plugin Details
109
+ console.log('▶ Test 7: Get Plugin Creator Details');
110
+ try {
111
+ const plugin = registry.plugins.find((p) => p.id === 'plugin-creator');
112
+ if (plugin) {
113
+ console.log(` ✅ Plugin Creator Pro Details:`);
114
+ console.log(` Version: ${plugin.version}`);
115
+ console.log(` Trust: ${plugin.trustLevel}`);
116
+ console.log(` Commands: ${plugin.commands.length}`);
117
+ console.log(` Downloads: ${plugin.downloads.toLocaleString()}`);
118
+ console.log(` Rating: ${plugin.rating}/5`);
119
+ passed++;
120
+ }
121
+ else {
122
+ throw new Error('Plugin not found');
123
+ }
124
+ }
125
+ catch (e) {
126
+ console.log(` ❌ Failed: ${e.message}`);
127
+ failed++;
128
+ }
129
+ // Test 8: Tag Cloud
130
+ console.log('▶ Test 8: Get Tag Cloud');
131
+ try {
132
+ const tags = getPluginTagCloud(registry);
133
+ console.log(` ✅ Found ${tags.size} unique tags`);
134
+ passed++;
135
+ }
136
+ catch (e) {
137
+ console.log(` ❌ Failed: ${e.message}`);
138
+ failed++;
139
+ }
140
+ // Test 9: Search Suggestions
141
+ console.log('▶ Test 9: Get Search Suggestions');
142
+ try {
143
+ const suggestions = getPluginSearchSuggestions(registry, 'plug');
144
+ console.log(` ✅ Got ${suggestions.length} suggestions for "plug"`);
145
+ passed++;
146
+ }
147
+ catch (e) {
148
+ console.log(` ❌ Failed: ${e.message}`);
149
+ failed++;
150
+ }
151
+ // Test 10: Similar Plugins
152
+ console.log('▶ Test 10: Find Similar Plugins');
153
+ try {
154
+ const similar = findSimilarPlugins(registry, '@claude-flow/neural', 3);
155
+ console.log(` ✅ Found ${similar.length} similar plugins to @claude-flow/neural`);
156
+ passed++;
157
+ }
158
+ catch (e) {
159
+ console.log(` ❌ Failed: ${e.message}`);
160
+ failed++;
161
+ }
162
+ // Summary
163
+ console.log('');
164
+ console.log('═══════════════════════════════════════════════════════════════');
165
+ console.log(' TEST RESULTS ');
166
+ console.log('═══════════════════════════════════════════════════════════════');
167
+ console.log('');
168
+ console.log(` Total: ${passed + failed}`);
169
+ console.log(` ✅ Passed: ${passed}`);
170
+ console.log(` ❌ Failed: ${failed}`);
171
+ console.log('');
172
+ if (failed === 0) {
173
+ console.log(' 🎉 All tests passed! Plugin Store is working correctly.');
174
+ console.log('');
175
+ console.log(' Available CLI Commands:');
176
+ console.log(' npx @claude-flow/cli plugins list');
177
+ console.log(' npx @claude-flow/cli plugins list --official');
178
+ console.log(' npx @claude-flow/cli plugins search -q "plugin creator"');
179
+ console.log(' npx @claude-flow/cli plugins info -n plugin-creator');
180
+ console.log('');
181
+ }
182
+ process.exit(failed > 0 ? 1 : 0);
183
+ }
184
+ main().catch(err => {
185
+ console.error('Fatal error:', err);
186
+ process.exit(1);
187
+ });
188
+ //# sourceMappingURL=standalone-test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"standalone-test.js","sourceRoot":"","sources":["../../../../src/plugins/tests/standalone-test.ts"],"names":[],"mappings":"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"}