@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.
- package/.claude/settings.json +2 -2
- package/dist/src/commands/hooks.d.ts.map +1 -1
- package/dist/src/commands/hooks.js +45 -5
- package/dist/src/commands/hooks.js.map +1 -1
- package/dist/src/commands/init.d.ts.map +1 -1
- package/dist/src/commands/init.js +80 -9
- package/dist/src/commands/init.js.map +1 -1
- package/dist/src/commands/memory.d.ts.map +1 -1
- package/dist/src/commands/memory.js +221 -2
- package/dist/src/commands/memory.js.map +1 -1
- package/dist/src/commands/plugins.d.ts +1 -0
- package/dist/src/commands/plugins.d.ts.map +1 -1
- package/dist/src/commands/plugins.js +439 -89
- package/dist/src/commands/plugins.js.map +1 -1
- package/dist/src/commands/transfer-store.d.ts +13 -0
- package/dist/src/commands/transfer-store.d.ts.map +1 -0
- package/dist/src/commands/transfer-store.js +428 -0
- package/dist/src/commands/transfer-store.js.map +1 -0
- package/dist/src/init/mcp-generator.d.ts +9 -0
- package/dist/src/init/mcp-generator.d.ts.map +1 -1
- package/dist/src/init/mcp-generator.js +57 -28
- package/dist/src/init/mcp-generator.js.map +1 -1
- package/dist/src/init/settings-generator.d.ts.map +1 -1
- package/dist/src/init/settings-generator.js +4 -2
- package/dist/src/init/settings-generator.js.map +1 -1
- package/dist/src/mcp-tools/index.d.ts +1 -0
- package/dist/src/mcp-tools/index.d.ts.map +1 -1
- package/dist/src/mcp-tools/index.js +1 -0
- package/dist/src/mcp-tools/index.js.map +1 -1
- package/dist/src/mcp-tools/transfer-tools.d.ts +14 -0
- package/dist/src/mcp-tools/transfer-tools.d.ts.map +1 -0
- package/dist/src/mcp-tools/transfer-tools.js +396 -0
- package/dist/src/mcp-tools/transfer-tools.js.map +1 -0
- package/dist/src/plugins/store/discovery.d.ts +73 -0
- package/dist/src/plugins/store/discovery.d.ts.map +1 -0
- package/dist/src/plugins/store/discovery.js +568 -0
- package/dist/src/plugins/store/discovery.js.map +1 -0
- package/dist/src/plugins/store/index.d.ts +76 -0
- package/dist/src/plugins/store/index.d.ts.map +1 -0
- package/dist/src/plugins/store/index.js +141 -0
- package/dist/src/plugins/store/index.js.map +1 -0
- package/dist/src/plugins/store/search.d.ts +46 -0
- package/dist/src/plugins/store/search.d.ts.map +1 -0
- package/dist/src/plugins/store/search.js +230 -0
- package/dist/src/plugins/store/search.js.map +1 -0
- package/dist/src/plugins/store/types.d.ts +274 -0
- package/dist/src/plugins/store/types.d.ts.map +1 -0
- package/dist/src/plugins/store/types.js +7 -0
- package/dist/src/plugins/store/types.js.map +1 -0
- package/dist/src/plugins/tests/demo-plugin-store.d.ts +7 -0
- package/dist/src/plugins/tests/demo-plugin-store.d.ts.map +1 -0
- package/dist/src/plugins/tests/demo-plugin-store.js +126 -0
- package/dist/src/plugins/tests/demo-plugin-store.js.map +1 -0
- package/dist/src/plugins/tests/standalone-test.d.ts +12 -0
- package/dist/src/plugins/tests/standalone-test.d.ts.map +1 -0
- package/dist/src/plugins/tests/standalone-test.js +188 -0
- package/dist/src/plugins/tests/standalone-test.js.map +1 -0
- package/dist/src/plugins/tests/test-plugin-store.d.ts +7 -0
- package/dist/src/plugins/tests/test-plugin-store.d.ts.map +1 -0
- package/dist/src/plugins/tests/test-plugin-store.js +206 -0
- package/dist/src/plugins/tests/test-plugin-store.js.map +1 -0
- package/dist/src/transfer/anonymization/index.d.ts +25 -0
- package/dist/src/transfer/anonymization/index.d.ts.map +1 -0
- package/dist/src/transfer/anonymization/index.js +175 -0
- package/dist/src/transfer/anonymization/index.js.map +1 -0
- package/dist/src/transfer/deploy-seraphine.d.ts +13 -0
- package/dist/src/transfer/deploy-seraphine.d.ts.map +1 -0
- package/dist/src/transfer/deploy-seraphine.js +205 -0
- package/dist/src/transfer/deploy-seraphine.js.map +1 -0
- package/dist/src/transfer/export.d.ts +25 -0
- package/dist/src/transfer/export.d.ts.map +1 -0
- package/dist/src/transfer/export.js +113 -0
- package/dist/src/transfer/export.js.map +1 -0
- package/dist/src/transfer/index.d.ts +12 -0
- package/dist/src/transfer/index.d.ts.map +1 -0
- package/dist/src/transfer/index.js +31 -0
- package/dist/src/transfer/index.js.map +1 -0
- package/dist/src/transfer/ipfs/client.d.ts +31 -0
- package/dist/src/transfer/ipfs/client.d.ts.map +1 -0
- package/dist/src/transfer/ipfs/client.js +74 -0
- package/dist/src/transfer/ipfs/client.js.map +1 -0
- package/dist/src/transfer/ipfs/upload.d.ts +85 -0
- package/dist/src/transfer/ipfs/upload.d.ts.map +1 -0
- package/dist/src/transfer/ipfs/upload.js +319 -0
- package/dist/src/transfer/ipfs/upload.js.map +1 -0
- package/dist/src/transfer/models/seraphine.d.ts +72 -0
- package/dist/src/transfer/models/seraphine.d.ts.map +1 -0
- package/dist/src/transfer/models/seraphine.js +373 -0
- package/dist/src/transfer/models/seraphine.js.map +1 -0
- package/dist/src/transfer/serialization/cfp.d.ts +49 -0
- package/dist/src/transfer/serialization/cfp.d.ts.map +1 -0
- package/dist/src/transfer/serialization/cfp.js +180 -0
- package/dist/src/transfer/serialization/cfp.js.map +1 -0
- package/dist/src/transfer/store/discovery.d.ts +84 -0
- package/dist/src/transfer/store/discovery.d.ts.map +1 -0
- package/dist/src/transfer/store/discovery.js +275 -0
- package/dist/src/transfer/store/discovery.js.map +1 -0
- package/dist/src/transfer/store/download.d.ts +70 -0
- package/dist/src/transfer/store/download.d.ts.map +1 -0
- package/dist/src/transfer/store/download.js +295 -0
- package/dist/src/transfer/store/download.js.map +1 -0
- package/dist/src/transfer/store/index.d.ts +84 -0
- package/dist/src/transfer/store/index.d.ts.map +1 -0
- package/dist/src/transfer/store/index.js +153 -0
- package/dist/src/transfer/store/index.js.map +1 -0
- package/dist/src/transfer/store/publish.d.ts +76 -0
- package/dist/src/transfer/store/publish.d.ts.map +1 -0
- package/dist/src/transfer/store/publish.js +262 -0
- package/dist/src/transfer/store/publish.js.map +1 -0
- package/dist/src/transfer/store/registry.d.ts +58 -0
- package/dist/src/transfer/store/registry.d.ts.map +1 -0
- package/dist/src/transfer/store/registry.js +285 -0
- package/dist/src/transfer/store/registry.js.map +1 -0
- package/dist/src/transfer/store/search.d.ts +54 -0
- package/dist/src/transfer/store/search.d.ts.map +1 -0
- package/dist/src/transfer/store/search.js +232 -0
- package/dist/src/transfer/store/search.js.map +1 -0
- package/dist/src/transfer/store/tests/standalone-test.d.ts +12 -0
- package/dist/src/transfer/store/tests/standalone-test.d.ts.map +1 -0
- package/dist/src/transfer/store/tests/standalone-test.js +190 -0
- package/dist/src/transfer/store/tests/standalone-test.js.map +1 -0
- package/dist/src/transfer/store/types.d.ts +193 -0
- package/dist/src/transfer/store/types.d.ts.map +1 -0
- package/dist/src/transfer/store/types.js +6 -0
- package/dist/src/transfer/store/types.js.map +1 -0
- package/dist/src/transfer/test-seraphine.d.ts +6 -0
- package/dist/src/transfer/test-seraphine.d.ts.map +1 -0
- package/dist/src/transfer/test-seraphine.js +105 -0
- package/dist/src/transfer/test-seraphine.js.map +1 -0
- package/dist/src/transfer/tests/test-store.d.ts +7 -0
- package/dist/src/transfer/tests/test-store.d.ts.map +1 -0
- package/dist/src/transfer/tests/test-store.js +214 -0
- package/dist/src/transfer/tests/test-store.js.map +1 -0
- package/dist/src/transfer/types.d.ts +245 -0
- package/dist/src/transfer/types.d.ts.map +1 -0
- package/dist/src/transfer/types.js +6 -0
- package/dist/src/transfer/types.js.map +1 -0
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +3 -1
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Plugin Store Module
|
|
3
|
+
* Decentralized plugin marketplace using IPFS
|
|
4
|
+
*
|
|
5
|
+
* Provides:
|
|
6
|
+
* - Plugin discovery via IPNS
|
|
7
|
+
* - Search with filters
|
|
8
|
+
* - Download with verification
|
|
9
|
+
* - Publish with signing
|
|
10
|
+
*/
|
|
11
|
+
export * from './types.js';
|
|
12
|
+
export { PluginDiscoveryService, createPluginDiscoveryService, DEFAULT_PLUGIN_STORE_CONFIG, type PluginDiscoveryResult, } from './discovery.js';
|
|
13
|
+
export { searchPlugins, getPluginSearchSuggestions, getPluginTagCloud, getPluginCategoryStats, findSimilarPlugins, getFeaturedPlugins, getTrendingPlugins, getNewestPlugins, getOfficialPlugins, getPluginsByPermission, } from './search.js';
|
|
14
|
+
import type { PluginRegistry, PluginEntry, PluginSearchOptions, PluginSearchResult, PluginStoreConfig } from './types.js';
|
|
15
|
+
import { PluginDiscoveryService } from './discovery.js';
|
|
16
|
+
/**
|
|
17
|
+
* High-level Plugin Store API
|
|
18
|
+
*/
|
|
19
|
+
export declare class PluginStore {
|
|
20
|
+
private discovery;
|
|
21
|
+
private registry;
|
|
22
|
+
constructor(config?: Partial<PluginStoreConfig>);
|
|
23
|
+
/**
|
|
24
|
+
* Initialize the store by discovering the registry
|
|
25
|
+
*/
|
|
26
|
+
initialize(registryName?: string): Promise<boolean>;
|
|
27
|
+
/**
|
|
28
|
+
* Check if store is initialized
|
|
29
|
+
*/
|
|
30
|
+
isInitialized(): boolean;
|
|
31
|
+
/**
|
|
32
|
+
* Get the current registry
|
|
33
|
+
*/
|
|
34
|
+
getRegistry(): PluginRegistry | null;
|
|
35
|
+
/**
|
|
36
|
+
* Search plugins
|
|
37
|
+
*/
|
|
38
|
+
search(options?: PluginSearchOptions): PluginSearchResult;
|
|
39
|
+
/**
|
|
40
|
+
* Get a plugin by ID
|
|
41
|
+
*/
|
|
42
|
+
getPlugin(pluginId: string): PluginEntry | undefined;
|
|
43
|
+
/**
|
|
44
|
+
* Get similar plugins
|
|
45
|
+
*/
|
|
46
|
+
getSimilarPlugins(pluginId: string, limit?: number): PluginEntry[];
|
|
47
|
+
/**
|
|
48
|
+
* Get featured plugins
|
|
49
|
+
*/
|
|
50
|
+
getFeatured(): PluginEntry[];
|
|
51
|
+
/**
|
|
52
|
+
* Get official plugins
|
|
53
|
+
*/
|
|
54
|
+
getOfficial(): PluginEntry[];
|
|
55
|
+
/**
|
|
56
|
+
* Get trending plugins
|
|
57
|
+
*/
|
|
58
|
+
getTrending(): PluginEntry[];
|
|
59
|
+
/**
|
|
60
|
+
* Get newest plugins
|
|
61
|
+
*/
|
|
62
|
+
getNewest(): PluginEntry[];
|
|
63
|
+
/**
|
|
64
|
+
* Get discovery service
|
|
65
|
+
*/
|
|
66
|
+
getDiscovery(): PluginDiscoveryService;
|
|
67
|
+
/**
|
|
68
|
+
* Refresh registry
|
|
69
|
+
*/
|
|
70
|
+
refresh(registryName?: string): Promise<boolean>;
|
|
71
|
+
}
|
|
72
|
+
/**
|
|
73
|
+
* Create a new plugin store instance
|
|
74
|
+
*/
|
|
75
|
+
export declare function createPluginStore(config?: Partial<PluginStoreConfig>): PluginStore;
|
|
76
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/plugins/store/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAGH,cAAc,YAAY,CAAC;AAG3B,OAAO,EACL,sBAAsB,EACtB,4BAA4B,EAC5B,2BAA2B,EAC3B,KAAK,qBAAqB,GAC3B,MAAM,gBAAgB,CAAC;AAGxB,OAAO,EACL,aAAa,EACb,0BAA0B,EAC1B,iBAAiB,EACjB,sBAAsB,EACtB,kBAAkB,EAClB,kBAAkB,EAClB,kBAAkB,EAClB,gBAAgB,EAChB,kBAAkB,EAClB,sBAAsB,GACvB,MAAM,aAAa,CAAC;AAGrB,OAAO,KAAK,EACV,cAAc,EACd,WAAW,EACX,mBAAmB,EACnB,kBAAkB,EAClB,iBAAiB,EAClB,MAAM,YAAY,CAAC;AACpB,OAAO,EAAE,sBAAsB,EAAE,MAAM,gBAAgB,CAAC;AAGxD;;GAEG;AACH,qBAAa,WAAW;IACtB,OAAO,CAAC,SAAS,CAAyB;IAC1C,OAAO,CAAC,QAAQ,CAA+B;gBAEnC,MAAM,CAAC,EAAE,OAAO,CAAC,iBAAiB,CAAC;IAI/C;;OAEG;IACG,UAAU,CAAC,YAAY,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IASzD;;OAEG;IACH,aAAa,IAAI,OAAO;IAIxB;;OAEG;IACH,WAAW,IAAI,cAAc,GAAG,IAAI;IAIpC;;OAEG;IACH,MAAM,CAAC,OAAO,GAAE,mBAAwB,GAAG,kBAAkB;IAc7D;;OAEG;IACH,SAAS,CAAC,QAAQ,EAAE,MAAM,GAAG,WAAW,GAAG,SAAS;IAIpD;;OAEG;IACH,iBAAiB,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,GAAE,MAAU,GAAG,WAAW,EAAE;IAKrE;;OAEG;IACH,WAAW,IAAI,WAAW,EAAE;IAO5B;;OAEG;IACH,WAAW,IAAI,WAAW,EAAE;IAO5B;;OAEG;IACH,WAAW,IAAI,WAAW,EAAE;IAO5B;;OAEG;IACH,SAAS,IAAI,WAAW,EAAE;IAO1B;;OAEG;IACH,YAAY,IAAI,sBAAsB;IAItC;;OAEG;IACG,OAAO,CAAC,YAAY,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;CAIvD;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC,iBAAiB,CAAC,GAAG,WAAW,CAElF"}
|
|
@@ -0,0 +1,141 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Plugin Store Module
|
|
3
|
+
* Decentralized plugin marketplace using IPFS
|
|
4
|
+
*
|
|
5
|
+
* Provides:
|
|
6
|
+
* - Plugin discovery via IPNS
|
|
7
|
+
* - Search with filters
|
|
8
|
+
* - Download with verification
|
|
9
|
+
* - Publish with signing
|
|
10
|
+
*/
|
|
11
|
+
// Re-export types
|
|
12
|
+
export * from './types.js';
|
|
13
|
+
// Re-export discovery
|
|
14
|
+
export { PluginDiscoveryService, createPluginDiscoveryService, DEFAULT_PLUGIN_STORE_CONFIG, } from './discovery.js';
|
|
15
|
+
// Re-export search
|
|
16
|
+
export { searchPlugins, getPluginSearchSuggestions, getPluginTagCloud, getPluginCategoryStats, findSimilarPlugins, getFeaturedPlugins, getTrendingPlugins, getNewestPlugins, getOfficialPlugins, getPluginsByPermission, } from './search.js';
|
|
17
|
+
import { PluginDiscoveryService } from './discovery.js';
|
|
18
|
+
import { searchPlugins, findSimilarPlugins } from './search.js';
|
|
19
|
+
/**
|
|
20
|
+
* High-level Plugin Store API
|
|
21
|
+
*/
|
|
22
|
+
export class PluginStore {
|
|
23
|
+
discovery;
|
|
24
|
+
registry = null;
|
|
25
|
+
constructor(config) {
|
|
26
|
+
this.discovery = new PluginDiscoveryService(config);
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* Initialize the store by discovering the registry
|
|
30
|
+
*/
|
|
31
|
+
async initialize(registryName) {
|
|
32
|
+
const result = await this.discovery.discoverRegistry(registryName);
|
|
33
|
+
if (result.success && result.registry) {
|
|
34
|
+
this.registry = result.registry;
|
|
35
|
+
return true;
|
|
36
|
+
}
|
|
37
|
+
return false;
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* Check if store is initialized
|
|
41
|
+
*/
|
|
42
|
+
isInitialized() {
|
|
43
|
+
return this.registry !== null;
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* Get the current registry
|
|
47
|
+
*/
|
|
48
|
+
getRegistry() {
|
|
49
|
+
return this.registry;
|
|
50
|
+
}
|
|
51
|
+
/**
|
|
52
|
+
* Search plugins
|
|
53
|
+
*/
|
|
54
|
+
search(options = {}) {
|
|
55
|
+
if (!this.registry) {
|
|
56
|
+
return {
|
|
57
|
+
plugins: [],
|
|
58
|
+
total: 0,
|
|
59
|
+
page: 1,
|
|
60
|
+
pageSize: options.limit || 20,
|
|
61
|
+
hasMore: false,
|
|
62
|
+
query: options,
|
|
63
|
+
};
|
|
64
|
+
}
|
|
65
|
+
return searchPlugins(this.registry, options);
|
|
66
|
+
}
|
|
67
|
+
/**
|
|
68
|
+
* Get a plugin by ID
|
|
69
|
+
*/
|
|
70
|
+
getPlugin(pluginId) {
|
|
71
|
+
return this.registry?.plugins.find(p => p.id === pluginId);
|
|
72
|
+
}
|
|
73
|
+
/**
|
|
74
|
+
* Get similar plugins
|
|
75
|
+
*/
|
|
76
|
+
getSimilarPlugins(pluginId, limit = 5) {
|
|
77
|
+
if (!this.registry)
|
|
78
|
+
return [];
|
|
79
|
+
return findSimilarPlugins(this.registry, pluginId, limit);
|
|
80
|
+
}
|
|
81
|
+
/**
|
|
82
|
+
* Get featured plugins
|
|
83
|
+
*/
|
|
84
|
+
getFeatured() {
|
|
85
|
+
if (!this.registry)
|
|
86
|
+
return [];
|
|
87
|
+
return this.registry.featured
|
|
88
|
+
.map(id => this.registry.plugins.find(p => p.id === id))
|
|
89
|
+
.filter((p) => p !== undefined);
|
|
90
|
+
}
|
|
91
|
+
/**
|
|
92
|
+
* Get official plugins
|
|
93
|
+
*/
|
|
94
|
+
getOfficial() {
|
|
95
|
+
if (!this.registry)
|
|
96
|
+
return [];
|
|
97
|
+
return this.registry.official
|
|
98
|
+
.map(id => this.registry.plugins.find(p => p.id === id))
|
|
99
|
+
.filter((p) => p !== undefined);
|
|
100
|
+
}
|
|
101
|
+
/**
|
|
102
|
+
* Get trending plugins
|
|
103
|
+
*/
|
|
104
|
+
getTrending() {
|
|
105
|
+
if (!this.registry)
|
|
106
|
+
return [];
|
|
107
|
+
return this.registry.trending
|
|
108
|
+
.map(id => this.registry.plugins.find(p => p.id === id))
|
|
109
|
+
.filter((p) => p !== undefined);
|
|
110
|
+
}
|
|
111
|
+
/**
|
|
112
|
+
* Get newest plugins
|
|
113
|
+
*/
|
|
114
|
+
getNewest() {
|
|
115
|
+
if (!this.registry)
|
|
116
|
+
return [];
|
|
117
|
+
return this.registry.newest
|
|
118
|
+
.map(id => this.registry.plugins.find(p => p.id === id))
|
|
119
|
+
.filter((p) => p !== undefined);
|
|
120
|
+
}
|
|
121
|
+
/**
|
|
122
|
+
* Get discovery service
|
|
123
|
+
*/
|
|
124
|
+
getDiscovery() {
|
|
125
|
+
return this.discovery;
|
|
126
|
+
}
|
|
127
|
+
/**
|
|
128
|
+
* Refresh registry
|
|
129
|
+
*/
|
|
130
|
+
async refresh(registryName) {
|
|
131
|
+
this.discovery.clearCache();
|
|
132
|
+
return this.initialize(registryName);
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
/**
|
|
136
|
+
* Create a new plugin store instance
|
|
137
|
+
*/
|
|
138
|
+
export function createPluginStore(config) {
|
|
139
|
+
return new PluginStore(config);
|
|
140
|
+
}
|
|
141
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/plugins/store/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,kBAAkB;AAClB,cAAc,YAAY,CAAC;AAE3B,sBAAsB;AACtB,OAAO,EACL,sBAAsB,EACtB,4BAA4B,EAC5B,2BAA2B,GAE5B,MAAM,gBAAgB,CAAC;AAExB,mBAAmB;AACnB,OAAO,EACL,aAAa,EACb,0BAA0B,EAC1B,iBAAiB,EACjB,sBAAsB,EACtB,kBAAkB,EAClB,kBAAkB,EAClB,kBAAkB,EAClB,gBAAgB,EAChB,kBAAkB,EAClB,sBAAsB,GACvB,MAAM,aAAa,CAAC;AAUrB,OAAO,EAAE,sBAAsB,EAAE,MAAM,gBAAgB,CAAC;AACxD,OAAO,EAAE,aAAa,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AAEhE;;GAEG;AACH,MAAM,OAAO,WAAW;IACd,SAAS,CAAyB;IAClC,QAAQ,GAA0B,IAAI,CAAC;IAE/C,YAAY,MAAmC;QAC7C,IAAI,CAAC,SAAS,GAAG,IAAI,sBAAsB,CAAC,MAAM,CAAC,CAAC;IACtD,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,UAAU,CAAC,YAAqB;QACpC,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,gBAAgB,CAAC,YAAY,CAAC,CAAC;QACnE,IAAI,MAAM,CAAC,OAAO,IAAI,MAAM,CAAC,QAAQ,EAAE,CAAC;YACtC,IAAI,CAAC,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC;YAChC,OAAO,IAAI,CAAC;QACd,CAAC;QACD,OAAO,KAAK,CAAC;IACf,CAAC;IAED;;OAEG;IACH,aAAa;QACX,OAAO,IAAI,CAAC,QAAQ,KAAK,IAAI,CAAC;IAChC,CAAC;IAED;;OAEG;IACH,WAAW;QACT,OAAO,IAAI,CAAC,QAAQ,CAAC;IACvB,CAAC;IAED;;OAEG;IACH,MAAM,CAAC,UAA+B,EAAE;QACtC,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;YACnB,OAAO;gBACL,OAAO,EAAE,EAAE;gBACX,KAAK,EAAE,CAAC;gBACR,IAAI,EAAE,CAAC;gBACP,QAAQ,EAAE,OAAO,CAAC,KAAK,IAAI,EAAE;gBAC7B,OAAO,EAAE,KAAK;gBACd,KAAK,EAAE,OAAO;aACf,CAAC;QACJ,CAAC;QACD,OAAO,aAAa,CAAC,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;IAC/C,CAAC;IAED;;OAEG;IACH,SAAS,CAAC,QAAgB;QACxB,OAAO,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,QAAQ,CAAC,CAAC;IAC7D,CAAC;IAED;;OAEG;IACH,iBAAiB,CAAC,QAAgB,EAAE,QAAgB,CAAC;QACnD,IAAI,CAAC,IAAI,CAAC,QAAQ;YAAE,OAAO,EAAE,CAAC;QAC9B,OAAO,kBAAkB,CAAC,IAAI,CAAC,QAAQ,EAAE,QAAQ,EAAE,KAAK,CAAC,CAAC;IAC5D,CAAC;IAED;;OAEG;IACH,WAAW;QACT,IAAI,CAAC,IAAI,CAAC,QAAQ;YAAE,OAAO,EAAE,CAAC;QAC9B,OAAO,IAAI,CAAC,QAAQ,CAAC,QAAQ;aAC1B,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,QAAS,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;aACxD,MAAM,CAAC,CAAC,CAAC,EAAoB,EAAE,CAAC,CAAC,KAAK,SAAS,CAAC,CAAC;IACtD,CAAC;IAED;;OAEG;IACH,WAAW;QACT,IAAI,CAAC,IAAI,CAAC,QAAQ;YAAE,OAAO,EAAE,CAAC;QAC9B,OAAO,IAAI,CAAC,QAAQ,CAAC,QAAQ;aAC1B,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,QAAS,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;aACxD,MAAM,CAAC,CAAC,CAAC,EAAoB,EAAE,CAAC,CAAC,KAAK,SAAS,CAAC,CAAC;IACtD,CAAC;IAED;;OAEG;IACH,WAAW;QACT,IAAI,CAAC,IAAI,CAAC,QAAQ;YAAE,OAAO,EAAE,CAAC;QAC9B,OAAO,IAAI,CAAC,QAAQ,CAAC,QAAQ;aAC1B,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,QAAS,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;aACxD,MAAM,CAAC,CAAC,CAAC,EAAoB,EAAE,CAAC,CAAC,KAAK,SAAS,CAAC,CAAC;IACtD,CAAC;IAED;;OAEG;IACH,SAAS;QACP,IAAI,CAAC,IAAI,CAAC,QAAQ;YAAE,OAAO,EAAE,CAAC;QAC9B,OAAO,IAAI,CAAC,QAAQ,CAAC,MAAM;aACxB,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,QAAS,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;aACxD,MAAM,CAAC,CAAC,CAAC,EAAoB,EAAE,CAAC,CAAC,KAAK,SAAS,CAAC,CAAC;IACtD,CAAC;IAED;;OAEG;IACH,YAAY;QACV,OAAO,IAAI,CAAC,SAAS,CAAC;IACxB,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,OAAO,CAAC,YAAqB;QACjC,IAAI,CAAC,SAAS,CAAC,UAAU,EAAE,CAAC;QAC5B,OAAO,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC;IACvC,CAAC;CACF;AAED;;GAEG;AACH,MAAM,UAAU,iBAAiB,CAAC,MAAmC;IACnE,OAAO,IAAI,WAAW,CAAC,MAAM,CAAC,CAAC;AACjC,CAAC"}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Plugin Search Service
|
|
3
|
+
* Search and filter plugins from the registry
|
|
4
|
+
*/
|
|
5
|
+
import type { PluginEntry, PluginRegistry, PluginSearchOptions, PluginSearchResult } from './types.js';
|
|
6
|
+
/**
|
|
7
|
+
* Search plugins in the registry
|
|
8
|
+
*/
|
|
9
|
+
export declare function searchPlugins(registry: PluginRegistry, options?: PluginSearchOptions): PluginSearchResult;
|
|
10
|
+
/**
|
|
11
|
+
* Get search suggestions based on partial query
|
|
12
|
+
*/
|
|
13
|
+
export declare function getPluginSearchSuggestions(registry: PluginRegistry, partialQuery: string, limit?: number): string[];
|
|
14
|
+
/**
|
|
15
|
+
* Get tag cloud with counts
|
|
16
|
+
*/
|
|
17
|
+
export declare function getPluginTagCloud(registry: PluginRegistry): Map<string, number>;
|
|
18
|
+
/**
|
|
19
|
+
* Get category statistics
|
|
20
|
+
*/
|
|
21
|
+
export declare function getPluginCategoryStats(registry: PluginRegistry): Map<string, number>;
|
|
22
|
+
/**
|
|
23
|
+
* Find similar plugins based on tags and category
|
|
24
|
+
*/
|
|
25
|
+
export declare function findSimilarPlugins(registry: PluginRegistry, pluginId: string, limit?: number): PluginEntry[];
|
|
26
|
+
/**
|
|
27
|
+
* Get featured plugins
|
|
28
|
+
*/
|
|
29
|
+
export declare function getFeaturedPlugins(registry: PluginRegistry): PluginEntry[];
|
|
30
|
+
/**
|
|
31
|
+
* Get trending plugins
|
|
32
|
+
*/
|
|
33
|
+
export declare function getTrendingPlugins(registry: PluginRegistry): PluginEntry[];
|
|
34
|
+
/**
|
|
35
|
+
* Get newest plugins
|
|
36
|
+
*/
|
|
37
|
+
export declare function getNewestPlugins(registry: PluginRegistry): PluginEntry[];
|
|
38
|
+
/**
|
|
39
|
+
* Get official plugins
|
|
40
|
+
*/
|
|
41
|
+
export declare function getOfficialPlugins(registry: PluginRegistry): PluginEntry[];
|
|
42
|
+
/**
|
|
43
|
+
* Get plugins by permission
|
|
44
|
+
*/
|
|
45
|
+
export declare function getPluginsByPermission(registry: PluginRegistry, permission: string): PluginEntry[];
|
|
46
|
+
//# sourceMappingURL=search.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"search.d.ts","sourceRoot":"","sources":["../../../../src/plugins/store/search.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EACV,WAAW,EACX,cAAc,EACd,mBAAmB,EACnB,kBAAkB,EACnB,MAAM,YAAY,CAAC;AAEpB;;GAEG;AACH,wBAAgB,aAAa,CAC3B,QAAQ,EAAE,cAAc,EACxB,OAAO,GAAE,mBAAwB,GAChC,kBAAkB,CA2HpB;AAED;;GAEG;AACH,wBAAgB,0BAA0B,CACxC,QAAQ,EAAE,cAAc,EACxB,YAAY,EAAE,MAAM,EACpB,KAAK,GAAE,MAAW,GACjB,MAAM,EAAE,CA2BV;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,cAAc,GAAG,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAY/E;AAED;;GAEG;AACH,wBAAgB,sBAAsB,CAAC,QAAQ,EAAE,cAAc,GAAG,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAUpF;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAChC,QAAQ,EAAE,cAAc,EACxB,QAAQ,EAAE,MAAM,EAChB,KAAK,GAAE,MAAU,GAChB,WAAW,EAAE,CAqCf;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,cAAc,GAAG,WAAW,EAAE,CAI1E;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,cAAc,GAAG,WAAW,EAAE,CAI1E;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,cAAc,GAAG,WAAW,EAAE,CAIxE;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,cAAc,GAAG,WAAW,EAAE,CAI1E;AAED;;GAEG;AACH,wBAAgB,sBAAsB,CACpC,QAAQ,EAAE,cAAc,EACxB,UAAU,EAAE,MAAM,GACjB,WAAW,EAAE,CAIf"}
|
|
@@ -0,0 +1,230 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Plugin Search Service
|
|
3
|
+
* Search and filter plugins from the registry
|
|
4
|
+
*/
|
|
5
|
+
/**
|
|
6
|
+
* Search plugins in the registry
|
|
7
|
+
*/
|
|
8
|
+
export function searchPlugins(registry, options = {}) {
|
|
9
|
+
let plugins = [...registry.plugins];
|
|
10
|
+
// Text search (name, displayName, description, tags)
|
|
11
|
+
if (options.query) {
|
|
12
|
+
const query = options.query.toLowerCase();
|
|
13
|
+
plugins = plugins.filter(p => p.name.toLowerCase().includes(query) ||
|
|
14
|
+
p.displayName.toLowerCase().includes(query) ||
|
|
15
|
+
p.description.toLowerCase().includes(query) ||
|
|
16
|
+
p.tags.some(t => t.toLowerCase().includes(query)) ||
|
|
17
|
+
p.keywords.some(k => k.toLowerCase().includes(query)));
|
|
18
|
+
}
|
|
19
|
+
// Category filter
|
|
20
|
+
if (options.category) {
|
|
21
|
+
plugins = plugins.filter(p => p.categories.includes(options.category));
|
|
22
|
+
}
|
|
23
|
+
// Type filter
|
|
24
|
+
if (options.type) {
|
|
25
|
+
plugins = plugins.filter(p => p.type === options.type);
|
|
26
|
+
}
|
|
27
|
+
// Tags filter (match any)
|
|
28
|
+
if (options.tags && options.tags.length > 0) {
|
|
29
|
+
plugins = plugins.filter(p => options.tags.some(tag => p.tags.includes(tag)));
|
|
30
|
+
}
|
|
31
|
+
// Author filter
|
|
32
|
+
if (options.author) {
|
|
33
|
+
plugins = plugins.filter(p => p.author.id === options.author ||
|
|
34
|
+
p.author.displayName?.toLowerCase().includes(options.author.toLowerCase()));
|
|
35
|
+
}
|
|
36
|
+
// Rating filter
|
|
37
|
+
if (options.minRating !== undefined) {
|
|
38
|
+
plugins = plugins.filter(p => p.rating >= options.minRating);
|
|
39
|
+
}
|
|
40
|
+
// Downloads filter
|
|
41
|
+
if (options.minDownloads !== undefined) {
|
|
42
|
+
plugins = plugins.filter(p => p.downloads >= options.minDownloads);
|
|
43
|
+
}
|
|
44
|
+
// Verified filter
|
|
45
|
+
if (options.verified !== undefined) {
|
|
46
|
+
plugins = plugins.filter(p => p.verified === options.verified);
|
|
47
|
+
}
|
|
48
|
+
// Trust level filter
|
|
49
|
+
if (options.trustLevel) {
|
|
50
|
+
const trustOrder = ['unverified', 'community', 'verified', 'official'];
|
|
51
|
+
const minIndex = trustOrder.indexOf(options.trustLevel);
|
|
52
|
+
plugins = plugins.filter(p => {
|
|
53
|
+
const pluginIndex = trustOrder.indexOf(p.trustLevel);
|
|
54
|
+
return pluginIndex >= minIndex;
|
|
55
|
+
});
|
|
56
|
+
}
|
|
57
|
+
// Permissions filter
|
|
58
|
+
if (options.permissions && options.permissions.length > 0) {
|
|
59
|
+
plugins = plugins.filter(p => options.permissions.every(perm => p.permissions.includes(perm)));
|
|
60
|
+
}
|
|
61
|
+
// Security audit filter
|
|
62
|
+
if (options.hasSecurityAudit !== undefined) {
|
|
63
|
+
plugins = plugins.filter(p => options.hasSecurityAudit ? p.securityAudit !== undefined : true);
|
|
64
|
+
}
|
|
65
|
+
// Sort
|
|
66
|
+
const sortBy = options.sortBy || 'downloads';
|
|
67
|
+
const sortOrder = options.sortOrder || 'desc';
|
|
68
|
+
plugins.sort((a, b) => {
|
|
69
|
+
let comparison = 0;
|
|
70
|
+
switch (sortBy) {
|
|
71
|
+
case 'downloads':
|
|
72
|
+
comparison = a.downloads - b.downloads;
|
|
73
|
+
break;
|
|
74
|
+
case 'rating':
|
|
75
|
+
comparison = a.rating - b.rating;
|
|
76
|
+
break;
|
|
77
|
+
case 'newest':
|
|
78
|
+
comparison = new Date(a.createdAt).getTime() - new Date(b.createdAt).getTime();
|
|
79
|
+
break;
|
|
80
|
+
case 'name':
|
|
81
|
+
comparison = a.name.localeCompare(b.name);
|
|
82
|
+
break;
|
|
83
|
+
case 'reputation':
|
|
84
|
+
comparison = a.author.reputation - b.author.reputation;
|
|
85
|
+
break;
|
|
86
|
+
}
|
|
87
|
+
return sortOrder === 'desc' ? -comparison : comparison;
|
|
88
|
+
});
|
|
89
|
+
// Pagination
|
|
90
|
+
const total = plugins.length;
|
|
91
|
+
const limit = options.limit || 20;
|
|
92
|
+
const offset = options.offset || 0;
|
|
93
|
+
const page = Math.floor(offset / limit) + 1;
|
|
94
|
+
plugins = plugins.slice(offset, offset + limit);
|
|
95
|
+
return {
|
|
96
|
+
plugins,
|
|
97
|
+
total,
|
|
98
|
+
page,
|
|
99
|
+
pageSize: limit,
|
|
100
|
+
hasMore: offset + limit < total,
|
|
101
|
+
query: options,
|
|
102
|
+
};
|
|
103
|
+
}
|
|
104
|
+
/**
|
|
105
|
+
* Get search suggestions based on partial query
|
|
106
|
+
*/
|
|
107
|
+
export function getPluginSearchSuggestions(registry, partialQuery, limit = 10) {
|
|
108
|
+
const query = partialQuery.toLowerCase();
|
|
109
|
+
const suggestions = new Set();
|
|
110
|
+
// Search in plugin names
|
|
111
|
+
for (const plugin of registry.plugins) {
|
|
112
|
+
if (plugin.name.toLowerCase().includes(query)) {
|
|
113
|
+
suggestions.add(plugin.name);
|
|
114
|
+
}
|
|
115
|
+
if (plugin.displayName.toLowerCase().includes(query)) {
|
|
116
|
+
suggestions.add(plugin.displayName);
|
|
117
|
+
}
|
|
118
|
+
// Search in tags
|
|
119
|
+
for (const tag of plugin.tags) {
|
|
120
|
+
if (tag.toLowerCase().includes(query)) {
|
|
121
|
+
suggestions.add(tag);
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
// Search in keywords
|
|
125
|
+
for (const keyword of plugin.keywords) {
|
|
126
|
+
if (keyword.toLowerCase().includes(query)) {
|
|
127
|
+
suggestions.add(keyword);
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
return Array.from(suggestions).slice(0, limit);
|
|
132
|
+
}
|
|
133
|
+
/**
|
|
134
|
+
* Get tag cloud with counts
|
|
135
|
+
*/
|
|
136
|
+
export function getPluginTagCloud(registry) {
|
|
137
|
+
const tagCounts = new Map();
|
|
138
|
+
for (const plugin of registry.plugins) {
|
|
139
|
+
for (const tag of plugin.tags) {
|
|
140
|
+
tagCounts.set(tag, (tagCounts.get(tag) || 0) + 1);
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
// Sort by count descending
|
|
144
|
+
const sortedEntries = Array.from(tagCounts.entries()).sort((a, b) => b[1] - a[1]);
|
|
145
|
+
return new Map(sortedEntries);
|
|
146
|
+
}
|
|
147
|
+
/**
|
|
148
|
+
* Get category statistics
|
|
149
|
+
*/
|
|
150
|
+
export function getPluginCategoryStats(registry) {
|
|
151
|
+
const categoryCounts = new Map();
|
|
152
|
+
for (const plugin of registry.plugins) {
|
|
153
|
+
for (const category of plugin.categories) {
|
|
154
|
+
categoryCounts.set(category, (categoryCounts.get(category) || 0) + 1);
|
|
155
|
+
}
|
|
156
|
+
}
|
|
157
|
+
return categoryCounts;
|
|
158
|
+
}
|
|
159
|
+
/**
|
|
160
|
+
* Find similar plugins based on tags and category
|
|
161
|
+
*/
|
|
162
|
+
export function findSimilarPlugins(registry, pluginId, limit = 5) {
|
|
163
|
+
const targetPlugin = registry.plugins.find(p => p.id === pluginId);
|
|
164
|
+
if (!targetPlugin) {
|
|
165
|
+
return [];
|
|
166
|
+
}
|
|
167
|
+
// Score plugins by tag overlap and category match
|
|
168
|
+
const scored = registry.plugins
|
|
169
|
+
.filter(p => p.id !== pluginId)
|
|
170
|
+
.map(plugin => {
|
|
171
|
+
let score = 0;
|
|
172
|
+
// Tag overlap
|
|
173
|
+
const tagOverlap = plugin.tags.filter(t => targetPlugin.tags.includes(t)).length;
|
|
174
|
+
score += tagOverlap * 2;
|
|
175
|
+
// Category match
|
|
176
|
+
const categoryMatch = plugin.categories.some(c => targetPlugin.categories.includes(c));
|
|
177
|
+
if (categoryMatch)
|
|
178
|
+
score += 3;
|
|
179
|
+
// Type match
|
|
180
|
+
if (plugin.type === targetPlugin.type)
|
|
181
|
+
score += 2;
|
|
182
|
+
// Same author bonus
|
|
183
|
+
if (plugin.author.id === targetPlugin.author.id)
|
|
184
|
+
score += 1;
|
|
185
|
+
return { plugin, score };
|
|
186
|
+
})
|
|
187
|
+
.filter(s => s.score > 0)
|
|
188
|
+
.sort((a, b) => b.score - a.score)
|
|
189
|
+
.slice(0, limit);
|
|
190
|
+
return scored.map(s => s.plugin);
|
|
191
|
+
}
|
|
192
|
+
/**
|
|
193
|
+
* Get featured plugins
|
|
194
|
+
*/
|
|
195
|
+
export function getFeaturedPlugins(registry) {
|
|
196
|
+
return registry.featured
|
|
197
|
+
.map(id => registry.plugins.find(p => p.id === id))
|
|
198
|
+
.filter((p) => p !== undefined);
|
|
199
|
+
}
|
|
200
|
+
/**
|
|
201
|
+
* Get trending plugins
|
|
202
|
+
*/
|
|
203
|
+
export function getTrendingPlugins(registry) {
|
|
204
|
+
return registry.trending
|
|
205
|
+
.map(id => registry.plugins.find(p => p.id === id))
|
|
206
|
+
.filter((p) => p !== undefined);
|
|
207
|
+
}
|
|
208
|
+
/**
|
|
209
|
+
* Get newest plugins
|
|
210
|
+
*/
|
|
211
|
+
export function getNewestPlugins(registry) {
|
|
212
|
+
return registry.newest
|
|
213
|
+
.map(id => registry.plugins.find(p => p.id === id))
|
|
214
|
+
.filter((p) => p !== undefined);
|
|
215
|
+
}
|
|
216
|
+
/**
|
|
217
|
+
* Get official plugins
|
|
218
|
+
*/
|
|
219
|
+
export function getOfficialPlugins(registry) {
|
|
220
|
+
return registry.official
|
|
221
|
+
.map(id => registry.plugins.find(p => p.id === id))
|
|
222
|
+
.filter((p) => p !== undefined);
|
|
223
|
+
}
|
|
224
|
+
/**
|
|
225
|
+
* Get plugins by permission
|
|
226
|
+
*/
|
|
227
|
+
export function getPluginsByPermission(registry, permission) {
|
|
228
|
+
return registry.plugins.filter(p => p.permissions.includes(permission));
|
|
229
|
+
}
|
|
230
|
+
//# sourceMappingURL=search.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"search.js","sourceRoot":"","sources":["../../../../src/plugins/store/search.ts"],"names":[],"mappings":"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"}
|