@monoes/monomindcli 1.15.6 → 1.16.0
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/agents/github/repo-architect.md +1 -1
- package/.claude/agents/specialists/integration-architect.md +6 -6
- package/.claude/commands/hive-mind/hive-mind-init.md +1 -1
- package/.claude/commands/hive-mind/hive-mind-memory.md +1 -1
- package/.claude/commands/mastermind/brain.md +11 -11
- package/.claude/commands/mastermind/master.md +4 -4
- package/.claude/commands/mastermind/memory.md +6 -6
- package/.claude/commands/memory/README.md +4 -4
- package/.claude/commands/truth/start.md +3 -3
- package/.claude/helpers/extras-registry.json +2 -2
- package/.claude/helpers/skill-registry.json +26 -26
- package/.claude/helpers/statusline.cjs +8 -8
- package/.claude/skills/agentic-jujutsu/SKILL.md +3 -3
- package/.claude/skills/mastermind/_protocol.md +8 -8
- package/README.md +6 -6
- package/dist/src/__tests__/browse-analyzer.test.js +18 -1
- package/dist/src/__tests__/browse-analyzer.test.js.map +1 -1
- package/dist/src/commands/agent.js +2 -2
- package/dist/src/commands/agent.js.map +1 -1
- package/dist/src/commands/autopilot.js +1 -1
- package/dist/src/commands/autopilot.js.map +1 -1
- package/dist/src/commands/completions.d.ts.map +1 -1
- package/dist/src/commands/completions.js +2 -21
- package/dist/src/commands/completions.js.map +1 -1
- package/dist/src/commands/config.js +1 -1
- package/dist/src/commands/hive-mind.js +1 -1
- package/dist/src/commands/hooks-coverage-commands.js +31 -31
- package/dist/src/commands/hooks-coverage-commands.js.map +1 -1
- package/dist/src/commands/hooks-routing-commands.js +1 -1
- package/dist/src/commands/hooks-routing-commands.js.map +1 -1
- package/dist/src/commands/hooks.js +1 -1
- package/dist/src/commands/hooks.js.map +1 -1
- package/dist/src/commands/index.d.ts +0 -1
- package/dist/src/commands/index.d.ts.map +1 -1
- package/dist/src/commands/index.js +0 -4
- package/dist/src/commands/index.js.map +1 -1
- package/dist/src/commands/init.js +8 -8
- package/dist/src/commands/init.js.map +1 -1
- package/dist/src/commands/memory.d.ts +1 -1
- package/dist/src/commands/memory.d.ts.map +1 -1
- package/dist/src/commands/memory.js +138 -28
- package/dist/src/commands/memory.js.map +1 -1
- package/dist/src/commands/migrate.js +2 -2
- package/dist/src/commands/neural.js +1 -1
- package/dist/src/commands/neural.js.map +1 -1
- package/dist/src/commands/swarm.js +1 -1
- package/dist/src/commands/swarm.js.map +1 -1
- package/dist/src/config-adapter.d.ts.map +1 -1
- package/dist/src/config-adapter.js +8 -8
- package/dist/src/config-adapter.js.map +1 -1
- package/dist/src/index.js +1 -1
- package/dist/src/index.js.map +1 -1
- package/dist/src/init/claudemd-generator.js +2 -2
- package/dist/src/init/executor.js +16 -16
- package/dist/src/init/executor.js.map +1 -1
- package/dist/src/init/shared-instructions-generator.d.ts +1 -1
- package/dist/src/init/shared-instructions-generator.js +1 -1
- package/dist/src/init/statusline-generator.d.ts +1 -1
- package/dist/src/init/statusline-generator.js +8 -8
- package/dist/src/init/types.d.ts +3 -3
- package/dist/src/init/types.d.ts.map +1 -1
- package/dist/src/init/types.js +3 -3
- package/dist/src/init/types.js.map +1 -1
- package/dist/src/mcp-client.d.ts.map +1 -1
- package/dist/src/mcp-client.js +1 -8
- package/dist/src/mcp-client.js.map +1 -1
- package/dist/src/mcp-tools/autopilot-tools.js +3 -3
- package/dist/src/mcp-tools/autopilot-tools.js.map +1 -1
- package/dist/src/mcp-tools/daa-tools.js +13 -13
- package/dist/src/mcp-tools/daa-tools.js.map +1 -1
- package/dist/src/mcp-tools/guidance-tools.js +4 -4
- package/dist/src/mcp-tools/guidance-tools.js.map +1 -1
- package/dist/src/mcp-tools/hive-mind-tools.js +4 -4
- package/dist/src/mcp-tools/hive-mind-tools.js.map +1 -1
- package/dist/src/mcp-tools/hooks-intelligence.d.ts.map +1 -1
- package/dist/src/mcp-tools/hooks-intelligence.js +1 -0
- package/dist/src/mcp-tools/hooks-intelligence.js.map +1 -1
- package/dist/src/mcp-tools/hooks-routing.js +23 -23
- package/dist/src/mcp-tools/hooks-routing.js.map +1 -1
- package/dist/src/mcp-tools/index.d.ts +0 -1
- package/dist/src/mcp-tools/index.d.ts.map +1 -1
- package/dist/src/mcp-tools/index.js +0 -2
- package/dist/src/mcp-tools/index.js.map +1 -1
- package/dist/src/mcp-tools/memory-tools.d.ts +22 -6
- package/dist/src/mcp-tools/memory-tools.d.ts.map +1 -1
- package/dist/src/mcp-tools/memory-tools.js +553 -505
- package/dist/src/mcp-tools/memory-tools.js.map +1 -1
- package/dist/src/mcp-tools/progress-tools.js +1 -1
- package/dist/src/mcp-tools/progress-tools.js.map +1 -1
- package/dist/src/mcp-tools/system-tools.js +5 -5
- package/dist/src/mcp-tools/system-tools.js.map +1 -1
- package/dist/src/mcp-tools/transfer-tools.d.ts +1 -1
- package/dist/src/mcp-tools/transfer-tools.d.ts.map +1 -1
- package/dist/src/mcp-tools/transfer-tools.js +1 -156
- package/dist/src/mcp-tools/transfer-tools.js.map +1 -1
- package/dist/src/memory/embedding-operations.js +3 -3
- package/dist/src/memory/embedding-operations.js.map +1 -1
- package/dist/src/memory/hnsw-operations.js +5 -5
- package/dist/src/memory/hnsw-operations.js.map +1 -1
- package/dist/src/memory/intelligence.js +2 -2
- package/dist/src/memory/intelligence.js.map +1 -1
- package/dist/src/memory/memory-bridge.d.ts +86 -234
- package/dist/src/memory/memory-bridge.d.ts.map +1 -1
- package/dist/src/memory/memory-bridge.js +455 -1702
- package/dist/src/memory/memory-bridge.js.map +1 -1
- package/dist/src/memory/memory-crud.js +3 -3
- package/dist/src/memory/memory-crud.js.map +1 -1
- package/dist/src/memory/memory-initializer.d.ts +1 -1
- package/dist/src/memory/memory-initializer.js +5 -5
- package/dist/src/memory/memory-initializer.js.map +1 -1
- package/dist/src/memory/memory-read.js +4 -4
- package/dist/src/memory/memory-read.js.map +1 -1
- package/dist/src/suggest.js +0 -1
- package/dist/src/suggest.js.map +1 -1
- package/dist/src/types.d.ts +1 -1
- package/dist/src/ui/dashboard.html +41 -5
- package/dist/src/ui/orgs.html +91 -5
- package/dist/src/ui/server.mjs +44 -0
- package/dist/src/update/validator.d.ts.map +1 -1
- package/dist/src/update/validator.js +1 -3
- package/dist/src/update/validator.js.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +4 -4
- package/dist/src/commands/plugins.d.ts +0 -11
- package/dist/src/commands/plugins.d.ts.map +0 -1
- package/dist/src/commands/plugins.js +0 -799
- package/dist/src/commands/plugins.js.map +0 -1
- package/dist/src/plugins/manager.d.ts +0 -133
- package/dist/src/plugins/manager.d.ts.map +0 -1
- package/dist/src/plugins/manager.js +0 -498
- package/dist/src/plugins/manager.js.map +0 -1
- package/dist/src/plugins/store/discovery.d.ts +0 -88
- package/dist/src/plugins/store/discovery.d.ts.map +0 -1
- package/dist/src/plugins/store/discovery.js +0 -650
- package/dist/src/plugins/store/discovery.js.map +0 -1
- package/dist/src/plugins/store/index.d.ts +0 -76
- package/dist/src/plugins/store/index.d.ts.map +0 -1
- package/dist/src/plugins/store/index.js +0 -141
- package/dist/src/plugins/store/index.js.map +0 -1
- package/dist/src/plugins/store/search.d.ts +0 -46
- package/dist/src/plugins/store/search.d.ts.map +0 -1
- package/dist/src/plugins/store/search.js +0 -231
- package/dist/src/plugins/store/search.js.map +0 -1
- package/dist/src/plugins/store/types.d.ts +0 -274
- package/dist/src/plugins/store/types.d.ts.map +0 -1
- package/dist/src/plugins/store/types.js +0 -7
- package/dist/src/plugins/store/types.js.map +0 -1
- package/dist/src/plugins/tests/demo-plugin-store.d.ts +0 -7
- package/dist/src/plugins/tests/demo-plugin-store.d.ts.map +0 -1
- package/dist/src/plugins/tests/demo-plugin-store.js +0 -126
- package/dist/src/plugins/tests/demo-plugin-store.js.map +0 -1
- package/dist/src/plugins/tests/standalone-test.d.ts +0 -12
- package/dist/src/plugins/tests/standalone-test.d.ts.map +0 -1
- package/dist/src/plugins/tests/standalone-test.js +0 -188
- package/dist/src/plugins/tests/standalone-test.js.map +0 -1
- package/dist/src/plugins/tests/test-plugin-store.d.ts +0 -7
- package/dist/src/plugins/tests/test-plugin-store.d.ts.map +0 -1
- package/dist/src/plugins/tests/test-plugin-store.js +0 -206
- package/dist/src/plugins/tests/test-plugin-store.js.map +0 -1
- package/dist/src/services/registry-api.d.ts +0 -58
- package/dist/src/services/registry-api.d.ts.map +0 -1
- package/dist/src/services/registry-api.js +0 -199
- package/dist/src/services/registry-api.js.map +0 -1
- package/scripts/publish-registry.ts +0 -339
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"test-plugin-store.d.ts","sourceRoot":"","sources":["../../../../src/plugins/tests/test-plugin-store.ts"],"names":[],"mappings":";AACA;;;GAGG"}
|
|
@@ -1,206 +0,0 @@
|
|
|
1
|
-
#!/usr/bin/env npx tsx
|
|
2
|
-
/**
|
|
3
|
-
* Plugin Store Test Suite
|
|
4
|
-
* Tests IPFS-based plugin registry discovery, search, and operations
|
|
5
|
-
*/
|
|
6
|
-
import { createPluginDiscoveryService, searchPlugins, getPluginSearchSuggestions, getPluginTagCloud, getFeaturedPlugins, getTrendingPlugins, getOfficialPlugins, findSimilarPlugins, } from '../store/index.js';
|
|
7
|
-
// Test results tracking
|
|
8
|
-
const results = [];
|
|
9
|
-
function logTest(name, passed, details) {
|
|
10
|
-
results.push({ test: name, passed, details });
|
|
11
|
-
const icon = passed ? '✅' : '❌';
|
|
12
|
-
console.log(`${icon} ${name}${details ? `: ${details}` : ''}`);
|
|
13
|
-
}
|
|
14
|
-
async function runTests() {
|
|
15
|
-
console.log('');
|
|
16
|
-
console.log('╔══════════════════════════════════════════════════════════╗');
|
|
17
|
-
console.log('║ PLUGIN STORE TEST SUITE ║');
|
|
18
|
-
console.log('║ Testing IPFS-Based Registry Discovery ║');
|
|
19
|
-
console.log('╚══════════════════════════════════════════════════════════╝');
|
|
20
|
-
console.log('');
|
|
21
|
-
// ==========================================================================
|
|
22
|
-
// 1. DISCOVERY TESTS
|
|
23
|
-
// ==========================================================================
|
|
24
|
-
console.log('─── Discovery Tests ───────────────────────────────────────');
|
|
25
|
-
try {
|
|
26
|
-
const discovery = createPluginDiscoveryService();
|
|
27
|
-
logTest('Discovery service created', true);
|
|
28
|
-
// List registries
|
|
29
|
-
const registries = discovery.listRegistries();
|
|
30
|
-
logTest('List registries', registries.length > 0, `Found ${registries.length} registries`);
|
|
31
|
-
// Discover registry
|
|
32
|
-
const result = await discovery.discoverRegistry();
|
|
33
|
-
logTest('Discover registry via IPNS', result.success, result.success
|
|
34
|
-
? `Loaded ${result.registry?.plugins.length || 0} plugins`
|
|
35
|
-
: result.error);
|
|
36
|
-
// Cache test
|
|
37
|
-
if (result.success) {
|
|
38
|
-
const cachedResult = await discovery.discoverRegistry();
|
|
39
|
-
logTest('Cache hit', cachedResult.fromCache === true, 'Second request from cache');
|
|
40
|
-
}
|
|
41
|
-
console.log('');
|
|
42
|
-
// ==========================================================================
|
|
43
|
-
// 2. SEARCH TESTS
|
|
44
|
-
// ==========================================================================
|
|
45
|
-
console.log('─── Search Tests ──────────────────────────────────────────');
|
|
46
|
-
if (result.success && result.registry) {
|
|
47
|
-
const registry = result.registry;
|
|
48
|
-
// Basic search
|
|
49
|
-
const basicSearch = searchPlugins(registry);
|
|
50
|
-
logTest('Basic search', basicSearch.plugins.length > 0, `Found ${basicSearch.total} plugins`);
|
|
51
|
-
// Query search for plugin-creator
|
|
52
|
-
const creatorSearch = searchPlugins(registry, { query: 'creator' });
|
|
53
|
-
logTest('Query search: "creator"', creatorSearch.plugins.length > 0, `Found ${creatorSearch.plugins.length} plugins matching "creator"`);
|
|
54
|
-
// Verify plugin-creator exists
|
|
55
|
-
const pluginCreator = creatorSearch.plugins.find(p => p.id === 'plugin-creator');
|
|
56
|
-
logTest('Plugin Creator found', pluginCreator !== undefined, pluginCreator ? `v${pluginCreator.version} - ${pluginCreator.displayName}` : 'Not found');
|
|
57
|
-
// Category filter
|
|
58
|
-
const securitySearch = searchPlugins(registry, { category: 'security' });
|
|
59
|
-
logTest('Category filter: security', true, `Found ${securitySearch.plugins.length} security plugins`);
|
|
60
|
-
// Type filter
|
|
61
|
-
const commandSearch = searchPlugins(registry, { type: 'command' });
|
|
62
|
-
logTest('Type filter: command', commandSearch.plugins.length > 0, `Found ${commandSearch.plugins.length} command plugins`);
|
|
63
|
-
// Verified filter
|
|
64
|
-
const verifiedSearch = searchPlugins(registry, { verified: true });
|
|
65
|
-
logTest('Verified filter', verifiedSearch.plugins.length > 0, `Verified plugins: ${verifiedSearch.plugins.length}`);
|
|
66
|
-
// Sort by downloads
|
|
67
|
-
const sortedSearch = searchPlugins(registry, {
|
|
68
|
-
sortBy: 'downloads',
|
|
69
|
-
sortOrder: 'desc',
|
|
70
|
-
});
|
|
71
|
-
logTest('Sort by downloads', true, `Top plugin: ${sortedSearch.plugins[0]?.displayName || 'none'} (${sortedSearch.plugins[0]?.downloads || 0} downloads)`);
|
|
72
|
-
// Pagination
|
|
73
|
-
const page1 = searchPlugins(registry, { limit: 3, offset: 0 });
|
|
74
|
-
logTest('Pagination', page1.pageSize === 3, `Page 1 with ${page1.plugins.length} plugins, hasMore: ${page1.hasMore}`);
|
|
75
|
-
// Search suggestions
|
|
76
|
-
const suggestions = getPluginSearchSuggestions(registry, 'neu');
|
|
77
|
-
logTest('Search suggestions', suggestions.length >= 0, `Suggestions for "neu": ${suggestions.slice(0, 3).join(', ') || 'none'}`);
|
|
78
|
-
// Tag cloud
|
|
79
|
-
const tagCloud = getPluginTagCloud(registry);
|
|
80
|
-
logTest('Tag cloud', tagCloud.size > 0, `${tagCloud.size} unique tags`);
|
|
81
|
-
}
|
|
82
|
-
console.log('');
|
|
83
|
-
// ==========================================================================
|
|
84
|
-
// 3. FEATURED/TRENDING/OFFICIAL TESTS
|
|
85
|
-
// ==========================================================================
|
|
86
|
-
console.log('─── Featured/Trending/Official Tests ─────────────────────');
|
|
87
|
-
if (result.success && result.registry) {
|
|
88
|
-
const registry = result.registry;
|
|
89
|
-
// Featured plugins
|
|
90
|
-
const featured = getFeaturedPlugins(registry);
|
|
91
|
-
logTest('Featured plugins', featured.length > 0, `${featured.length} featured: ${featured.map(p => p.name).join(', ')}`);
|
|
92
|
-
// Check plugin-creator is featured
|
|
93
|
-
const creatorFeatured = featured.some(p => p.id === 'plugin-creator');
|
|
94
|
-
logTest('Plugin Creator is featured', creatorFeatured, creatorFeatured ? 'Yes' : 'No');
|
|
95
|
-
// Trending plugins
|
|
96
|
-
const trending = getTrendingPlugins(registry);
|
|
97
|
-
logTest('Trending plugins', trending.length > 0, `${trending.length} trending: ${trending.map(p => p.name).join(', ')}`);
|
|
98
|
-
// Official plugins
|
|
99
|
-
const official = getOfficialPlugins(registry);
|
|
100
|
-
logTest('Official plugins', official.length > 0, `${official.length} official plugins`);
|
|
101
|
-
// Similar plugins
|
|
102
|
-
const similar = findSimilarPlugins(registry, '@monoes/neural', 3);
|
|
103
|
-
logTest('Similar plugins', similar.length >= 0, `Similar to @monoes/neural: ${similar.map(p => p.name).join(', ') || 'none'}`);
|
|
104
|
-
}
|
|
105
|
-
console.log('');
|
|
106
|
-
// ==========================================================================
|
|
107
|
-
// 4. PLUGIN DETAILS TEST
|
|
108
|
-
// ==========================================================================
|
|
109
|
-
console.log('─── Plugin Details Test ───────────────────────────────────');
|
|
110
|
-
if (result.success && result.registry) {
|
|
111
|
-
const pluginCreator = result.registry.plugins.find(p => p.id === 'plugin-creator');
|
|
112
|
-
if (pluginCreator) {
|
|
113
|
-
logTest('Plugin Creator details', true);
|
|
114
|
-
console.log('');
|
|
115
|
-
console.log(' Plugin Creator Pro Details:');
|
|
116
|
-
console.log(` ├─ ID: ${pluginCreator.id}`);
|
|
117
|
-
console.log(` ├─ Version: ${pluginCreator.version}`);
|
|
118
|
-
console.log(` ├─ CID: ${pluginCreator.cid}`);
|
|
119
|
-
console.log(` ├─ Size: ${(pluginCreator.size / 1024).toFixed(1)} KB`);
|
|
120
|
-
console.log(` ├─ Downloads: ${pluginCreator.downloads.toLocaleString()}`);
|
|
121
|
-
console.log(` ├─ Rating: ${pluginCreator.rating}★ (${pluginCreator.ratingCount} ratings)`);
|
|
122
|
-
console.log(` ├─ Trust: ${pluginCreator.trustLevel}`);
|
|
123
|
-
console.log(` ├─ Verified: ${pluginCreator.verified ? '✓' : '✗'}`);
|
|
124
|
-
console.log(` ├─ Commands: ${pluginCreator.commands.length}`);
|
|
125
|
-
pluginCreator.commands.forEach(cmd => {
|
|
126
|
-
console.log(` │ └─ ${cmd}`);
|
|
127
|
-
});
|
|
128
|
-
console.log(` ├─ Hooks: ${pluginCreator.hooks.length}`);
|
|
129
|
-
pluginCreator.hooks.forEach(hook => {
|
|
130
|
-
console.log(` │ └─ ${hook}`);
|
|
131
|
-
});
|
|
132
|
-
console.log(` ├─ Permissions: ${pluginCreator.permissions.join(', ')}`);
|
|
133
|
-
console.log(` ├─ Security Audit: ${pluginCreator.securityAudit ? '✓ Passed' : 'None'}`);
|
|
134
|
-
console.log(` └─ License: ${pluginCreator.license}`);
|
|
135
|
-
console.log('');
|
|
136
|
-
}
|
|
137
|
-
}
|
|
138
|
-
// ==========================================================================
|
|
139
|
-
// 5. INTEGRATION TEST
|
|
140
|
-
// ==========================================================================
|
|
141
|
-
console.log('─── Integration Test ──────────────────────────────────────');
|
|
142
|
-
// Full workflow: discover -> search -> get details
|
|
143
|
-
const store = createPluginDiscoveryService();
|
|
144
|
-
const discoverResult = await store.discoverRegistry();
|
|
145
|
-
if (discoverResult.success && discoverResult.registry) {
|
|
146
|
-
const searchResult = searchPlugins(discoverResult.registry, {
|
|
147
|
-
query: 'plugin creator',
|
|
148
|
-
});
|
|
149
|
-
if (searchResult.plugins.length > 0) {
|
|
150
|
-
const plugin = searchResult.plugins[0];
|
|
151
|
-
logTest('Full workflow', true, `Discover → Search → Found "${plugin.displayName}" ready to download`);
|
|
152
|
-
}
|
|
153
|
-
else {
|
|
154
|
-
logTest('Full workflow', true, 'Discover → Search completed');
|
|
155
|
-
}
|
|
156
|
-
}
|
|
157
|
-
}
|
|
158
|
-
catch (error) {
|
|
159
|
-
console.error('Test error:', error);
|
|
160
|
-
logTest('Test suite', false, `Error: ${error}`);
|
|
161
|
-
}
|
|
162
|
-
// ==========================================================================
|
|
163
|
-
// SUMMARY
|
|
164
|
-
// ==========================================================================
|
|
165
|
-
console.log('');
|
|
166
|
-
console.log('═══════════════════════════════════════════════════════════');
|
|
167
|
-
console.log(' TEST SUMMARY ');
|
|
168
|
-
console.log('═══════════════════════════════════════════════════════════');
|
|
169
|
-
console.log('');
|
|
170
|
-
const passed = results.filter(r => r.passed).length;
|
|
171
|
-
const failed = results.filter(r => !r.passed).length;
|
|
172
|
-
const total = results.length;
|
|
173
|
-
console.log(` Total Tests: ${total}`);
|
|
174
|
-
console.log(` ✅ Passed: ${passed}`);
|
|
175
|
-
console.log(` ❌ Failed: ${failed}`);
|
|
176
|
-
console.log('');
|
|
177
|
-
if (failed === 0) {
|
|
178
|
-
console.log(' 🎉 All tests passed!');
|
|
179
|
-
console.log('');
|
|
180
|
-
console.log(' 📦 Plugin Store Features Verified:');
|
|
181
|
-
console.log(' - Registry discovery via IPNS');
|
|
182
|
-
console.log(' - Plugin search with filters');
|
|
183
|
-
console.log(' - Featured/Trending/Official listings');
|
|
184
|
-
console.log(' - Plugin Creator Pro available for download');
|
|
185
|
-
console.log('');
|
|
186
|
-
console.log(' 🔧 Plugin Creator Pro Commands:');
|
|
187
|
-
console.log(' - plugin-creator new Create new plugin');
|
|
188
|
-
console.log(' - plugin-creator template Use template');
|
|
189
|
-
console.log(' - plugin-creator validate Validate plugin');
|
|
190
|
-
console.log(' - plugin-creator test Run tests');
|
|
191
|
-
console.log(' - plugin-creator build Build plugin');
|
|
192
|
-
console.log(' - plugin-creator publish Publish to IPFS');
|
|
193
|
-
console.log(' - plugin-creator watch Hot-reload dev mode');
|
|
194
|
-
console.log('');
|
|
195
|
-
}
|
|
196
|
-
else {
|
|
197
|
-
console.log(' ⚠️ Some tests failed. Please review the output above.');
|
|
198
|
-
}
|
|
199
|
-
process.exit(failed > 0 ? 1 : 0);
|
|
200
|
-
}
|
|
201
|
-
// Run tests
|
|
202
|
-
runTests().catch(error => {
|
|
203
|
-
console.error('Fatal error:', error);
|
|
204
|
-
process.exit(1);
|
|
205
|
-
});
|
|
206
|
-
//# sourceMappingURL=test-plugin-store.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"test-plugin-store.js","sourceRoot":"","sources":["../../../../src/plugins/tests/test-plugin-store.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,58 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Registry API Client
|
|
3
|
-
* Secure integration with Monomind Cloud Functions
|
|
4
|
-
*
|
|
5
|
-
* Security:
|
|
6
|
-
* - HTTPS only
|
|
7
|
-
* - No credentials stored in code
|
|
8
|
-
* - Rate limiting respected
|
|
9
|
-
* - Input validation
|
|
10
|
-
*/
|
|
11
|
-
export interface RatingResponse {
|
|
12
|
-
success: boolean;
|
|
13
|
-
itemId: string;
|
|
14
|
-
average: number;
|
|
15
|
-
count: number;
|
|
16
|
-
error?: string;
|
|
17
|
-
}
|
|
18
|
-
export interface BulkRatingsResponse {
|
|
19
|
-
[itemId: string]: {
|
|
20
|
-
average: number;
|
|
21
|
-
count: number;
|
|
22
|
-
};
|
|
23
|
-
}
|
|
24
|
-
export interface AnalyticsResponse {
|
|
25
|
-
downloads: Record<string, number>;
|
|
26
|
-
exports: number;
|
|
27
|
-
imports: number;
|
|
28
|
-
publishes: number;
|
|
29
|
-
}
|
|
30
|
-
/**
|
|
31
|
-
* Rate a plugin or model
|
|
32
|
-
*/
|
|
33
|
-
export declare function rateItem(itemId: string, rating: number, itemType?: 'plugin' | 'model', userId?: string): Promise<RatingResponse>;
|
|
34
|
-
/**
|
|
35
|
-
* Get ratings for a single item
|
|
36
|
-
*/
|
|
37
|
-
export declare function getRating(itemId: string, itemType?: 'plugin' | 'model'): Promise<RatingResponse>;
|
|
38
|
-
/**
|
|
39
|
-
* Get ratings for multiple items (batch)
|
|
40
|
-
*/
|
|
41
|
-
export declare function getBulkRatings(itemIds: string[], itemType?: 'plugin' | 'model'): Promise<BulkRatingsResponse>;
|
|
42
|
-
/**
|
|
43
|
-
* Get analytics data
|
|
44
|
-
*/
|
|
45
|
-
export declare function getAnalytics(): Promise<AnalyticsResponse>;
|
|
46
|
-
/**
|
|
47
|
-
* Track a download event
|
|
48
|
-
*/
|
|
49
|
-
export declare function trackDownload(pluginId: string): Promise<void>;
|
|
50
|
-
/**
|
|
51
|
-
* Check API health
|
|
52
|
-
*/
|
|
53
|
-
export declare function checkHealth(): Promise<{
|
|
54
|
-
healthy: boolean;
|
|
55
|
-
latestCid?: string;
|
|
56
|
-
error?: string;
|
|
57
|
-
}>;
|
|
58
|
-
//# sourceMappingURL=registry-api.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"registry-api.d.ts","sourceRoot":"","sources":["../../../src/services/registry-api.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAuDH,MAAM,WAAW,cAAc;IAC7B,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,mBAAmB;IAClC,CAAC,MAAM,EAAE,MAAM,GAAG;QAChB,OAAO,EAAE,MAAM,CAAC;QAChB,KAAK,EAAE,MAAM,CAAC;KACf,CAAC;CACH;AAED,MAAM,WAAW,iBAAiB;IAChC,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAClC,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;CACnB;AAiBD;;GAEG;AACH,wBAAsB,QAAQ,CAC5B,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,EACd,QAAQ,GAAE,QAAQ,GAAG,OAAkB,EACvC,MAAM,CAAC,EAAE,MAAM,GACd,OAAO,CAAC,cAAc,CAAC,CA0BzB;AAED;;GAEG;AACH,wBAAsB,SAAS,CAC7B,MAAM,EAAE,MAAM,EACd,QAAQ,GAAE,QAAQ,GAAG,OAAkB,GACtC,OAAO,CAAC,cAAc,CAAC,CAoBzB;AAED;;GAEG;AACH,wBAAsB,cAAc,CAClC,OAAO,EAAE,MAAM,EAAE,EACjB,QAAQ,GAAE,QAAQ,GAAG,OAAkB,GACtC,OAAO,CAAC,mBAAmB,CAAC,CA0B9B;AAED;;GAEG;AACH,wBAAsB,YAAY,IAAI,OAAO,CAAC,iBAAiB,CAAC,CAU/D;AAED;;GAEG;AACH,wBAAsB,aAAa,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAenE;AAED;;GAEG;AACH,wBAAsB,WAAW,IAAI,OAAO,CAAC;IAC3C,OAAO,EAAE,OAAO,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,CAAC,CAYD"}
|
|
@@ -1,199 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Registry API Client
|
|
3
|
-
* Secure integration with Monomind Cloud Functions
|
|
4
|
-
*
|
|
5
|
-
* Security:
|
|
6
|
-
* - HTTPS only
|
|
7
|
-
* - No credentials stored in code
|
|
8
|
-
* - Rate limiting respected
|
|
9
|
-
* - Input validation
|
|
10
|
-
*/
|
|
11
|
-
const REGISTRY_API_URL = 'https://us-central1-monomind.cloudfunctions.net/publish-registry';
|
|
12
|
-
/**
|
|
13
|
-
* Read a fetch response body with a hard byte cap. AbortSignal.timeout bounds
|
|
14
|
-
* time, NOT bytes — a hijacked endpoint or MITM (TLS without pinning) can
|
|
15
|
-
* stream a multi-GB body that the CLI buffers into memory and OOMs. Cap the
|
|
16
|
-
* read here so all downstream JSON.parse / .text() calls are bounded.
|
|
17
|
-
*/
|
|
18
|
-
async function readBoundedText(response, maxBytes) {
|
|
19
|
-
const lenHdr = response.headers.get('content-length');
|
|
20
|
-
if (lenHdr) {
|
|
21
|
-
const declared = parseInt(lenHdr, 10);
|
|
22
|
-
if (Number.isFinite(declared) && declared > maxBytes) {
|
|
23
|
-
throw new Error(`Response too large: ${declared} bytes (max ${maxBytes})`);
|
|
24
|
-
}
|
|
25
|
-
}
|
|
26
|
-
if (!response.body)
|
|
27
|
-
return '';
|
|
28
|
-
const reader = response.body.getReader();
|
|
29
|
-
const chunks = [];
|
|
30
|
-
let total = 0;
|
|
31
|
-
while (true) {
|
|
32
|
-
const { done, value } = await reader.read();
|
|
33
|
-
if (done)
|
|
34
|
-
break;
|
|
35
|
-
if (value) {
|
|
36
|
-
total += value.byteLength;
|
|
37
|
-
if (total > maxBytes) {
|
|
38
|
-
await reader.cancel();
|
|
39
|
-
throw new Error(`Response too large: exceeded ${maxBytes} bytes`);
|
|
40
|
-
}
|
|
41
|
-
chunks.push(value);
|
|
42
|
-
}
|
|
43
|
-
}
|
|
44
|
-
const buf = new Uint8Array(total);
|
|
45
|
-
let off = 0;
|
|
46
|
-
for (const c of chunks) {
|
|
47
|
-
buf.set(c, off);
|
|
48
|
-
off += c.byteLength;
|
|
49
|
-
}
|
|
50
|
-
return new TextDecoder('utf-8').decode(buf);
|
|
51
|
-
}
|
|
52
|
-
async function readBoundedJson(response, maxBytes = 1_048_576) {
|
|
53
|
-
const text = await readBoundedText(response, maxBytes);
|
|
54
|
-
return JSON.parse(text);
|
|
55
|
-
}
|
|
56
|
-
/**
|
|
57
|
-
* Strip control chars and cap length on attacker-controlled error body before
|
|
58
|
-
* inlining into a thrown Error.message. Without this, a malicious or
|
|
59
|
-
* compromised endpoint can deliver multi-MB error bodies that flow into log
|
|
60
|
-
* aggregators via unhandled-rejection traces.
|
|
61
|
-
*/
|
|
62
|
-
function safeErrText(s) {
|
|
63
|
-
return s.replace(/[\x00-\x1f\x7f]/g, '?').slice(0, 512);
|
|
64
|
-
}
|
|
65
|
-
/**
|
|
66
|
-
* Validate item ID to prevent injection
|
|
67
|
-
*/
|
|
68
|
-
function validateItemId(itemId) {
|
|
69
|
-
// Scoped packages (@scope/name) or plain identifiers — no other slashes allowed
|
|
70
|
-
return /^(@[a-zA-Z0-9][a-zA-Z0-9_-]*\/[a-zA-Z0-9][a-zA-Z0-9_-]*|[a-zA-Z0-9][a-zA-Z0-9_-]*)$/.test(itemId) && itemId.length < 100;
|
|
71
|
-
}
|
|
72
|
-
/**
|
|
73
|
-
* Validate rating value
|
|
74
|
-
*/
|
|
75
|
-
function validateRating(rating) {
|
|
76
|
-
return Number.isInteger(rating) && rating >= 1 && rating <= 5;
|
|
77
|
-
}
|
|
78
|
-
/**
|
|
79
|
-
* Rate a plugin or model
|
|
80
|
-
*/
|
|
81
|
-
export async function rateItem(itemId, rating, itemType = 'plugin', userId) {
|
|
82
|
-
if (!validateItemId(itemId)) {
|
|
83
|
-
throw new Error('Invalid item ID');
|
|
84
|
-
}
|
|
85
|
-
if (!validateRating(rating)) {
|
|
86
|
-
throw new Error('Rating must be integer 1-5');
|
|
87
|
-
}
|
|
88
|
-
const response = await fetch(`${REGISTRY_API_URL}?action=rate`, {
|
|
89
|
-
method: 'POST',
|
|
90
|
-
headers: { 'Content-Type': 'application/json' },
|
|
91
|
-
body: JSON.stringify({
|
|
92
|
-
itemId,
|
|
93
|
-
rating,
|
|
94
|
-
itemType,
|
|
95
|
-
...(userId && { userId }),
|
|
96
|
-
}),
|
|
97
|
-
signal: AbortSignal.timeout(10000),
|
|
98
|
-
});
|
|
99
|
-
if (!response.ok) {
|
|
100
|
-
const error = await readBoundedText(response, 64 * 1024).catch(() => 'unreadable');
|
|
101
|
-
throw new Error(`Rating failed: ${safeErrText(error)}`);
|
|
102
|
-
}
|
|
103
|
-
return readBoundedJson(response);
|
|
104
|
-
}
|
|
105
|
-
/**
|
|
106
|
-
* Get ratings for a single item
|
|
107
|
-
*/
|
|
108
|
-
export async function getRating(itemId, itemType = 'plugin') {
|
|
109
|
-
if (!validateItemId(itemId)) {
|
|
110
|
-
throw new Error('Invalid item ID');
|
|
111
|
-
}
|
|
112
|
-
const params = new URLSearchParams({
|
|
113
|
-
action: 'get-ratings',
|
|
114
|
-
itemId,
|
|
115
|
-
itemType,
|
|
116
|
-
});
|
|
117
|
-
const response = await fetch(`${REGISTRY_API_URL}?${params}`, {
|
|
118
|
-
signal: AbortSignal.timeout(10000),
|
|
119
|
-
});
|
|
120
|
-
if (!response.ok) {
|
|
121
|
-
throw new Error('Failed to get ratings');
|
|
122
|
-
}
|
|
123
|
-
return readBoundedJson(response);
|
|
124
|
-
}
|
|
125
|
-
/**
|
|
126
|
-
* Get ratings for multiple items (batch)
|
|
127
|
-
*/
|
|
128
|
-
export async function getBulkRatings(itemIds, itemType = 'plugin') {
|
|
129
|
-
// Validate all IDs
|
|
130
|
-
for (const id of itemIds) {
|
|
131
|
-
if (!validateItemId(id)) {
|
|
132
|
-
throw new Error(`Invalid item ID: ${id}`);
|
|
133
|
-
}
|
|
134
|
-
}
|
|
135
|
-
// Limit batch size
|
|
136
|
-
const limitedIds = itemIds.slice(0, 50);
|
|
137
|
-
const response = await fetch(`${REGISTRY_API_URL}?action=bulk-ratings`, {
|
|
138
|
-
method: 'POST',
|
|
139
|
-
headers: { 'Content-Type': 'application/json' },
|
|
140
|
-
body: JSON.stringify({
|
|
141
|
-
itemIds: limitedIds,
|
|
142
|
-
itemType,
|
|
143
|
-
}),
|
|
144
|
-
signal: AbortSignal.timeout(15000),
|
|
145
|
-
});
|
|
146
|
-
if (!response.ok) {
|
|
147
|
-
throw new Error('Failed to get bulk ratings');
|
|
148
|
-
}
|
|
149
|
-
return readBoundedJson(response, 4 * 1024 * 1024);
|
|
150
|
-
}
|
|
151
|
-
/**
|
|
152
|
-
* Get analytics data
|
|
153
|
-
*/
|
|
154
|
-
export async function getAnalytics() {
|
|
155
|
-
const response = await fetch(`${REGISTRY_API_URL}?action=analytics`, {
|
|
156
|
-
signal: AbortSignal.timeout(10000),
|
|
157
|
-
});
|
|
158
|
-
if (!response.ok) {
|
|
159
|
-
throw new Error('Failed to get analytics');
|
|
160
|
-
}
|
|
161
|
-
return readBoundedJson(response);
|
|
162
|
-
}
|
|
163
|
-
/**
|
|
164
|
-
* Track a download event
|
|
165
|
-
*/
|
|
166
|
-
export async function trackDownload(pluginId) {
|
|
167
|
-
if (!validateItemId(pluginId)) {
|
|
168
|
-
return; // Silently fail for invalid IDs
|
|
169
|
-
}
|
|
170
|
-
try {
|
|
171
|
-
await fetch(`${REGISTRY_API_URL}?action=track-download`, {
|
|
172
|
-
method: 'POST',
|
|
173
|
-
headers: { 'Content-Type': 'application/json' },
|
|
174
|
-
body: JSON.stringify({ pluginId }),
|
|
175
|
-
signal: AbortSignal.timeout(5000),
|
|
176
|
-
});
|
|
177
|
-
}
|
|
178
|
-
catch {
|
|
179
|
-
// Non-critical, don't throw
|
|
180
|
-
}
|
|
181
|
-
}
|
|
182
|
-
/**
|
|
183
|
-
* Check API health
|
|
184
|
-
*/
|
|
185
|
-
export async function checkHealth() {
|
|
186
|
-
try {
|
|
187
|
-
const response = await fetch(`${REGISTRY_API_URL}?action=status`, {
|
|
188
|
-
signal: AbortSignal.timeout(5000),
|
|
189
|
-
});
|
|
190
|
-
return readBoundedJson(response, 64 * 1024);
|
|
191
|
-
}
|
|
192
|
-
catch (error) {
|
|
193
|
-
return {
|
|
194
|
-
healthy: false,
|
|
195
|
-
error: error instanceof Error ? error.message : 'Unknown error',
|
|
196
|
-
};
|
|
197
|
-
}
|
|
198
|
-
}
|
|
199
|
-
//# sourceMappingURL=registry-api.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"registry-api.js","sourceRoot":"","sources":["../../../src/services/registry-api.ts"],"names":[],"mappings":"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"}
|