@monoes/monomindcli 1.15.6 → 1.15.7
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.js +25 -25
- 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,498 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Plugin Manager
|
|
3
|
-
* Handles actual plugin installation, persistence, and lifecycle
|
|
4
|
-
* Bridges discovery service with file system persistence
|
|
5
|
-
*/
|
|
6
|
-
import * as fs from 'fs';
|
|
7
|
-
import * as path from 'path';
|
|
8
|
-
import { execFile } from 'child_process';
|
|
9
|
-
import { promisify } from 'util';
|
|
10
|
-
const execFileAsync = promisify(execFile);
|
|
11
|
-
/**
|
|
12
|
-
* Validate npm package name to prevent shell injection (S-3)
|
|
13
|
-
*/
|
|
14
|
-
const VALID_PACKAGE_RE = /^(@[a-z0-9-~][a-z0-9-._~]*\/)?[a-z0-9-~][a-z0-9-._~]*(@[a-z0-9._\-^~>=<]+)?$/;
|
|
15
|
-
function validatePackageName(spec) {
|
|
16
|
-
if (!VALID_PACKAGE_RE.test(spec)) {
|
|
17
|
-
throw new Error(`Invalid package name: ${spec}`);
|
|
18
|
-
}
|
|
19
|
-
}
|
|
20
|
-
const VALID_VERSION_RE = /^[a-zA-Z0-9._\-^~>=<*]+$/;
|
|
21
|
-
function validateVersion(version) {
|
|
22
|
-
if (!VALID_VERSION_RE.test(version) || version.length > 50) {
|
|
23
|
-
throw new Error(`Invalid version specifier: ${version}`);
|
|
24
|
-
}
|
|
25
|
-
}
|
|
26
|
-
/** Forbidden manifest keys (prototype pollution defense) */
|
|
27
|
-
const FORBIDDEN_PLUGIN_KEYS = new Set(['__proto__', 'constructor', 'prototype']);
|
|
28
|
-
function isValidPluginKey(name) {
|
|
29
|
-
return typeof name === 'string'
|
|
30
|
-
&& name.length > 0
|
|
31
|
-
&& name.length <= 214
|
|
32
|
-
&& !FORBIDDEN_PLUGIN_KEYS.has(name)
|
|
33
|
-
&& VALID_PACKAGE_RE.test(name);
|
|
34
|
-
}
|
|
35
|
-
// ============================================================================
|
|
36
|
-
// Plugin Manager
|
|
37
|
-
// ============================================================================
|
|
38
|
-
/**
|
|
39
|
-
* Manages plugin installation, persistence, and lifecycle.
|
|
40
|
-
*
|
|
41
|
-
* Unlike the simulated version, this actually:
|
|
42
|
-
* - Persists plugins to disk
|
|
43
|
-
* - Downloads from npm
|
|
44
|
-
* - Tracks enabled/disabled state
|
|
45
|
-
* - Loads plugin modules
|
|
46
|
-
*/
|
|
47
|
-
export class PluginManager {
|
|
48
|
-
config;
|
|
49
|
-
manifest = null;
|
|
50
|
-
constructor(baseDir = process.cwd()) {
|
|
51
|
-
const pluginsDir = path.join(baseDir, '.monomind', 'plugins');
|
|
52
|
-
this.config = {
|
|
53
|
-
pluginsDir,
|
|
54
|
-
manifestPath: path.join(pluginsDir, 'installed.json'),
|
|
55
|
-
};
|
|
56
|
-
}
|
|
57
|
-
// =========================================================================
|
|
58
|
-
// Initialization
|
|
59
|
-
// =========================================================================
|
|
60
|
-
/**
|
|
61
|
-
* Initialize the plugin manager, creating directories and loading manifest
|
|
62
|
-
*/
|
|
63
|
-
async initialize() {
|
|
64
|
-
// Ensure plugins directory exists
|
|
65
|
-
await this.ensureDirectory(this.config.pluginsDir);
|
|
66
|
-
// Load or create manifest
|
|
67
|
-
this.manifest = await this.loadManifest();
|
|
68
|
-
}
|
|
69
|
-
async ensureDirectory(dir) {
|
|
70
|
-
if (!fs.existsSync(dir)) {
|
|
71
|
-
fs.mkdirSync(dir, { recursive: true });
|
|
72
|
-
}
|
|
73
|
-
}
|
|
74
|
-
async loadManifest() {
|
|
75
|
-
try {
|
|
76
|
-
const MAX_MANIFEST_BYTES = 10 * 1024 * 1024; // 10 MB
|
|
77
|
-
if (fs.existsSync(this.config.manifestPath) && fs.statSync(this.config.manifestPath).size <= MAX_MANIFEST_BYTES) {
|
|
78
|
-
const content = fs.readFileSync(this.config.manifestPath, 'utf-8');
|
|
79
|
-
const parsed = JSON.parse(content);
|
|
80
|
-
if (Object.prototype.hasOwnProperty.call(parsed, '__proto__') ||
|
|
81
|
-
Object.prototype.hasOwnProperty.call(parsed, 'constructor') ||
|
|
82
|
-
Object.prototype.hasOwnProperty.call(parsed, 'prototype')) {
|
|
83
|
-
throw new Error('Manifest contains forbidden keys');
|
|
84
|
-
}
|
|
85
|
-
return parsed;
|
|
86
|
-
}
|
|
87
|
-
}
|
|
88
|
-
catch (error) {
|
|
89
|
-
console.warn('[PluginManager] Failed to load manifest, creating new one');
|
|
90
|
-
}
|
|
91
|
-
return {
|
|
92
|
-
version: '1.0.0',
|
|
93
|
-
lastUpdated: new Date().toISOString(),
|
|
94
|
-
plugins: {},
|
|
95
|
-
};
|
|
96
|
-
}
|
|
97
|
-
async saveManifest() {
|
|
98
|
-
if (!this.manifest)
|
|
99
|
-
return;
|
|
100
|
-
this.manifest.lastUpdated = new Date().toISOString();
|
|
101
|
-
await this.ensureDirectory(path.dirname(this.config.manifestPath));
|
|
102
|
-
// Atomic write to prevent corruption on crash
|
|
103
|
-
const tmp = this.config.manifestPath + '.tmp';
|
|
104
|
-
fs.writeFileSync(tmp, JSON.stringify(this.manifest, null, 2), 'utf-8');
|
|
105
|
-
fs.renameSync(tmp, this.config.manifestPath);
|
|
106
|
-
}
|
|
107
|
-
// =========================================================================
|
|
108
|
-
// Installation
|
|
109
|
-
// =========================================================================
|
|
110
|
-
/**
|
|
111
|
-
* Install a plugin from npm
|
|
112
|
-
*/
|
|
113
|
-
async installFromNpm(packageName, version) {
|
|
114
|
-
if (!this.manifest) {
|
|
115
|
-
await this.initialize();
|
|
116
|
-
}
|
|
117
|
-
if (!isValidPluginKey(packageName)) {
|
|
118
|
-
return { success: false, error: `Invalid package name: ${packageName}` };
|
|
119
|
-
}
|
|
120
|
-
if (version) {
|
|
121
|
-
try {
|
|
122
|
-
validateVersion(version);
|
|
123
|
-
}
|
|
124
|
-
catch {
|
|
125
|
-
return { success: false, error: `Invalid version specifier: ${version}` };
|
|
126
|
-
}
|
|
127
|
-
}
|
|
128
|
-
const versionSpec = version ? `${packageName}@${version}` : packageName;
|
|
129
|
-
try {
|
|
130
|
-
// Check if already installed
|
|
131
|
-
if (Object.hasOwn(this.manifest.plugins, packageName)) {
|
|
132
|
-
return {
|
|
133
|
-
success: false,
|
|
134
|
-
error: `Plugin ${packageName} is already installed. Use upgrade to update.`,
|
|
135
|
-
};
|
|
136
|
-
}
|
|
137
|
-
// Install to local plugins directory
|
|
138
|
-
const installDir = path.join(this.config.pluginsDir, 'node_modules');
|
|
139
|
-
await this.ensureDirectory(installDir);
|
|
140
|
-
// Validate package name to prevent injection (S-3)
|
|
141
|
-
validatePackageName(versionSpec);
|
|
142
|
-
// Use npm to install. --ignore-scripts blocks pre/post-install lifecycle hooks
|
|
143
|
-
// from the plugin package, which would otherwise execute arbitrary code at
|
|
144
|
-
// install time (the canonical npm supply-chain attack vector).
|
|
145
|
-
console.log(`[PluginManager] Installing ${versionSpec}...`);
|
|
146
|
-
await execFileAsync('npm', ['install', '--ignore-scripts', '--prefix', this.config.pluginsDir, versionSpec], { timeout: 120000 });
|
|
147
|
-
// Get installed version
|
|
148
|
-
const packageJsonPath = path.join(installDir, packageName, 'package.json');
|
|
149
|
-
let installedVersion = version || 'latest';
|
|
150
|
-
let commands = [];
|
|
151
|
-
let hooks = [];
|
|
152
|
-
const MAX_PKG_JSON_BYTES = 1024 * 1024; // 1 MB
|
|
153
|
-
if (fs.existsSync(packageJsonPath) && fs.statSync(packageJsonPath).size <= MAX_PKG_JSON_BYTES) {
|
|
154
|
-
const pkg = JSON.parse(fs.readFileSync(packageJsonPath, 'utf-8'));
|
|
155
|
-
installedVersion = pkg.version;
|
|
156
|
-
// Check for monomind plugin metadata
|
|
157
|
-
if (pkg['monomind']) {
|
|
158
|
-
commands = Array.isArray(pkg['monomind'].commands) ? pkg['monomind'].commands : [];
|
|
159
|
-
hooks = Array.isArray(pkg['monomind'].hooks) ? pkg['monomind'].hooks : [];
|
|
160
|
-
}
|
|
161
|
-
}
|
|
162
|
-
// Create plugin entry
|
|
163
|
-
const plugin = {
|
|
164
|
-
name: packageName,
|
|
165
|
-
version: installedVersion,
|
|
166
|
-
installedAt: new Date().toISOString(),
|
|
167
|
-
enabled: true,
|
|
168
|
-
source: 'npm',
|
|
169
|
-
path: path.join(installDir, packageName),
|
|
170
|
-
commands,
|
|
171
|
-
hooks,
|
|
172
|
-
};
|
|
173
|
-
// Save to manifest
|
|
174
|
-
this.manifest.plugins[packageName] = plugin;
|
|
175
|
-
await this.saveManifest();
|
|
176
|
-
console.log(`[PluginManager] Installed ${packageName}@${installedVersion}`);
|
|
177
|
-
return { success: true, plugin };
|
|
178
|
-
}
|
|
179
|
-
catch (error) {
|
|
180
|
-
const errorMsg = error instanceof Error ? error.message : String(error);
|
|
181
|
-
console.error(`[PluginManager] Failed to install ${packageName}:`, errorMsg);
|
|
182
|
-
return { success: false, error: errorMsg };
|
|
183
|
-
}
|
|
184
|
-
}
|
|
185
|
-
/**
|
|
186
|
-
* Install a plugin from a local path
|
|
187
|
-
*/
|
|
188
|
-
async installFromLocal(sourcePath) {
|
|
189
|
-
if (!this.manifest) {
|
|
190
|
-
await this.initialize();
|
|
191
|
-
}
|
|
192
|
-
try {
|
|
193
|
-
const absolutePath = path.resolve(sourcePath);
|
|
194
|
-
// Restrict local installs to paths under cwd or $HOME to prevent path traversal
|
|
195
|
-
const cwd = process.cwd();
|
|
196
|
-
const home = process.env.HOME ?? process.env.USERPROFILE ?? '';
|
|
197
|
-
const underCwd = absolutePath.startsWith(cwd + path.sep) || absolutePath === cwd;
|
|
198
|
-
const underHome = home && (absolutePath.startsWith(home + path.sep) || absolutePath === home);
|
|
199
|
-
if (!underCwd && !underHome) {
|
|
200
|
-
return { success: false, error: `Local path must be within the current directory or home: ${absolutePath}` };
|
|
201
|
-
}
|
|
202
|
-
if (!fs.existsSync(absolutePath)) {
|
|
203
|
-
return { success: false, error: `Path does not exist: ${absolutePath}` };
|
|
204
|
-
}
|
|
205
|
-
// Read package.json
|
|
206
|
-
const packageJsonPath = path.join(absolutePath, 'package.json');
|
|
207
|
-
if (!fs.existsSync(packageJsonPath)) {
|
|
208
|
-
return { success: false, error: 'No package.json found at path' };
|
|
209
|
-
}
|
|
210
|
-
if (fs.statSync(packageJsonPath).size > 1024 * 1024) {
|
|
211
|
-
return { success: false, error: 'package.json exceeds size limit' };
|
|
212
|
-
}
|
|
213
|
-
const pkg = JSON.parse(fs.readFileSync(packageJsonPath, 'utf-8'));
|
|
214
|
-
const packageName = pkg.name;
|
|
215
|
-
if (!isValidPluginKey(packageName)) {
|
|
216
|
-
return { success: false, error: `Invalid package.json: name is missing or invalid` };
|
|
217
|
-
}
|
|
218
|
-
// Check if already installed
|
|
219
|
-
if (Object.hasOwn(this.manifest.plugins, packageName)) {
|
|
220
|
-
return {
|
|
221
|
-
success: false,
|
|
222
|
-
error: `Plugin ${packageName} is already installed`,
|
|
223
|
-
};
|
|
224
|
-
}
|
|
225
|
-
// Create plugin entry (link to local path, don't copy)
|
|
226
|
-
const plugin = {
|
|
227
|
-
name: packageName,
|
|
228
|
-
version: pkg.version,
|
|
229
|
-
installedAt: new Date().toISOString(),
|
|
230
|
-
enabled: true,
|
|
231
|
-
source: 'local',
|
|
232
|
-
path: absolutePath,
|
|
233
|
-
commands: pkg['monomind']?.commands || [],
|
|
234
|
-
hooks: pkg['monomind']?.hooks || [],
|
|
235
|
-
};
|
|
236
|
-
// Save to manifest
|
|
237
|
-
this.manifest.plugins[packageName] = plugin;
|
|
238
|
-
await this.saveManifest();
|
|
239
|
-
console.log(`[PluginManager] Installed local plugin ${packageName}@${pkg.version}`);
|
|
240
|
-
return { success: true, plugin };
|
|
241
|
-
}
|
|
242
|
-
catch (error) {
|
|
243
|
-
const errorMsg = error instanceof Error ? error.message : String(error);
|
|
244
|
-
console.error(`[PluginManager] Failed to install from local:`, errorMsg);
|
|
245
|
-
return { success: false, error: errorMsg };
|
|
246
|
-
}
|
|
247
|
-
}
|
|
248
|
-
// =========================================================================
|
|
249
|
-
// Uninstallation
|
|
250
|
-
// =========================================================================
|
|
251
|
-
/**
|
|
252
|
-
* Uninstall a plugin
|
|
253
|
-
*/
|
|
254
|
-
async uninstall(packageName) {
|
|
255
|
-
if (!this.manifest) {
|
|
256
|
-
await this.initialize();
|
|
257
|
-
}
|
|
258
|
-
if (!isValidPluginKey(packageName)) {
|
|
259
|
-
return { success: false, error: `Invalid package name` };
|
|
260
|
-
}
|
|
261
|
-
const plugin = Object.hasOwn(this.manifest.plugins, packageName)
|
|
262
|
-
? this.manifest.plugins[packageName]
|
|
263
|
-
: undefined;
|
|
264
|
-
if (!plugin) {
|
|
265
|
-
return { success: false, error: `Plugin ${packageName} is not installed` };
|
|
266
|
-
}
|
|
267
|
-
try {
|
|
268
|
-
// For npm-installed plugins, remove from node_modules
|
|
269
|
-
if (plugin.source === 'npm') {
|
|
270
|
-
validatePackageName(packageName);
|
|
271
|
-
await execFileAsync('npm', ['uninstall', '--ignore-scripts', '--prefix', this.config.pluginsDir, packageName], { timeout: 60000 });
|
|
272
|
-
}
|
|
273
|
-
// Remove from manifest
|
|
274
|
-
delete this.manifest.plugins[packageName];
|
|
275
|
-
await this.saveManifest();
|
|
276
|
-
console.log(`[PluginManager] Uninstalled ${packageName}`);
|
|
277
|
-
return { success: true };
|
|
278
|
-
}
|
|
279
|
-
catch (error) {
|
|
280
|
-
const errorMsg = error instanceof Error ? error.message : String(error);
|
|
281
|
-
console.error(`[PluginManager] Failed to uninstall ${packageName}:`, errorMsg);
|
|
282
|
-
return { success: false, error: errorMsg };
|
|
283
|
-
}
|
|
284
|
-
}
|
|
285
|
-
// =========================================================================
|
|
286
|
-
// Enable/Disable
|
|
287
|
-
// =========================================================================
|
|
288
|
-
/**
|
|
289
|
-
* Enable a plugin
|
|
290
|
-
*/
|
|
291
|
-
async enable(packageName) {
|
|
292
|
-
if (!this.manifest) {
|
|
293
|
-
await this.initialize();
|
|
294
|
-
}
|
|
295
|
-
if (!isValidPluginKey(packageName)) {
|
|
296
|
-
return { success: false, error: `Invalid package name` };
|
|
297
|
-
}
|
|
298
|
-
const plugin = Object.hasOwn(this.manifest.plugins, packageName)
|
|
299
|
-
? this.manifest.plugins[packageName]
|
|
300
|
-
: undefined;
|
|
301
|
-
if (!plugin) {
|
|
302
|
-
return { success: false, error: `Plugin ${packageName} is not installed` };
|
|
303
|
-
}
|
|
304
|
-
plugin.enabled = true;
|
|
305
|
-
await this.saveManifest();
|
|
306
|
-
return { success: true };
|
|
307
|
-
}
|
|
308
|
-
/**
|
|
309
|
-
* Disable a plugin
|
|
310
|
-
*/
|
|
311
|
-
async disable(packageName) {
|
|
312
|
-
if (!this.manifest) {
|
|
313
|
-
await this.initialize();
|
|
314
|
-
}
|
|
315
|
-
if (!isValidPluginKey(packageName)) {
|
|
316
|
-
return { success: false, error: `Invalid package name` };
|
|
317
|
-
}
|
|
318
|
-
const plugin = Object.hasOwn(this.manifest.plugins, packageName)
|
|
319
|
-
? this.manifest.plugins[packageName]
|
|
320
|
-
: undefined;
|
|
321
|
-
if (!plugin) {
|
|
322
|
-
return { success: false, error: `Plugin ${packageName} is not installed` };
|
|
323
|
-
}
|
|
324
|
-
plugin.enabled = false;
|
|
325
|
-
await this.saveManifest();
|
|
326
|
-
return { success: true };
|
|
327
|
-
}
|
|
328
|
-
/**
|
|
329
|
-
* Toggle a plugin's enabled state
|
|
330
|
-
*/
|
|
331
|
-
async toggle(packageName) {
|
|
332
|
-
if (!this.manifest) {
|
|
333
|
-
await this.initialize();
|
|
334
|
-
}
|
|
335
|
-
if (!isValidPluginKey(packageName)) {
|
|
336
|
-
return { success: false, error: `Invalid package name` };
|
|
337
|
-
}
|
|
338
|
-
const plugin = Object.hasOwn(this.manifest.plugins, packageName)
|
|
339
|
-
? this.manifest.plugins[packageName]
|
|
340
|
-
: undefined;
|
|
341
|
-
if (!plugin) {
|
|
342
|
-
return { success: false, error: `Plugin ${packageName} is not installed` };
|
|
343
|
-
}
|
|
344
|
-
plugin.enabled = !plugin.enabled;
|
|
345
|
-
await this.saveManifest();
|
|
346
|
-
return { success: true, enabled: plugin.enabled };
|
|
347
|
-
}
|
|
348
|
-
// =========================================================================
|
|
349
|
-
// Query
|
|
350
|
-
// =========================================================================
|
|
351
|
-
/**
|
|
352
|
-
* Get all installed plugins
|
|
353
|
-
*/
|
|
354
|
-
async getInstalled() {
|
|
355
|
-
if (!this.manifest) {
|
|
356
|
-
await this.initialize();
|
|
357
|
-
}
|
|
358
|
-
return Object.values(this.manifest.plugins);
|
|
359
|
-
}
|
|
360
|
-
/**
|
|
361
|
-
* Get enabled plugins
|
|
362
|
-
*/
|
|
363
|
-
async getEnabled() {
|
|
364
|
-
const all = await this.getInstalled();
|
|
365
|
-
return all.filter(p => p.enabled);
|
|
366
|
-
}
|
|
367
|
-
/**
|
|
368
|
-
* Check if a plugin is installed
|
|
369
|
-
*/
|
|
370
|
-
async isInstalled(packageName) {
|
|
371
|
-
if (!this.manifest) {
|
|
372
|
-
await this.initialize();
|
|
373
|
-
}
|
|
374
|
-
if (!isValidPluginKey(packageName))
|
|
375
|
-
return false;
|
|
376
|
-
return Object.hasOwn(this.manifest.plugins, packageName);
|
|
377
|
-
}
|
|
378
|
-
/**
|
|
379
|
-
* Get a specific installed plugin
|
|
380
|
-
*/
|
|
381
|
-
async getPlugin(packageName) {
|
|
382
|
-
if (!this.manifest) {
|
|
383
|
-
await this.initialize();
|
|
384
|
-
}
|
|
385
|
-
if (!isValidPluginKey(packageName))
|
|
386
|
-
return undefined;
|
|
387
|
-
return Object.hasOwn(this.manifest.plugins, packageName)
|
|
388
|
-
? this.manifest.plugins[packageName]
|
|
389
|
-
: undefined;
|
|
390
|
-
}
|
|
391
|
-
// =========================================================================
|
|
392
|
-
// Upgrade
|
|
393
|
-
// =========================================================================
|
|
394
|
-
/**
|
|
395
|
-
* Upgrade a plugin to a new version
|
|
396
|
-
*/
|
|
397
|
-
async upgrade(packageName, version) {
|
|
398
|
-
if (!this.manifest) {
|
|
399
|
-
await this.initialize();
|
|
400
|
-
}
|
|
401
|
-
if (!isValidPluginKey(packageName)) {
|
|
402
|
-
return { success: false, error: `Invalid package name` };
|
|
403
|
-
}
|
|
404
|
-
if (version) {
|
|
405
|
-
try {
|
|
406
|
-
validateVersion(version);
|
|
407
|
-
}
|
|
408
|
-
catch {
|
|
409
|
-
return { success: false, error: `Invalid version specifier: ${version}` };
|
|
410
|
-
}
|
|
411
|
-
}
|
|
412
|
-
const existing = Object.hasOwn(this.manifest.plugins, packageName)
|
|
413
|
-
? this.manifest.plugins[packageName]
|
|
414
|
-
: undefined;
|
|
415
|
-
if (!existing) {
|
|
416
|
-
return { success: false, error: `Plugin ${packageName} is not installed` };
|
|
417
|
-
}
|
|
418
|
-
if (existing.source !== 'npm') {
|
|
419
|
-
return { success: false, error: 'Can only upgrade npm-installed plugins' };
|
|
420
|
-
}
|
|
421
|
-
try {
|
|
422
|
-
const versionSpec = version ? `${packageName}@${version}` : `${packageName}@latest`;
|
|
423
|
-
// Validate package name to prevent injection (S-3)
|
|
424
|
-
validatePackageName(versionSpec);
|
|
425
|
-
// Reinstall with new version. --ignore-scripts blocks pre/post-install
|
|
426
|
-
// lifecycle hooks from the plugin package.
|
|
427
|
-
await execFileAsync('npm', ['install', '--ignore-scripts', '--prefix', this.config.pluginsDir, versionSpec], { timeout: 120000 });
|
|
428
|
-
// Update manifest
|
|
429
|
-
const installDir = path.join(this.config.pluginsDir, 'node_modules');
|
|
430
|
-
const packageJsonPath = path.join(installDir, packageName, 'package.json');
|
|
431
|
-
if (fs.existsSync(packageJsonPath) && fs.statSync(packageJsonPath).size <= 1024 * 1024) {
|
|
432
|
-
const pkg = JSON.parse(fs.readFileSync(packageJsonPath, 'utf-8'));
|
|
433
|
-
existing.version = pkg.version;
|
|
434
|
-
existing.commands = pkg['monomind']?.commands || existing.commands;
|
|
435
|
-
existing.hooks = pkg['monomind']?.hooks || existing.hooks;
|
|
436
|
-
}
|
|
437
|
-
await this.saveManifest();
|
|
438
|
-
console.log(`[PluginManager] Upgraded ${packageName} to ${existing.version}`);
|
|
439
|
-
return { success: true, plugin: existing };
|
|
440
|
-
}
|
|
441
|
-
catch (error) {
|
|
442
|
-
const errorMsg = error instanceof Error ? error.message : String(error);
|
|
443
|
-
return { success: false, error: errorMsg };
|
|
444
|
-
}
|
|
445
|
-
}
|
|
446
|
-
// =========================================================================
|
|
447
|
-
// Config
|
|
448
|
-
// =========================================================================
|
|
449
|
-
/**
|
|
450
|
-
* Update plugin config
|
|
451
|
-
*/
|
|
452
|
-
async setConfig(packageName, config) {
|
|
453
|
-
if (!this.manifest) {
|
|
454
|
-
await this.initialize();
|
|
455
|
-
}
|
|
456
|
-
if (!isValidPluginKey(packageName)) {
|
|
457
|
-
return { success: false, error: `Invalid package name` };
|
|
458
|
-
}
|
|
459
|
-
const plugin = Object.hasOwn(this.manifest.plugins, packageName)
|
|
460
|
-
? this.manifest.plugins[packageName]
|
|
461
|
-
: undefined;
|
|
462
|
-
if (!plugin) {
|
|
463
|
-
return { success: false, error: `Plugin ${packageName} is not installed` };
|
|
464
|
-
}
|
|
465
|
-
plugin.config = { ...plugin.config, ...config };
|
|
466
|
-
await this.saveManifest();
|
|
467
|
-
return { success: true };
|
|
468
|
-
}
|
|
469
|
-
/**
|
|
470
|
-
* Get plugins directory path
|
|
471
|
-
*/
|
|
472
|
-
getPluginsDir() {
|
|
473
|
-
return this.config.pluginsDir;
|
|
474
|
-
}
|
|
475
|
-
/**
|
|
476
|
-
* Get manifest path
|
|
477
|
-
*/
|
|
478
|
-
getManifestPath() {
|
|
479
|
-
return this.config.manifestPath;
|
|
480
|
-
}
|
|
481
|
-
}
|
|
482
|
-
// ============================================================================
|
|
483
|
-
// Singleton Instance
|
|
484
|
-
// ============================================================================
|
|
485
|
-
let defaultManager = null;
|
|
486
|
-
export function getPluginManager(baseDir) {
|
|
487
|
-
if (!defaultManager) {
|
|
488
|
-
defaultManager = new PluginManager(baseDir);
|
|
489
|
-
}
|
|
490
|
-
else if (baseDir && defaultManager.getPluginsDir() !== path.join(baseDir, '.monomind', 'plugins')) {
|
|
491
|
-
console.warn(`[PluginManager] Warning: getPluginManager called with different baseDir. Using existing instance. Call resetPluginManager() first to change.`);
|
|
492
|
-
}
|
|
493
|
-
return defaultManager;
|
|
494
|
-
}
|
|
495
|
-
export function resetPluginManager() {
|
|
496
|
-
defaultManager = null;
|
|
497
|
-
}
|
|
498
|
-
//# sourceMappingURL=manager.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"manager.js","sourceRoot":"","sources":["../../../src/plugins/manager.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,88 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Plugin Discovery Service
|
|
3
|
-
* Discovers plugin registries via IPNS and fetches from IPFS
|
|
4
|
-
* Parallel implementation to pattern store for plugins
|
|
5
|
-
*/
|
|
6
|
-
import type { PluginRegistry, KnownPluginRegistry, PluginStoreConfig } from './types.js';
|
|
7
|
-
/**
|
|
8
|
-
* Default plugin store configuration
|
|
9
|
-
*/
|
|
10
|
-
/**
|
|
11
|
-
* Live IPFS Registry CID - Updated 2026-01-24
|
|
12
|
-
* This is the current pinned registry on Pinata
|
|
13
|
-
*/
|
|
14
|
-
export declare const LIVE_REGISTRY_CID = "QmXbfEAaR7D2Ujm4GAkbwcGZQMHqAMpwDoje4583uNP834";
|
|
15
|
-
/**
|
|
16
|
-
* Pre-trained Model Registry CID - Updated 2026-01-24
|
|
17
|
-
* Contains 8 pre-trained learning pattern models with 40 patterns
|
|
18
|
-
* Trained on 110,600+ examples with 90.5% average accuracy
|
|
19
|
-
*/
|
|
20
|
-
export declare const MODEL_REGISTRY_CID = "QmNr1yYMKi7YBaL8JSztQyuB5ZUaTdRMLxJC1pBpGbjsTc";
|
|
21
|
-
export declare const DEFAULT_PLUGIN_STORE_CONFIG: PluginStoreConfig;
|
|
22
|
-
/**
|
|
23
|
-
* Discovery result
|
|
24
|
-
*/
|
|
25
|
-
export interface PluginDiscoveryResult {
|
|
26
|
-
success: boolean;
|
|
27
|
-
registry?: PluginRegistry;
|
|
28
|
-
cid?: string;
|
|
29
|
-
source?: string;
|
|
30
|
-
fromCache?: boolean;
|
|
31
|
-
error?: string;
|
|
32
|
-
}
|
|
33
|
-
/**
|
|
34
|
-
* Plugin Discovery Service
|
|
35
|
-
*/
|
|
36
|
-
export declare class PluginDiscoveryService {
|
|
37
|
-
private config;
|
|
38
|
-
private cache;
|
|
39
|
-
constructor(config?: Partial<PluginStoreConfig>);
|
|
40
|
-
/**
|
|
41
|
-
* Discover plugin registry via IPNS
|
|
42
|
-
*/
|
|
43
|
-
discoverRegistry(registryName?: string): Promise<PluginDiscoveryResult>;
|
|
44
|
-
/**
|
|
45
|
-
* Create demo plugin registry with real npm stats
|
|
46
|
-
*/
|
|
47
|
-
private createDemoRegistryAsync;
|
|
48
|
-
/**
|
|
49
|
-
* Get demo plugins
|
|
50
|
-
*/
|
|
51
|
-
private getDemoPlugins;
|
|
52
|
-
/**
|
|
53
|
-
* Get demo plugins with real npm stats
|
|
54
|
-
*/
|
|
55
|
-
private getDemoPluginsWithStats;
|
|
56
|
-
/**
|
|
57
|
-
* Verify registry signature using real Ed25519
|
|
58
|
-
*/
|
|
59
|
-
private verifyRegistrySignature;
|
|
60
|
-
/**
|
|
61
|
-
* List available registries
|
|
62
|
-
*/
|
|
63
|
-
listRegistries(): KnownPluginRegistry[];
|
|
64
|
-
/**
|
|
65
|
-
* Add a new registry
|
|
66
|
-
*/
|
|
67
|
-
addRegistry(registry: KnownPluginRegistry): void;
|
|
68
|
-
/**
|
|
69
|
-
* Remove a registry
|
|
70
|
-
*/
|
|
71
|
-
removeRegistry(name: string): boolean;
|
|
72
|
-
/**
|
|
73
|
-
* Clear cache
|
|
74
|
-
*/
|
|
75
|
-
clearCache(): void;
|
|
76
|
-
/**
|
|
77
|
-
* Get cache statistics
|
|
78
|
-
*/
|
|
79
|
-
getCacheStats(): {
|
|
80
|
-
entries: number;
|
|
81
|
-
registries: string[];
|
|
82
|
-
};
|
|
83
|
-
}
|
|
84
|
-
/**
|
|
85
|
-
* Create discovery service with default config
|
|
86
|
-
*/
|
|
87
|
-
export declare function createPluginDiscoveryService(config?: Partial<PluginStoreConfig>): PluginDiscoveryService;
|
|
88
|
-
//# sourceMappingURL=discovery.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"discovery.d.ts","sourceRoot":"","sources":["../../../../src/plugins/store/discovery.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAKH,OAAO,KAAK,EACV,cAAc,EACd,mBAAmB,EACnB,iBAAiB,EAElB,MAAM,YAAY,CAAC;AA4EpB;;GAEG;AACH;;;GAGG;AACH,eAAO,MAAM,iBAAiB,mDAAmD,CAAC;AAElF;;;;GAIG;AACH,eAAO,MAAM,kBAAkB,mDAAmD,CAAC;AAEnF,eAAO,MAAM,2BAA2B,EAAE,iBAkCzC,CAAC;AAEF;;GAEG;AACH,MAAM,WAAW,qBAAqB;IACpC,OAAO,EAAE,OAAO,CAAC;IACjB,QAAQ,CAAC,EAAE,cAAc,CAAC;IAC1B,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED;;GAEG;AACH,qBAAa,sBAAsB;IACjC,OAAO,CAAC,MAAM,CAAoB;IAClC,OAAO,CAAC,KAAK,CAA2E;gBAE5E,MAAM,GAAE,OAAO,CAAC,iBAAiB,CAAM;IAInD;;OAEG;IACG,gBAAgB,CAAC,YAAY,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,qBAAqB,CAAC;IAgF7E;;OAEG;YACW,uBAAuB;IAwDrC;;OAEG;IACH,OAAO,CAAC,cAAc;IAwQtB;;OAEG;YACW,uBAAuB;IAkDrC;;OAEG;YACW,uBAAuB;IAwBrC;;OAEG;IACH,cAAc,IAAI,mBAAmB,EAAE;IAIvC;;OAEG;IACH,WAAW,CAAC,QAAQ,EAAE,mBAAmB,GAAG,IAAI;IAIhD;;OAEG;IACH,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IASrC;;OAEG;IACH,UAAU,IAAI,IAAI;IAIlB;;OAEG;IACH,aAAa,IAAI;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,MAAM,EAAE,CAAA;KAAE;CAM3D;AAED;;GAEG;AACH,wBAAgB,4BAA4B,CAC1C,MAAM,CAAC,EAAE,OAAO,CAAC,iBAAiB,CAAC,GAClC,sBAAsB,CAExB"}
|