@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.
Files changed (234) hide show
  1. package/LICENSE +21 -0
  2. package/dist/ai/ai-service.d.ts +152 -0
  3. package/dist/ai/ai-service.d.ts.map +1 -0
  4. package/dist/ai/ai-service.js +430 -0
  5. package/dist/ai/ai-service.js.map +1 -0
  6. package/dist/ai/claude-client.d.ts +130 -0
  7. package/dist/ai/claude-client.d.ts.map +1 -0
  8. package/dist/ai/claude-client.js +340 -0
  9. package/dist/ai/claude-client.js.map +1 -0
  10. package/dist/ai/conversation-manager.d.ts +164 -0
  11. package/dist/ai/conversation-manager.d.ts.map +1 -0
  12. package/dist/ai/conversation-manager.js +614 -0
  13. package/dist/ai/conversation-manager.js.map +1 -0
  14. package/dist/ai/index.d.ts +5 -0
  15. package/dist/ai/index.d.ts.map +1 -0
  16. package/dist/ai/index.js +8 -0
  17. package/dist/ai/index.js.map +1 -0
  18. package/dist/cli.d.ts +36 -0
  19. package/dist/cli.d.ts.map +1 -0
  20. package/dist/cli.js +192 -0
  21. package/dist/cli.js.map +1 -0
  22. package/dist/commands/ai.d.ts +89 -0
  23. package/dist/commands/ai.d.ts.map +1 -0
  24. package/dist/commands/ai.js +954 -0
  25. package/dist/commands/ai.js.map +1 -0
  26. package/dist/commands/alignment.d.ts +78 -0
  27. package/dist/commands/alignment.d.ts.map +1 -0
  28. package/dist/commands/alignment.js +817 -0
  29. package/dist/commands/alignment.js.map +1 -0
  30. package/dist/commands/analyze-optimized.d.ts +14 -0
  31. package/dist/commands/analyze-optimized.d.ts.map +1 -0
  32. package/dist/commands/analyze-optimized.js +609 -0
  33. package/dist/commands/analyze-optimized.js.map +1 -0
  34. package/dist/commands/analyze.d.ts +65 -0
  35. package/dist/commands/analyze.d.ts.map +1 -0
  36. package/dist/commands/analyze.js +435 -0
  37. package/dist/commands/analyze.js.map +1 -0
  38. package/dist/commands/batch.d.ts +93 -0
  39. package/dist/commands/batch.d.ts.map +1 -0
  40. package/dist/commands/batch.js +854 -0
  41. package/dist/commands/batch.js.map +1 -0
  42. package/dist/commands/chat.d.ts +72 -0
  43. package/dist/commands/chat.d.ts.map +1 -0
  44. package/dist/commands/chat.js +678 -0
  45. package/dist/commands/chat.js.map +1 -0
  46. package/dist/commands/claude-init.d.ts +28 -0
  47. package/dist/commands/claude-init.d.ts.map +1 -0
  48. package/dist/commands/claude-init.js +591 -0
  49. package/dist/commands/claude-init.js.map +1 -0
  50. package/dist/commands/claude-setup.d.ts +119 -0
  51. package/dist/commands/claude-setup.d.ts.map +1 -0
  52. package/dist/commands/claude-setup.js +1079 -0
  53. package/dist/commands/claude-setup.js.map +1 -0
  54. package/dist/commands/computer-setup.d.ts +8 -0
  55. package/dist/commands/computer-setup.d.ts.map +1 -0
  56. package/dist/commands/computer-setup.js +877 -0
  57. package/dist/commands/computer-setup.js.map +1 -0
  58. package/dist/commands/create-command.d.ts +7 -0
  59. package/dist/commands/create-command.d.ts.map +1 -0
  60. package/dist/commands/create-command.js +158 -0
  61. package/dist/commands/create-command.js.map +1 -0
  62. package/dist/commands/create.d.ts +74 -0
  63. package/dist/commands/create.d.ts.map +1 -0
  64. package/dist/commands/create.js +556 -0
  65. package/dist/commands/create.js.map +1 -0
  66. package/dist/commands/dashboard.d.ts +91 -0
  67. package/dist/commands/dashboard.d.ts.map +1 -0
  68. package/dist/commands/dashboard.js +538 -0
  69. package/dist/commands/dashboard.js.map +1 -0
  70. package/dist/commands/govern.d.ts +70 -0
  71. package/dist/commands/govern.d.ts.map +1 -0
  72. package/dist/commands/govern.js +481 -0
  73. package/dist/commands/govern.js.map +1 -0
  74. package/dist/commands/governance.d.ts +17 -0
  75. package/dist/commands/governance.d.ts.map +1 -0
  76. package/dist/commands/governance.js +703 -0
  77. package/dist/commands/governance.js.map +1 -0
  78. package/dist/commands/guardian.d.ts +20 -0
  79. package/dist/commands/guardian.d.ts.map +1 -0
  80. package/dist/commands/guardian.js +597 -0
  81. package/dist/commands/guardian.js.map +1 -0
  82. package/dist/commands/init.d.ts +59 -0
  83. package/dist/commands/init.d.ts.map +1 -0
  84. package/dist/commands/init.js +650 -0
  85. package/dist/commands/init.js.map +1 -0
  86. package/dist/commands/orchestrator.d.ts +7 -0
  87. package/dist/commands/orchestrator.d.ts.map +1 -0
  88. package/dist/commands/orchestrator.js +578 -0
  89. package/dist/commands/orchestrator.js.map +1 -0
  90. package/dist/commands/performance-optimizer.d.ts +30 -0
  91. package/dist/commands/performance-optimizer.d.ts.map +1 -0
  92. package/dist/commands/performance-optimizer.js +650 -0
  93. package/dist/commands/performance-optimizer.js.map +1 -0
  94. package/dist/commands/plugins.d.ts +87 -0
  95. package/dist/commands/plugins.d.ts.map +1 -0
  96. package/dist/commands/plugins.js +685 -0
  97. package/dist/commands/plugins.js.map +1 -0
  98. package/dist/commands/rag.d.ts +7 -0
  99. package/dist/commands/rag.d.ts.map +1 -0
  100. package/dist/commands/rag.js +751 -0
  101. package/dist/commands/rag.js.map +1 -0
  102. package/dist/commands/session.d.ts +41 -0
  103. package/dist/commands/session.d.ts.map +1 -0
  104. package/dist/commands/session.js +441 -0
  105. package/dist/commands/session.js.map +1 -0
  106. package/dist/commands/setup.d.ts +24 -0
  107. package/dist/commands/setup.d.ts.map +1 -0
  108. package/dist/commands/setup.js +172 -0
  109. package/dist/commands/setup.js.map +1 -0
  110. package/dist/commands/test-init.d.ts +9 -0
  111. package/dist/commands/test-init.d.ts.map +1 -0
  112. package/dist/commands/test-init.js +222 -0
  113. package/dist/commands/test-init.js.map +1 -0
  114. package/dist/commands/test.d.ts +25 -0
  115. package/dist/commands/test.d.ts.map +1 -0
  116. package/dist/commands/test.js +217 -0
  117. package/dist/commands/test.js.map +1 -0
  118. package/dist/commands/watch.d.ts +76 -0
  119. package/dist/commands/watch.d.ts.map +1 -0
  120. package/dist/commands/watch.js +613 -0
  121. package/dist/commands/watch.js.map +1 -0
  122. package/dist/commands/worktree.d.ts +63 -0
  123. package/dist/commands/worktree.d.ts.map +1 -0
  124. package/dist/commands/worktree.js +774 -0
  125. package/dist/commands/worktree.js.map +1 -0
  126. package/dist/context/context-manager.d.ts +155 -0
  127. package/dist/context/context-manager.d.ts.map +1 -0
  128. package/dist/context/context-manager.js +383 -0
  129. package/dist/context/context-manager.js.map +1 -0
  130. package/dist/context/index.d.ts +3 -0
  131. package/dist/context/index.d.ts.map +1 -0
  132. package/dist/context/index.js +6 -0
  133. package/dist/context/index.js.map +1 -0
  134. package/dist/context/session-manager.d.ts +207 -0
  135. package/dist/context/session-manager.d.ts.map +1 -0
  136. package/dist/context/session-manager.js +686 -0
  137. package/dist/context/session-manager.js.map +1 -0
  138. package/dist/framework/command-interface.d.ts +349 -0
  139. package/dist/framework/command-interface.d.ts.map +1 -0
  140. package/dist/framework/command-interface.js +101 -0
  141. package/dist/framework/command-interface.js.map +1 -0
  142. package/dist/framework/command-registry.d.ts +173 -0
  143. package/dist/framework/command-registry.d.ts.map +1 -0
  144. package/dist/framework/command-registry.js +734 -0
  145. package/dist/framework/command-registry.js.map +1 -0
  146. package/dist/framework/completion-exporter.d.ts +79 -0
  147. package/dist/framework/completion-exporter.d.ts.map +1 -0
  148. package/dist/framework/completion-exporter.js +259 -0
  149. package/dist/framework/completion-exporter.js.map +1 -0
  150. package/dist/framework/debug-logger.d.ts +163 -0
  151. package/dist/framework/debug-logger.d.ts.map +1 -0
  152. package/dist/framework/debug-logger.js +373 -0
  153. package/dist/framework/debug-logger.js.map +1 -0
  154. package/dist/framework/error-handler.d.ts +196 -0
  155. package/dist/framework/error-handler.d.ts.map +1 -0
  156. package/dist/framework/error-handler.js +613 -0
  157. package/dist/framework/error-handler.js.map +1 -0
  158. package/dist/framework/help-generator.d.ts +78 -0
  159. package/dist/framework/help-generator.d.ts.map +1 -0
  160. package/dist/framework/help-generator.js +414 -0
  161. package/dist/framework/help-generator.js.map +1 -0
  162. package/dist/framework/index.d.ts +62 -0
  163. package/dist/framework/index.d.ts.map +1 -0
  164. package/dist/framework/index.js +95 -0
  165. package/dist/framework/index.js.map +1 -0
  166. package/dist/framework/interactive-repl.d.ts +138 -0
  167. package/dist/framework/interactive-repl.d.ts.map +1 -0
  168. package/dist/framework/interactive-repl.js +567 -0
  169. package/dist/framework/interactive-repl.js.map +1 -0
  170. package/dist/framework/output-formatter.d.ts +274 -0
  171. package/dist/framework/output-formatter.d.ts.map +1 -0
  172. package/dist/framework/output-formatter.js +545 -0
  173. package/dist/framework/output-formatter.js.map +1 -0
  174. package/dist/framework/progress-manager.d.ts +192 -0
  175. package/dist/framework/progress-manager.d.ts.map +1 -0
  176. package/dist/framework/progress-manager.js +408 -0
  177. package/dist/framework/progress-manager.js.map +1 -0
  178. package/dist/index.d.ts +8 -0
  179. package/dist/index.d.ts.map +1 -0
  180. package/dist/index.js +51 -0
  181. package/dist/index.js.map +1 -0
  182. package/dist/interactive/interactive-mode.d.ts +76 -0
  183. package/dist/interactive/interactive-mode.d.ts.map +1 -0
  184. package/dist/interactive/interactive-mode.js +732 -0
  185. package/dist/interactive/interactive-mode.js.map +1 -0
  186. package/dist/nlp/command-mapper.d.ts +174 -0
  187. package/dist/nlp/command-mapper.d.ts.map +1 -0
  188. package/dist/nlp/command-mapper.js +624 -0
  189. package/dist/nlp/command-mapper.js.map +1 -0
  190. package/dist/nlp/command-parser.d.ts +106 -0
  191. package/dist/nlp/command-parser.d.ts.map +1 -0
  192. package/dist/nlp/command-parser.js +417 -0
  193. package/dist/nlp/command-parser.js.map +1 -0
  194. package/dist/nlp/index.d.ts +5 -0
  195. package/dist/nlp/index.d.ts.map +1 -0
  196. package/dist/nlp/index.js +8 -0
  197. package/dist/nlp/index.js.map +1 -0
  198. package/dist/nlp/intent-classifier.d.ts +59 -0
  199. package/dist/nlp/intent-classifier.d.ts.map +1 -0
  200. package/dist/nlp/intent-classifier.js +384 -0
  201. package/dist/nlp/intent-classifier.js.map +1 -0
  202. package/dist/nlp/intent-parser.d.ts +152 -0
  203. package/dist/nlp/intent-parser.d.ts.map +1 -0
  204. package/dist/nlp/intent-parser.js +746 -0
  205. package/dist/nlp/intent-parser.js.map +1 -0
  206. package/dist/plugins/plugin-manager.d.ts +121 -0
  207. package/dist/plugins/plugin-manager.d.ts.map +1 -0
  208. package/dist/plugins/plugin-manager.js +606 -0
  209. package/dist/plugins/plugin-manager.js.map +1 -0
  210. package/dist/types/index.d.ts +224 -0
  211. package/dist/types/index.d.ts.map +1 -0
  212. package/dist/types/index.js +3 -0
  213. package/dist/types/index.js.map +1 -0
  214. package/dist/utils/backup-rollback-manager.d.ts +72 -0
  215. package/dist/utils/backup-rollback-manager.d.ts.map +1 -0
  216. package/dist/utils/backup-rollback-manager.js +288 -0
  217. package/dist/utils/backup-rollback-manager.js.map +1 -0
  218. package/dist/utils/claude-config-installer.d.ts +98 -0
  219. package/dist/utils/claude-config-installer.d.ts.map +1 -0
  220. package/dist/utils/claude-config-installer.js +678 -0
  221. package/dist/utils/claude-config-installer.js.map +1 -0
  222. package/dist/utils/config-manager.d.ts +73 -0
  223. package/dist/utils/config-manager.d.ts.map +1 -0
  224. package/dist/utils/config-manager.js +339 -0
  225. package/dist/utils/config-manager.js.map +1 -0
  226. package/dist/utils/error-handler.d.ts +46 -0
  227. package/dist/utils/error-handler.d.ts.map +1 -0
  228. package/dist/utils/error-handler.js +169 -0
  229. package/dist/utils/error-handler.js.map +1 -0
  230. package/dist/utils/logger.d.ts +25 -0
  231. package/dist/utils/logger.d.ts.map +1 -0
  232. package/dist/utils/logger.js +105 -0
  233. package/dist/utils/logger.js.map +1 -0
  234. 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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"}