@wundr.io/cli 1.0.12 → 1.0.13
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/LICENSE +21 -0
- package/dist/ai/ai-service.d.ts +152 -0
- package/dist/ai/ai-service.d.ts.map +1 -0
- package/dist/ai/ai-service.js +430 -0
- package/dist/ai/ai-service.js.map +1 -0
- package/dist/ai/claude-client.d.ts +130 -0
- package/dist/ai/claude-client.d.ts.map +1 -0
- package/dist/ai/claude-client.js +340 -0
- package/dist/ai/claude-client.js.map +1 -0
- package/dist/ai/conversation-manager.d.ts +164 -0
- package/dist/ai/conversation-manager.d.ts.map +1 -0
- package/dist/ai/conversation-manager.js +614 -0
- package/dist/ai/conversation-manager.js.map +1 -0
- package/dist/ai/index.d.ts +5 -0
- package/dist/ai/index.d.ts.map +1 -0
- package/dist/ai/index.js +8 -0
- package/dist/ai/index.js.map +1 -0
- package/dist/cli.d.ts +36 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/cli.js +192 -0
- package/dist/cli.js.map +1 -0
- package/dist/commands/ai.d.ts +89 -0
- package/dist/commands/ai.d.ts.map +1 -0
- package/dist/commands/ai.js +954 -0
- package/dist/commands/ai.js.map +1 -0
- package/dist/commands/alignment.d.ts +78 -0
- package/dist/commands/alignment.d.ts.map +1 -0
- package/dist/commands/alignment.js +817 -0
- package/dist/commands/alignment.js.map +1 -0
- package/dist/commands/analyze-optimized.d.ts +14 -0
- package/dist/commands/analyze-optimized.d.ts.map +1 -0
- package/dist/commands/analyze-optimized.js +609 -0
- package/dist/commands/analyze-optimized.js.map +1 -0
- package/dist/commands/analyze.d.ts +65 -0
- package/dist/commands/analyze.d.ts.map +1 -0
- package/dist/commands/analyze.js +435 -0
- package/dist/commands/analyze.js.map +1 -0
- package/dist/commands/batch.d.ts +93 -0
- package/dist/commands/batch.d.ts.map +1 -0
- package/dist/commands/batch.js +854 -0
- package/dist/commands/batch.js.map +1 -0
- package/dist/commands/chat.d.ts +72 -0
- package/dist/commands/chat.d.ts.map +1 -0
- package/dist/commands/chat.js +678 -0
- package/dist/commands/chat.js.map +1 -0
- package/dist/commands/claude-init.d.ts +28 -0
- package/dist/commands/claude-init.d.ts.map +1 -0
- package/dist/commands/claude-init.js +591 -0
- package/dist/commands/claude-init.js.map +1 -0
- package/dist/commands/claude-setup.d.ts +119 -0
- package/dist/commands/claude-setup.d.ts.map +1 -0
- package/dist/commands/claude-setup.js +1079 -0
- package/dist/commands/claude-setup.js.map +1 -0
- package/dist/commands/computer-setup.d.ts +8 -0
- package/dist/commands/computer-setup.d.ts.map +1 -0
- package/dist/commands/computer-setup.js +877 -0
- package/dist/commands/computer-setup.js.map +1 -0
- package/dist/commands/create-command.d.ts +7 -0
- package/dist/commands/create-command.d.ts.map +1 -0
- package/dist/commands/create-command.js +158 -0
- package/dist/commands/create-command.js.map +1 -0
- package/dist/commands/create.d.ts +74 -0
- package/dist/commands/create.d.ts.map +1 -0
- package/dist/commands/create.js +556 -0
- package/dist/commands/create.js.map +1 -0
- package/dist/commands/dashboard.d.ts +91 -0
- package/dist/commands/dashboard.d.ts.map +1 -0
- package/dist/commands/dashboard.js +538 -0
- package/dist/commands/dashboard.js.map +1 -0
- package/dist/commands/govern.d.ts +70 -0
- package/dist/commands/govern.d.ts.map +1 -0
- package/dist/commands/govern.js +481 -0
- package/dist/commands/govern.js.map +1 -0
- package/dist/commands/governance.d.ts +17 -0
- package/dist/commands/governance.d.ts.map +1 -0
- package/dist/commands/governance.js +703 -0
- package/dist/commands/governance.js.map +1 -0
- package/dist/commands/guardian.d.ts +20 -0
- package/dist/commands/guardian.d.ts.map +1 -0
- package/dist/commands/guardian.js +597 -0
- package/dist/commands/guardian.js.map +1 -0
- package/dist/commands/init.d.ts +59 -0
- package/dist/commands/init.d.ts.map +1 -0
- package/dist/commands/init.js +650 -0
- package/dist/commands/init.js.map +1 -0
- package/dist/commands/orchestrator.d.ts +7 -0
- package/dist/commands/orchestrator.d.ts.map +1 -0
- package/dist/commands/orchestrator.js +578 -0
- package/dist/commands/orchestrator.js.map +1 -0
- package/dist/commands/performance-optimizer.d.ts +30 -0
- package/dist/commands/performance-optimizer.d.ts.map +1 -0
- package/dist/commands/performance-optimizer.js +650 -0
- package/dist/commands/performance-optimizer.js.map +1 -0
- package/dist/commands/plugins.d.ts +87 -0
- package/dist/commands/plugins.d.ts.map +1 -0
- package/dist/commands/plugins.js +685 -0
- package/dist/commands/plugins.js.map +1 -0
- package/dist/commands/rag.d.ts +7 -0
- package/dist/commands/rag.d.ts.map +1 -0
- package/dist/commands/rag.js +751 -0
- package/dist/commands/rag.js.map +1 -0
- package/dist/commands/session.d.ts +41 -0
- package/dist/commands/session.d.ts.map +1 -0
- package/dist/commands/session.js +441 -0
- package/dist/commands/session.js.map +1 -0
- package/dist/commands/setup.d.ts +24 -0
- package/dist/commands/setup.d.ts.map +1 -0
- package/dist/commands/setup.js +172 -0
- package/dist/commands/setup.js.map +1 -0
- package/dist/commands/test-init.d.ts +9 -0
- package/dist/commands/test-init.d.ts.map +1 -0
- package/dist/commands/test-init.js +222 -0
- package/dist/commands/test-init.js.map +1 -0
- package/dist/commands/test.d.ts +25 -0
- package/dist/commands/test.d.ts.map +1 -0
- package/dist/commands/test.js +217 -0
- package/dist/commands/test.js.map +1 -0
- package/dist/commands/watch.d.ts +76 -0
- package/dist/commands/watch.d.ts.map +1 -0
- package/dist/commands/watch.js +613 -0
- package/dist/commands/watch.js.map +1 -0
- package/dist/commands/worktree.d.ts +63 -0
- package/dist/commands/worktree.d.ts.map +1 -0
- package/dist/commands/worktree.js +774 -0
- package/dist/commands/worktree.js.map +1 -0
- package/dist/context/context-manager.d.ts +155 -0
- package/dist/context/context-manager.d.ts.map +1 -0
- package/dist/context/context-manager.js +383 -0
- package/dist/context/context-manager.js.map +1 -0
- package/dist/context/index.d.ts +3 -0
- package/dist/context/index.d.ts.map +1 -0
- package/dist/context/index.js +6 -0
- package/dist/context/index.js.map +1 -0
- package/dist/context/session-manager.d.ts +207 -0
- package/dist/context/session-manager.d.ts.map +1 -0
- package/dist/context/session-manager.js +686 -0
- package/dist/context/session-manager.js.map +1 -0
- package/dist/framework/command-interface.d.ts +349 -0
- package/dist/framework/command-interface.d.ts.map +1 -0
- package/dist/framework/command-interface.js +101 -0
- package/dist/framework/command-interface.js.map +1 -0
- package/dist/framework/command-registry.d.ts +173 -0
- package/dist/framework/command-registry.d.ts.map +1 -0
- package/dist/framework/command-registry.js +734 -0
- package/dist/framework/command-registry.js.map +1 -0
- package/dist/framework/completion-exporter.d.ts +79 -0
- package/dist/framework/completion-exporter.d.ts.map +1 -0
- package/dist/framework/completion-exporter.js +259 -0
- package/dist/framework/completion-exporter.js.map +1 -0
- package/dist/framework/debug-logger.d.ts +163 -0
- package/dist/framework/debug-logger.d.ts.map +1 -0
- package/dist/framework/debug-logger.js +373 -0
- package/dist/framework/debug-logger.js.map +1 -0
- package/dist/framework/error-handler.d.ts +196 -0
- package/dist/framework/error-handler.d.ts.map +1 -0
- package/dist/framework/error-handler.js +613 -0
- package/dist/framework/error-handler.js.map +1 -0
- package/dist/framework/help-generator.d.ts +78 -0
- package/dist/framework/help-generator.d.ts.map +1 -0
- package/dist/framework/help-generator.js +414 -0
- package/dist/framework/help-generator.js.map +1 -0
- package/dist/framework/index.d.ts +62 -0
- package/dist/framework/index.d.ts.map +1 -0
- package/dist/framework/index.js +95 -0
- package/dist/framework/index.js.map +1 -0
- package/dist/framework/interactive-repl.d.ts +138 -0
- package/dist/framework/interactive-repl.d.ts.map +1 -0
- package/dist/framework/interactive-repl.js +567 -0
- package/dist/framework/interactive-repl.js.map +1 -0
- package/dist/framework/output-formatter.d.ts +274 -0
- package/dist/framework/output-formatter.d.ts.map +1 -0
- package/dist/framework/output-formatter.js +545 -0
- package/dist/framework/output-formatter.js.map +1 -0
- package/dist/framework/progress-manager.d.ts +192 -0
- package/dist/framework/progress-manager.d.ts.map +1 -0
- package/dist/framework/progress-manager.js +408 -0
- package/dist/framework/progress-manager.js.map +1 -0
- package/dist/index.d.ts +8 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +51 -0
- package/dist/index.js.map +1 -0
- package/dist/interactive/interactive-mode.d.ts +76 -0
- package/dist/interactive/interactive-mode.d.ts.map +1 -0
- package/dist/interactive/interactive-mode.js +732 -0
- package/dist/interactive/interactive-mode.js.map +1 -0
- package/dist/nlp/command-mapper.d.ts +174 -0
- package/dist/nlp/command-mapper.d.ts.map +1 -0
- package/dist/nlp/command-mapper.js +624 -0
- package/dist/nlp/command-mapper.js.map +1 -0
- package/dist/nlp/command-parser.d.ts +106 -0
- package/dist/nlp/command-parser.d.ts.map +1 -0
- package/dist/nlp/command-parser.js +417 -0
- package/dist/nlp/command-parser.js.map +1 -0
- package/dist/nlp/index.d.ts +5 -0
- package/dist/nlp/index.d.ts.map +1 -0
- package/dist/nlp/index.js +8 -0
- package/dist/nlp/index.js.map +1 -0
- package/dist/nlp/intent-classifier.d.ts +59 -0
- package/dist/nlp/intent-classifier.d.ts.map +1 -0
- package/dist/nlp/intent-classifier.js +384 -0
- package/dist/nlp/intent-classifier.js.map +1 -0
- package/dist/nlp/intent-parser.d.ts +152 -0
- package/dist/nlp/intent-parser.d.ts.map +1 -0
- package/dist/nlp/intent-parser.js +746 -0
- package/dist/nlp/intent-parser.js.map +1 -0
- package/dist/plugins/plugin-manager.d.ts +121 -0
- package/dist/plugins/plugin-manager.d.ts.map +1 -0
- package/dist/plugins/plugin-manager.js +606 -0
- package/dist/plugins/plugin-manager.js.map +1 -0
- package/dist/types/index.d.ts +224 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/index.js +3 -0
- package/dist/types/index.js.map +1 -0
- package/dist/utils/backup-rollback-manager.d.ts +72 -0
- package/dist/utils/backup-rollback-manager.d.ts.map +1 -0
- package/dist/utils/backup-rollback-manager.js +288 -0
- package/dist/utils/backup-rollback-manager.js.map +1 -0
- package/dist/utils/claude-config-installer.d.ts +98 -0
- package/dist/utils/claude-config-installer.d.ts.map +1 -0
- package/dist/utils/claude-config-installer.js +678 -0
- package/dist/utils/claude-config-installer.js.map +1 -0
- package/dist/utils/config-manager.d.ts +73 -0
- package/dist/utils/config-manager.d.ts.map +1 -0
- package/dist/utils/config-manager.js +339 -0
- package/dist/utils/config-manager.js.map +1 -0
- package/dist/utils/error-handler.d.ts +46 -0
- package/dist/utils/error-handler.d.ts.map +1 -0
- package/dist/utils/error-handler.js +169 -0
- package/dist/utils/error-handler.js.map +1 -0
- package/dist/utils/logger.d.ts +25 -0
- package/dist/utils/logger.d.ts.map +1 -0
- package/dist/utils/logger.js +105 -0
- package/dist/utils/logger.js.map +1 -0
- package/package.json +23 -23
|
@@ -0,0 +1,606 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.PluginManager = void 0;
|
|
4
|
+
const tslib_1 = require("tslib");
|
|
5
|
+
const child_process_1 = require("child_process");
|
|
6
|
+
const path_1 = tslib_1.__importDefault(require("path"));
|
|
7
|
+
const chalk_1 = tslib_1.__importDefault(require("chalk"));
|
|
8
|
+
const fs_extra_1 = tslib_1.__importDefault(require("fs-extra"));
|
|
9
|
+
const error_handler_1 = require("../utils/error-handler");
|
|
10
|
+
const logger_1 = require("../utils/logger");
|
|
11
|
+
/**
|
|
12
|
+
* Plugin management system for CLI extensibility
|
|
13
|
+
*/
|
|
14
|
+
class PluginManager {
|
|
15
|
+
configManager;
|
|
16
|
+
loadedPlugins = new Map();
|
|
17
|
+
pluginCommands = new Map();
|
|
18
|
+
pluginHooks = new Map();
|
|
19
|
+
pluginsDir;
|
|
20
|
+
constructor(configManager) {
|
|
21
|
+
this.configManager = configManager;
|
|
22
|
+
this.pluginsDir = path_1.default.join(process.cwd(), '.wundr', 'plugins');
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* Initialize plugin system
|
|
26
|
+
*/
|
|
27
|
+
async initialize() {
|
|
28
|
+
try {
|
|
29
|
+
await fs_extra_1.default.ensureDir(this.pluginsDir);
|
|
30
|
+
logger_1.logger.debug('Plugin system initialized');
|
|
31
|
+
}
|
|
32
|
+
catch (error) {
|
|
33
|
+
throw error_handler_1.errorHandler.createError('WUNDR_PLUGIN_INIT_FAILED', 'Failed to initialize plugin system', {}, true);
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* Load all plugins
|
|
38
|
+
*/
|
|
39
|
+
async loadPlugins() {
|
|
40
|
+
try {
|
|
41
|
+
const config = this.configManager.getConfig();
|
|
42
|
+
const enabledPlugins = config.plugins || [];
|
|
43
|
+
logger_1.logger.debug(`Loading ${enabledPlugins.length} plugins...`);
|
|
44
|
+
for (const pluginName of enabledPlugins) {
|
|
45
|
+
try {
|
|
46
|
+
await this.loadPlugin(pluginName);
|
|
47
|
+
}
|
|
48
|
+
catch (error) {
|
|
49
|
+
logger_1.logger.warn(`Failed to load plugin ${pluginName}:`, error.message);
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
logger_1.logger.debug(`Loaded ${this.loadedPlugins.size} plugins successfully`);
|
|
53
|
+
}
|
|
54
|
+
catch (error) {
|
|
55
|
+
throw error_handler_1.errorHandler.createError('WUNDR_PLUGIN_LOAD_FAILED', 'Failed to load plugins', {}, true);
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
/**
|
|
59
|
+
* Load a specific plugin
|
|
60
|
+
*/
|
|
61
|
+
async loadPlugin(pluginName) {
|
|
62
|
+
try {
|
|
63
|
+
if (this.loadedPlugins.has(pluginName)) {
|
|
64
|
+
logger_1.logger.debug(`Plugin ${pluginName} already loaded`);
|
|
65
|
+
return;
|
|
66
|
+
}
|
|
67
|
+
const pluginPath = await this.getPluginPath(pluginName);
|
|
68
|
+
if (!(await fs_extra_1.default.pathExists(pluginPath))) {
|
|
69
|
+
throw new Error(`Plugin not found: ${pluginName}`);
|
|
70
|
+
}
|
|
71
|
+
// Dynamic import of the plugin
|
|
72
|
+
const pluginModule = await this.importPlugin(pluginPath);
|
|
73
|
+
const plugin = this.createPluginInstance(pluginModule, pluginName);
|
|
74
|
+
// Create plugin context
|
|
75
|
+
const context = this.createPluginContext(pluginName);
|
|
76
|
+
// Activate the plugin
|
|
77
|
+
await plugin.activate(context);
|
|
78
|
+
// Store loaded plugin
|
|
79
|
+
this.loadedPlugins.set(pluginName, plugin);
|
|
80
|
+
logger_1.logger.debug(`Plugin loaded: ${pluginName}`);
|
|
81
|
+
}
|
|
82
|
+
catch (error) {
|
|
83
|
+
throw error_handler_1.errorHandler.createError('WUNDR_PLUGIN_LOAD_SINGLE_FAILED', `Failed to load plugin: ${pluginName}`, { pluginName }, true);
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
/**
|
|
87
|
+
* Unload a plugin
|
|
88
|
+
*/
|
|
89
|
+
async unloadPlugin(pluginName) {
|
|
90
|
+
try {
|
|
91
|
+
const plugin = this.loadedPlugins.get(pluginName);
|
|
92
|
+
if (!plugin) {
|
|
93
|
+
logger_1.logger.debug(`Plugin ${pluginName} is not loaded`);
|
|
94
|
+
return;
|
|
95
|
+
}
|
|
96
|
+
// Deactivate the plugin
|
|
97
|
+
await plugin.deactivate();
|
|
98
|
+
// Remove plugin commands and hooks
|
|
99
|
+
this.removePluginCommands(pluginName);
|
|
100
|
+
this.removePluginHooks(pluginName);
|
|
101
|
+
// Remove from loaded plugins
|
|
102
|
+
this.loadedPlugins.delete(pluginName);
|
|
103
|
+
logger_1.logger.debug(`Plugin unloaded: ${pluginName}`);
|
|
104
|
+
}
|
|
105
|
+
catch (error) {
|
|
106
|
+
throw error_handler_1.errorHandler.createError('WUNDR_PLUGIN_UNLOAD_FAILED', `Failed to unload plugin: ${pluginName}`, { pluginName }, true);
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
/**
|
|
110
|
+
* Install a plugin
|
|
111
|
+
*/
|
|
112
|
+
async installPlugin(pluginName, options = {}) {
|
|
113
|
+
try {
|
|
114
|
+
logger_1.logger.info(`Installing plugin: ${chalk_1.default.cyan(pluginName)}`);
|
|
115
|
+
// Determine installation method
|
|
116
|
+
if (this.isLocalPath(pluginName)) {
|
|
117
|
+
await this.installLocalPlugin(pluginName);
|
|
118
|
+
}
|
|
119
|
+
else if (this.isGitUrl(pluginName)) {
|
|
120
|
+
await this.installGitPlugin(pluginName);
|
|
121
|
+
}
|
|
122
|
+
else {
|
|
123
|
+
await this.installNpmPlugin(pluginName, options);
|
|
124
|
+
}
|
|
125
|
+
// Add to enabled plugins list
|
|
126
|
+
await this.addToEnabledPlugins(pluginName);
|
|
127
|
+
logger_1.logger.success(`Plugin ${pluginName} installed successfully`);
|
|
128
|
+
}
|
|
129
|
+
catch (error) {
|
|
130
|
+
throw error_handler_1.errorHandler.createError('WUNDR_PLUGIN_INSTALL_FAILED', `Failed to install plugin: ${pluginName}`, { pluginName, options }, true);
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
/**
|
|
134
|
+
* Uninstall a plugin
|
|
135
|
+
*/
|
|
136
|
+
async uninstallPlugin(pluginName) {
|
|
137
|
+
try {
|
|
138
|
+
// Unload plugin if loaded
|
|
139
|
+
if (this.loadedPlugins.has(pluginName)) {
|
|
140
|
+
await this.unloadPlugin(pluginName);
|
|
141
|
+
}
|
|
142
|
+
// Remove plugin files
|
|
143
|
+
const pluginPath = await this.getPluginPath(pluginName);
|
|
144
|
+
if (await fs_extra_1.default.pathExists(pluginPath)) {
|
|
145
|
+
await fs_extra_1.default.remove(pluginPath);
|
|
146
|
+
}
|
|
147
|
+
// Remove from enabled plugins list
|
|
148
|
+
await this.removeFromEnabledPlugins(pluginName);
|
|
149
|
+
logger_1.logger.success(`Plugin ${pluginName} uninstalled successfully`);
|
|
150
|
+
}
|
|
151
|
+
catch (error) {
|
|
152
|
+
throw error_handler_1.errorHandler.createError('WUNDR_PLUGIN_UNINSTALL_FAILED', `Failed to uninstall plugin: ${pluginName}`, { pluginName }, true);
|
|
153
|
+
}
|
|
154
|
+
}
|
|
155
|
+
/**
|
|
156
|
+
* Enable a plugin
|
|
157
|
+
*/
|
|
158
|
+
async enablePlugin(pluginName) {
|
|
159
|
+
try {
|
|
160
|
+
if (!(await this.isPluginInstalled(pluginName))) {
|
|
161
|
+
throw new Error(`Plugin not installed: ${pluginName}`);
|
|
162
|
+
}
|
|
163
|
+
await this.addToEnabledPlugins(pluginName);
|
|
164
|
+
await this.loadPlugin(pluginName);
|
|
165
|
+
logger_1.logger.success(`Plugin ${pluginName} enabled`);
|
|
166
|
+
}
|
|
167
|
+
catch (error) {
|
|
168
|
+
throw error_handler_1.errorHandler.createError('WUNDR_PLUGIN_ENABLE_FAILED', `Failed to enable plugin: ${pluginName}`, { pluginName }, true);
|
|
169
|
+
}
|
|
170
|
+
}
|
|
171
|
+
/**
|
|
172
|
+
* Disable a plugin
|
|
173
|
+
*/
|
|
174
|
+
async disablePlugin(pluginName) {
|
|
175
|
+
try {
|
|
176
|
+
await this.unloadPlugin(pluginName);
|
|
177
|
+
await this.removeFromEnabledPlugins(pluginName);
|
|
178
|
+
logger_1.logger.success(`Plugin ${pluginName} disabled`);
|
|
179
|
+
}
|
|
180
|
+
catch (error) {
|
|
181
|
+
throw error_handler_1.errorHandler.createError('WUNDR_PLUGIN_DISABLE_FAILED', `Failed to disable plugin: ${pluginName}`, { pluginName }, true);
|
|
182
|
+
}
|
|
183
|
+
}
|
|
184
|
+
/**
|
|
185
|
+
* Get plugin information
|
|
186
|
+
*/
|
|
187
|
+
async getPluginInfo(pluginName) {
|
|
188
|
+
try {
|
|
189
|
+
const pluginPath = await this.getPluginPath(pluginName);
|
|
190
|
+
const packageJsonPath = path_1.default.join(pluginPath, 'package.json');
|
|
191
|
+
if (!(await fs_extra_1.default.pathExists(packageJsonPath))) {
|
|
192
|
+
return null;
|
|
193
|
+
}
|
|
194
|
+
const packageJson = await fs_extra_1.default.readJson(packageJsonPath);
|
|
195
|
+
const plugin = this.loadedPlugins.get(pluginName);
|
|
196
|
+
return {
|
|
197
|
+
name: packageJson.name || pluginName,
|
|
198
|
+
version: packageJson.version,
|
|
199
|
+
description: packageJson.description,
|
|
200
|
+
author: packageJson.author,
|
|
201
|
+
enabled: !!plugin,
|
|
202
|
+
commands: plugin?.commands || [],
|
|
203
|
+
hooks: plugin?.hooks || [],
|
|
204
|
+
dependencies: packageJson.dependencies
|
|
205
|
+
? Object.keys(packageJson.dependencies)
|
|
206
|
+
: [],
|
|
207
|
+
};
|
|
208
|
+
}
|
|
209
|
+
catch (error) {
|
|
210
|
+
return null;
|
|
211
|
+
}
|
|
212
|
+
}
|
|
213
|
+
/**
|
|
214
|
+
* Check if plugin is installed
|
|
215
|
+
*/
|
|
216
|
+
async isPluginInstalled(pluginName) {
|
|
217
|
+
const pluginPath = await this.getPluginPath(pluginName);
|
|
218
|
+
return await fs_extra_1.default.pathExists(pluginPath);
|
|
219
|
+
}
|
|
220
|
+
/**
|
|
221
|
+
* Get installed plugins
|
|
222
|
+
*/
|
|
223
|
+
async getInstalledPlugins() {
|
|
224
|
+
try {
|
|
225
|
+
if (!(await fs_extra_1.default.pathExists(this.pluginsDir))) {
|
|
226
|
+
return [];
|
|
227
|
+
}
|
|
228
|
+
const pluginDirs = await fs_extra_1.default.readdir(this.pluginsDir);
|
|
229
|
+
const plugins = [];
|
|
230
|
+
for (const dir of pluginDirs) {
|
|
231
|
+
const pluginInfo = await this.getPluginInfo(dir);
|
|
232
|
+
if (pluginInfo) {
|
|
233
|
+
plugins.push(pluginInfo);
|
|
234
|
+
}
|
|
235
|
+
}
|
|
236
|
+
return plugins;
|
|
237
|
+
}
|
|
238
|
+
catch (error) {
|
|
239
|
+
logger_1.logger.debug('Failed to get installed plugins:', error);
|
|
240
|
+
return [];
|
|
241
|
+
}
|
|
242
|
+
}
|
|
243
|
+
/**
|
|
244
|
+
* Get available plugins by scanning the plugins directory on the filesystem.
|
|
245
|
+
* Returns an empty array if the directory does not exist or contains no valid plugins.
|
|
246
|
+
*/
|
|
247
|
+
async getAvailablePlugins() {
|
|
248
|
+
try {
|
|
249
|
+
if (!(await fs_extra_1.default.pathExists(this.pluginsDir))) {
|
|
250
|
+
logger_1.logger.debug(`Plugin directory not found: ${this.pluginsDir}`);
|
|
251
|
+
return [];
|
|
252
|
+
}
|
|
253
|
+
const entries = await fs_extra_1.default.readdir(this.pluginsDir);
|
|
254
|
+
const plugins = [];
|
|
255
|
+
for (const entry of entries) {
|
|
256
|
+
const entryPath = path_1.default.join(this.pluginsDir, entry);
|
|
257
|
+
const packageJsonPath = path_1.default.join(entryPath, 'package.json');
|
|
258
|
+
if (!(await fs_extra_1.default.pathExists(packageJsonPath))) {
|
|
259
|
+
continue;
|
|
260
|
+
}
|
|
261
|
+
try {
|
|
262
|
+
const packageJson = await fs_extra_1.default.readJson(packageJsonPath);
|
|
263
|
+
const stat = await fs_extra_1.default.stat(entryPath);
|
|
264
|
+
plugins.push({
|
|
265
|
+
name: packageJson.name || entry,
|
|
266
|
+
version: packageJson.version || 'unknown',
|
|
267
|
+
description: packageJson.description || '',
|
|
268
|
+
author: packageJson.author || '',
|
|
269
|
+
updated: stat.mtime.toISOString(),
|
|
270
|
+
});
|
|
271
|
+
}
|
|
272
|
+
catch (parseError) {
|
|
273
|
+
logger_1.logger.debug(`Failed to read package.json for plugin ${entry}:`, parseError);
|
|
274
|
+
}
|
|
275
|
+
}
|
|
276
|
+
return plugins;
|
|
277
|
+
}
|
|
278
|
+
catch (error) {
|
|
279
|
+
logger_1.logger.debug('Failed to get available plugins:', error);
|
|
280
|
+
return [];
|
|
281
|
+
}
|
|
282
|
+
}
|
|
283
|
+
/**
|
|
284
|
+
* Search plugins
|
|
285
|
+
*/
|
|
286
|
+
async searchPlugins(query, options = {}) {
|
|
287
|
+
try {
|
|
288
|
+
const available = await this.getAvailablePlugins();
|
|
289
|
+
return available
|
|
290
|
+
.filter(plugin => plugin.name.toLowerCase().includes(query.toLowerCase()) ||
|
|
291
|
+
plugin.description.toLowerCase().includes(query.toLowerCase()))
|
|
292
|
+
.slice(0, options.limit || 20);
|
|
293
|
+
}
|
|
294
|
+
catch (error) {
|
|
295
|
+
logger_1.logger.debug('Failed to search plugins:', error);
|
|
296
|
+
return [];
|
|
297
|
+
}
|
|
298
|
+
}
|
|
299
|
+
/**
|
|
300
|
+
* Update plugin
|
|
301
|
+
*/
|
|
302
|
+
async updatePlugin(pluginName) {
|
|
303
|
+
try {
|
|
304
|
+
logger_1.logger.info(`Updating plugin: ${pluginName}`);
|
|
305
|
+
// This would check for updates and install newer version
|
|
306
|
+
// For now, just reload the plugin
|
|
307
|
+
await this.unloadPlugin(pluginName);
|
|
308
|
+
await this.loadPlugin(pluginName);
|
|
309
|
+
logger_1.logger.success(`Plugin ${pluginName} updated`);
|
|
310
|
+
}
|
|
311
|
+
catch (error) {
|
|
312
|
+
throw error_handler_1.errorHandler.createError('WUNDR_PLUGIN_UPDATE_FAILED', `Failed to update plugin: ${pluginName}`, { pluginName }, true);
|
|
313
|
+
}
|
|
314
|
+
}
|
|
315
|
+
/**
|
|
316
|
+
* Update all plugins
|
|
317
|
+
*/
|
|
318
|
+
async updateAllPlugins() {
|
|
319
|
+
const plugins = await this.getInstalledPlugins();
|
|
320
|
+
for (const plugin of plugins) {
|
|
321
|
+
try {
|
|
322
|
+
await this.updatePlugin(plugin.name);
|
|
323
|
+
}
|
|
324
|
+
catch (error) {
|
|
325
|
+
logger_1.logger.warn(`Failed to update plugin ${plugin.name}:`, error.message);
|
|
326
|
+
}
|
|
327
|
+
}
|
|
328
|
+
}
|
|
329
|
+
/**
|
|
330
|
+
* Link plugin for development
|
|
331
|
+
*/
|
|
332
|
+
async linkPlugin(pluginPath) {
|
|
333
|
+
try {
|
|
334
|
+
const absolutePath = path_1.default.resolve(pluginPath);
|
|
335
|
+
const packageJsonPath = path_1.default.join(absolutePath, 'package.json');
|
|
336
|
+
if (!(await fs_extra_1.default.pathExists(packageJsonPath))) {
|
|
337
|
+
throw new Error('Invalid plugin: package.json not found');
|
|
338
|
+
}
|
|
339
|
+
const packageJson = await fs_extra_1.default.readJson(packageJsonPath);
|
|
340
|
+
const pluginName = packageJson.name || path_1.default.basename(absolutePath);
|
|
341
|
+
// Create symlink to plugin
|
|
342
|
+
const linkPath = path_1.default.join(this.pluginsDir, pluginName);
|
|
343
|
+
await fs_extra_1.default.ensureDir(path_1.default.dirname(linkPath));
|
|
344
|
+
if (await fs_extra_1.default.pathExists(linkPath)) {
|
|
345
|
+
await fs_extra_1.default.remove(linkPath);
|
|
346
|
+
}
|
|
347
|
+
await fs_extra_1.default.symlink(absolutePath, linkPath);
|
|
348
|
+
logger_1.logger.success(`Plugin linked: ${pluginName} -> ${absolutePath}`);
|
|
349
|
+
}
|
|
350
|
+
catch (error) {
|
|
351
|
+
throw error_handler_1.errorHandler.createError('WUNDR_PLUGIN_LINK_FAILED', 'Failed to link plugin', { pluginPath }, true);
|
|
352
|
+
}
|
|
353
|
+
}
|
|
354
|
+
/**
|
|
355
|
+
* Unlink plugin
|
|
356
|
+
*/
|
|
357
|
+
async unlinkPlugin(pluginName) {
|
|
358
|
+
try {
|
|
359
|
+
const pluginPath = path_1.default.join(this.pluginsDir, pluginName);
|
|
360
|
+
if (await fs_extra_1.default.pathExists(pluginPath)) {
|
|
361
|
+
const stats = await fs_extra_1.default.lstat(pluginPath);
|
|
362
|
+
if (stats.isSymbolicLink()) {
|
|
363
|
+
await fs_extra_1.default.remove(pluginPath);
|
|
364
|
+
logger_1.logger.success(`Plugin unlinked: ${pluginName}`);
|
|
365
|
+
}
|
|
366
|
+
else {
|
|
367
|
+
throw new Error(`Plugin ${pluginName} is not a symlink`);
|
|
368
|
+
}
|
|
369
|
+
}
|
|
370
|
+
else {
|
|
371
|
+
throw new Error(`Plugin ${pluginName} not found`);
|
|
372
|
+
}
|
|
373
|
+
}
|
|
374
|
+
catch (error) {
|
|
375
|
+
throw error_handler_1.errorHandler.createError('WUNDR_PLUGIN_UNLINK_FAILED', 'Failed to unlink plugin', { pluginName }, true);
|
|
376
|
+
}
|
|
377
|
+
}
|
|
378
|
+
/**
|
|
379
|
+
* Test plugin
|
|
380
|
+
*/
|
|
381
|
+
async testPlugin(pluginName, options = {}) {
|
|
382
|
+
try {
|
|
383
|
+
const pluginPath = await this.getPluginPath(pluginName);
|
|
384
|
+
const testCommand = options.coverage
|
|
385
|
+
? 'npm run test:coverage'
|
|
386
|
+
: 'npm test';
|
|
387
|
+
await this.runCommand(testCommand, { cwd: pluginPath });
|
|
388
|
+
}
|
|
389
|
+
catch (error) {
|
|
390
|
+
throw error_handler_1.errorHandler.createError('WUNDR_PLUGIN_TEST_FAILED', `Failed to test plugin: ${pluginName}`, { pluginName, options }, true);
|
|
391
|
+
}
|
|
392
|
+
}
|
|
393
|
+
/**
|
|
394
|
+
* Publish plugin
|
|
395
|
+
*/
|
|
396
|
+
async publishPlugin(options = {}) {
|
|
397
|
+
try {
|
|
398
|
+
// This would publish to a plugin registry
|
|
399
|
+
logger_1.logger.info('Publishing plugin to registry...');
|
|
400
|
+
// Mock implementation
|
|
401
|
+
await new Promise(resolve => setTimeout(resolve, 1000));
|
|
402
|
+
logger_1.logger.success('Plugin published successfully');
|
|
403
|
+
}
|
|
404
|
+
catch (error) {
|
|
405
|
+
throw error_handler_1.errorHandler.createError('WUNDR_PLUGIN_PUBLISH_FAILED', 'Failed to publish plugin', { options }, true);
|
|
406
|
+
}
|
|
407
|
+
}
|
|
408
|
+
/**
|
|
409
|
+
* Plugin configuration management
|
|
410
|
+
*/
|
|
411
|
+
async setPluginConfig(pluginName, key, value) {
|
|
412
|
+
this.configManager.set(`plugins.${pluginName}.${key}`, value);
|
|
413
|
+
await this.configManager.saveConfig();
|
|
414
|
+
}
|
|
415
|
+
async getPluginConfig(pluginName, key) {
|
|
416
|
+
if (key) {
|
|
417
|
+
return this.configManager.get(`plugins.${pluginName}.${key}`);
|
|
418
|
+
}
|
|
419
|
+
else {
|
|
420
|
+
return this.configManager.get(`plugins.${pluginName}`) || {};
|
|
421
|
+
}
|
|
422
|
+
}
|
|
423
|
+
/**
|
|
424
|
+
* Plugin command and hook management
|
|
425
|
+
*/
|
|
426
|
+
registerPluginCommand(pluginName, command) {
|
|
427
|
+
const commandKey = `${pluginName}:${command.name}`;
|
|
428
|
+
this.pluginCommands.set(commandKey, command);
|
|
429
|
+
logger_1.logger.debug(`Plugin command registered: ${commandKey}`);
|
|
430
|
+
}
|
|
431
|
+
registerPluginHook(pluginName, hook) {
|
|
432
|
+
if (!this.pluginHooks.has(hook.event)) {
|
|
433
|
+
this.pluginHooks.set(hook.event, []);
|
|
434
|
+
}
|
|
435
|
+
this.pluginHooks.get(hook.event).push(hook);
|
|
436
|
+
logger_1.logger.debug(`Plugin hook registered: ${pluginName}:${hook.event}`);
|
|
437
|
+
}
|
|
438
|
+
async executePluginHooks(event, data) {
|
|
439
|
+
const hooks = this.pluginHooks.get(event) || [];
|
|
440
|
+
for (const hook of hooks) {
|
|
441
|
+
try {
|
|
442
|
+
await hook.handler(data, this.createHookContext());
|
|
443
|
+
}
|
|
444
|
+
catch (error) {
|
|
445
|
+
logger_1.logger.warn(`Plugin hook failed: ${event}`, error.message);
|
|
446
|
+
}
|
|
447
|
+
}
|
|
448
|
+
}
|
|
449
|
+
getPluginCommands() {
|
|
450
|
+
return new Map(this.pluginCommands);
|
|
451
|
+
}
|
|
452
|
+
/**
|
|
453
|
+
* Helper methods
|
|
454
|
+
*/
|
|
455
|
+
async getPluginPath(pluginName) {
|
|
456
|
+
return path_1.default.join(this.pluginsDir, pluginName);
|
|
457
|
+
}
|
|
458
|
+
async importPlugin(pluginPath) {
|
|
459
|
+
// In a real implementation, this would handle different module formats
|
|
460
|
+
const mainFile = path_1.default.join(pluginPath, 'index.js');
|
|
461
|
+
if (await fs_extra_1.default.pathExists(mainFile)) {
|
|
462
|
+
return require(mainFile);
|
|
463
|
+
}
|
|
464
|
+
// Try package.json main field
|
|
465
|
+
const packageJsonPath = path_1.default.join(pluginPath, 'package.json');
|
|
466
|
+
if (await fs_extra_1.default.pathExists(packageJsonPath)) {
|
|
467
|
+
const packageJson = await fs_extra_1.default.readJson(packageJsonPath);
|
|
468
|
+
const main = packageJson.main || 'index.js';
|
|
469
|
+
return require(path_1.default.join(pluginPath, main));
|
|
470
|
+
}
|
|
471
|
+
throw new Error(`Plugin entry point not found: ${pluginPath}`);
|
|
472
|
+
}
|
|
473
|
+
createPluginInstance(pluginModule, pluginName) {
|
|
474
|
+
// Handle different export formats
|
|
475
|
+
if (typeof pluginModule === 'function') {
|
|
476
|
+
return new pluginModule();
|
|
477
|
+
}
|
|
478
|
+
else if (pluginModule.default &&
|
|
479
|
+
typeof pluginModule.default === 'function') {
|
|
480
|
+
return new pluginModule.default();
|
|
481
|
+
}
|
|
482
|
+
else if (pluginModule.default) {
|
|
483
|
+
return pluginModule.default;
|
|
484
|
+
}
|
|
485
|
+
else {
|
|
486
|
+
return pluginModule;
|
|
487
|
+
}
|
|
488
|
+
}
|
|
489
|
+
createPluginContext(pluginName) {
|
|
490
|
+
return {
|
|
491
|
+
config: this.configManager.getConfig(),
|
|
492
|
+
logger: logger_1.logger,
|
|
493
|
+
registerCommand: (command) => {
|
|
494
|
+
this.registerPluginCommand(pluginName, command);
|
|
495
|
+
},
|
|
496
|
+
registerHook: (hook) => {
|
|
497
|
+
this.registerPluginHook(pluginName, hook);
|
|
498
|
+
},
|
|
499
|
+
};
|
|
500
|
+
}
|
|
501
|
+
createHookContext() {
|
|
502
|
+
return {
|
|
503
|
+
config: this.configManager.getConfig(),
|
|
504
|
+
logger: logger_1.logger,
|
|
505
|
+
};
|
|
506
|
+
}
|
|
507
|
+
removePluginCommands(pluginName) {
|
|
508
|
+
for (const [key] of this.pluginCommands) {
|
|
509
|
+
if (key.startsWith(`${pluginName}:`)) {
|
|
510
|
+
this.pluginCommands.delete(key);
|
|
511
|
+
}
|
|
512
|
+
}
|
|
513
|
+
}
|
|
514
|
+
removePluginHooks(pluginName) {
|
|
515
|
+
for (const [event, hooks] of this.pluginHooks) {
|
|
516
|
+
const filteredHooks = hooks.filter(hook => !hook.event.startsWith(pluginName));
|
|
517
|
+
this.pluginHooks.set(event, filteredHooks);
|
|
518
|
+
}
|
|
519
|
+
}
|
|
520
|
+
async addToEnabledPlugins(pluginName) {
|
|
521
|
+
const config = this.configManager.getConfig();
|
|
522
|
+
if (!config.plugins.includes(pluginName)) {
|
|
523
|
+
config.plugins.push(pluginName);
|
|
524
|
+
await this.configManager.saveConfig();
|
|
525
|
+
}
|
|
526
|
+
}
|
|
527
|
+
async removeFromEnabledPlugins(pluginName) {
|
|
528
|
+
const config = this.configManager.getConfig();
|
|
529
|
+
const index = config.plugins.indexOf(pluginName);
|
|
530
|
+
if (index > -1) {
|
|
531
|
+
config.plugins.splice(index, 1);
|
|
532
|
+
await this.configManager.saveConfig();
|
|
533
|
+
}
|
|
534
|
+
}
|
|
535
|
+
isLocalPath(pluginName) {
|
|
536
|
+
return (pluginName.startsWith('./') ||
|
|
537
|
+
pluginName.startsWith('../') ||
|
|
538
|
+
path_1.default.isAbsolute(pluginName));
|
|
539
|
+
}
|
|
540
|
+
isGitUrl(pluginName) {
|
|
541
|
+
return (pluginName.startsWith('git+') ||
|
|
542
|
+
pluginName.includes('github.com') ||
|
|
543
|
+
pluginName.includes('.git'));
|
|
544
|
+
}
|
|
545
|
+
async installLocalPlugin(pluginPath) {
|
|
546
|
+
const absolutePath = path_1.default.resolve(pluginPath);
|
|
547
|
+
const pluginName = path_1.default.basename(absolutePath);
|
|
548
|
+
const targetPath = path_1.default.join(this.pluginsDir, pluginName);
|
|
549
|
+
await fs_extra_1.default.copy(absolutePath, targetPath);
|
|
550
|
+
// Install dependencies
|
|
551
|
+
await this.runCommand('npm install', { cwd: targetPath });
|
|
552
|
+
}
|
|
553
|
+
async installGitPlugin(gitUrl) {
|
|
554
|
+
const pluginName = path_1.default.basename(gitUrl, '.git');
|
|
555
|
+
const targetPath = path_1.default.join(this.pluginsDir, pluginName);
|
|
556
|
+
await this.runCommand(`git clone ${gitUrl} ${targetPath}`);
|
|
557
|
+
await this.runCommand('npm install', { cwd: targetPath });
|
|
558
|
+
}
|
|
559
|
+
async installNpmPlugin(pluginName, options) {
|
|
560
|
+
const versionSpec = options.version ? `@${options.version}` : '';
|
|
561
|
+
const targetPath = path_1.default.join(this.pluginsDir, pluginName);
|
|
562
|
+
await fs_extra_1.default.ensureDir(targetPath);
|
|
563
|
+
// Create temporary package.json
|
|
564
|
+
const tempPackageJson = {
|
|
565
|
+
name: 'temp-plugin-installer',
|
|
566
|
+
version: '1.0.0',
|
|
567
|
+
dependencies: {
|
|
568
|
+
[pluginName]: versionSpec || 'latest',
|
|
569
|
+
},
|
|
570
|
+
};
|
|
571
|
+
await fs_extra_1.default.writeJson(path_1.default.join(targetPath, 'package.json'), tempPackageJson);
|
|
572
|
+
await this.runCommand('npm install', { cwd: targetPath });
|
|
573
|
+
// Move plugin to correct location
|
|
574
|
+
const installedPath = path_1.default.join(targetPath, 'node_modules', pluginName);
|
|
575
|
+
const finalPath = path_1.default.join(this.pluginsDir, pluginName);
|
|
576
|
+
if (finalPath !== targetPath) {
|
|
577
|
+
await fs_extra_1.default.move(installedPath, finalPath);
|
|
578
|
+
await fs_extra_1.default.remove(targetPath);
|
|
579
|
+
}
|
|
580
|
+
}
|
|
581
|
+
async runCommand(command, options = {}) {
|
|
582
|
+
return new Promise((resolve, reject) => {
|
|
583
|
+
const [cmd, ...args] = command.split(' ');
|
|
584
|
+
if (!cmd) {
|
|
585
|
+
reject(new Error('Invalid command: empty command string'));
|
|
586
|
+
return;
|
|
587
|
+
}
|
|
588
|
+
const child = (0, child_process_1.spawn)(cmd, args, {
|
|
589
|
+
stdio: 'inherit',
|
|
590
|
+
shell: true,
|
|
591
|
+
...options,
|
|
592
|
+
});
|
|
593
|
+
child.on('exit', code => {
|
|
594
|
+
if (code === 0) {
|
|
595
|
+
resolve();
|
|
596
|
+
}
|
|
597
|
+
else {
|
|
598
|
+
reject(new Error(`Command failed with exit code ${code}: ${command}`));
|
|
599
|
+
}
|
|
600
|
+
});
|
|
601
|
+
child.on('error', reject);
|
|
602
|
+
});
|
|
603
|
+
}
|
|
604
|
+
}
|
|
605
|
+
exports.PluginManager = PluginManager;
|
|
606
|
+
//# sourceMappingURL=plugin-manager.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"plugin-manager.js","sourceRoot":"","sources":["../../src/plugins/plugin-manager.ts"],"names":[],"mappings":"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"}
|