azerclaw 2.1.8 → 2.2.1

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 (261) hide show
  1. package/bin/azerclaw.ts +45 -6
  2. package/bin/opencode.ts +59 -0
  3. package/dist/bin/azerclaw.d.ts +1 -47
  4. package/dist/bin/azerclaw.d.ts.map +1 -1
  5. package/dist/bin/azerclaw.js +94 -55
  6. package/dist/bin/azerclaw.js.map +1 -1
  7. package/dist/bin/opencode.d.ts +14 -0
  8. package/dist/bin/opencode.d.ts.map +1 -0
  9. package/dist/bin/opencode.js +54 -0
  10. package/dist/bin/opencode.js.map +1 -0
  11. package/dist/src/agents/builtin.js +12 -12
  12. package/dist/src/brain/adapters/base.d.ts +33 -0
  13. package/dist/src/brain/adapters/base.d.ts.map +1 -0
  14. package/dist/src/brain/adapters/base.js +11 -0
  15. package/dist/src/brain/adapters/base.js.map +1 -0
  16. package/dist/src/brain/adapters/index.d.ts +11 -0
  17. package/dist/src/brain/adapters/index.d.ts.map +1 -0
  18. package/dist/src/brain/adapters/index.js +37 -0
  19. package/dist/src/brain/adapters/index.js.map +1 -0
  20. package/dist/src/brain/adapters/native.d.ts +15 -0
  21. package/dist/src/brain/adapters/native.d.ts.map +1 -0
  22. package/dist/src/brain/adapters/native.js +25 -0
  23. package/dist/src/brain/adapters/native.js.map +1 -0
  24. package/dist/src/brain/adapters/prompt.d.ts +16 -0
  25. package/dist/src/brain/adapters/prompt.d.ts.map +1 -0
  26. package/dist/src/brain/adapters/prompt.js +91 -0
  27. package/dist/src/brain/adapters/prompt.js.map +1 -0
  28. package/dist/src/brain/hybrid.d.ts +53 -0
  29. package/dist/src/brain/hybrid.d.ts.map +1 -0
  30. package/dist/src/brain/hybrid.js +263 -0
  31. package/dist/src/brain/hybrid.js.map +1 -0
  32. package/dist/src/brain/index.d.ts +8 -0
  33. package/dist/src/brain/index.d.ts.map +1 -0
  34. package/dist/src/brain/index.js +19 -0
  35. package/dist/src/brain/index.js.map +1 -0
  36. package/dist/src/brain/router.d.ts +55 -0
  37. package/dist/src/brain/router.d.ts.map +1 -0
  38. package/dist/src/brain/router.js +174 -0
  39. package/dist/src/brain/router.js.map +1 -0
  40. package/dist/src/channels/adapter.d.ts +6 -0
  41. package/dist/src/channels/adapter.d.ts.map +1 -1
  42. package/dist/src/channels/adapter.js +44 -1
  43. package/dist/src/channels/adapter.js.map +1 -1
  44. package/dist/src/channels/discord.d.ts.map +1 -1
  45. package/dist/src/channels/discord.js +60 -14
  46. package/dist/src/channels/discord.js.map +1 -1
  47. package/dist/src/channels/slack.d.ts +5 -0
  48. package/dist/src/channels/slack.d.ts.map +1 -1
  49. package/dist/src/channels/slack.js +77 -9
  50. package/dist/src/channels/slack.js.map +1 -1
  51. package/dist/src/channels/telegram.d.ts +1 -0
  52. package/dist/src/channels/telegram.d.ts.map +1 -1
  53. package/dist/src/channels/telegram.js +42 -4
  54. package/dist/src/channels/telegram.js.map +1 -1
  55. package/dist/src/channels/webhook.d.ts.map +1 -1
  56. package/dist/src/channels/webhook.js +37 -6
  57. package/dist/src/channels/webhook.js.map +1 -1
  58. package/dist/src/cli/animations/fish.d.ts +9 -0
  59. package/dist/src/cli/animations/fish.d.ts.map +1 -1
  60. package/dist/src/cli/animations/fish.js +64 -80
  61. package/dist/src/cli/animations/fish.js.map +1 -1
  62. package/dist/src/cli/animations/markdown.d.ts.map +1 -1
  63. package/dist/src/cli/animations/markdown.js +23 -4
  64. package/dist/src/cli/animations/markdown.js.map +1 -1
  65. package/dist/src/cli/commands/agents.js +31 -30
  66. package/dist/src/cli/commands/agents.js.map +1 -1
  67. package/dist/src/cli/commands/channels.js +41 -48
  68. package/dist/src/cli/commands/channels.js.map +1 -1
  69. package/dist/src/cli/commands/chat.d.ts +1 -0
  70. package/dist/src/cli/commands/chat.d.ts.map +1 -1
  71. package/dist/src/cli/commands/chat.js +81 -8
  72. package/dist/src/cli/commands/chat.js.map +1 -1
  73. package/dist/src/cli/commands/config.js +0 -1
  74. package/dist/src/cli/commands/config.js.map +1 -1
  75. package/dist/src/cli/commands/doctor.js +42 -40
  76. package/dist/src/cli/commands/doctor.js.map +1 -1
  77. package/dist/src/cli/commands/export.js +6 -6
  78. package/dist/src/cli/commands/export.js.map +1 -1
  79. package/dist/src/cli/commands/mcp.js +7 -7
  80. package/dist/src/cli/commands/mcp.js.map +1 -1
  81. package/dist/src/cli/commands/models.js +0 -1
  82. package/dist/src/cli/commands/models.js.map +1 -1
  83. package/dist/src/cli/commands/onboard.js +0 -55
  84. package/dist/src/cli/commands/onboard.js.map +1 -1
  85. package/dist/src/cli/commands/pairing.js +22 -24
  86. package/dist/src/cli/commands/pairing.js.map +1 -1
  87. package/dist/src/cli/commands/plugins.js +8 -8
  88. package/dist/src/cli/commands/plugins.js.map +1 -1
  89. package/dist/src/cli/commands/run.d.ts +1 -0
  90. package/dist/src/cli/commands/run.d.ts.map +1 -1
  91. package/dist/src/cli/commands/run.js +101 -50
  92. package/dist/src/cli/commands/run.js.map +1 -1
  93. package/dist/src/cli/commands/sandbox.js +27 -32
  94. package/dist/src/cli/commands/sandbox.js.map +1 -1
  95. package/dist/src/cli/commands/settings.js +1 -16
  96. package/dist/src/cli/commands/settings.js.map +1 -1
  97. package/dist/src/cli/commands/share.js +6 -6
  98. package/dist/src/cli/commands/share.js.map +1 -1
  99. package/dist/src/cli/commands/tui.js +0 -1
  100. package/dist/src/cli/commands/tui.js.map +1 -1
  101. package/dist/src/config/hotreload.d.ts +87 -0
  102. package/dist/src/config/hotreload.d.ts.map +1 -0
  103. package/dist/src/config/hotreload.js +497 -0
  104. package/dist/src/config/hotreload.js.map +1 -0
  105. package/dist/src/config/manager.d.ts +4 -2
  106. package/dist/src/config/manager.d.ts.map +1 -1
  107. package/dist/src/config/manager.js +23 -5
  108. package/dist/src/config/manager.js.map +1 -1
  109. package/dist/src/config/schema.d.ts +286 -9
  110. package/dist/src/config/schema.d.ts.map +1 -1
  111. package/dist/src/config/schema.js +71 -7
  112. package/dist/src/config/schema.js.map +1 -1
  113. package/dist/src/core/runtime.d.ts +18 -0
  114. package/dist/src/core/runtime.d.ts.map +1 -1
  115. package/dist/src/core/runtime.js +84 -14
  116. package/dist/src/core/runtime.js.map +1 -1
  117. package/dist/src/core/server.d.ts.map +1 -1
  118. package/dist/src/core/server.js +20 -2
  119. package/dist/src/core/server.js.map +1 -1
  120. package/dist/src/index.d.ts +2 -0
  121. package/dist/src/index.d.ts.map +1 -1
  122. package/dist/src/index.js +6 -0
  123. package/dist/src/index.js.map +1 -1
  124. package/dist/src/interfaces/terminal/dashboard.d.ts +80 -0
  125. package/dist/src/interfaces/terminal/dashboard.d.ts.map +1 -0
  126. package/dist/src/interfaces/terminal/dashboard.js +618 -0
  127. package/dist/src/interfaces/terminal/dashboard.js.map +1 -0
  128. package/dist/src/interfaces/terminal/index.d.ts +46 -0
  129. package/dist/src/interfaces/terminal/index.d.ts.map +1 -0
  130. package/dist/src/interfaces/terminal/index.js +171 -0
  131. package/dist/src/interfaces/terminal/index.js.map +1 -0
  132. package/dist/src/interfaces/terminal/visualizations.d.ts +78 -0
  133. package/dist/src/interfaces/terminal/visualizations.d.ts.map +1 -0
  134. package/dist/src/interfaces/terminal/visualizations.js +540 -0
  135. package/dist/src/interfaces/terminal/visualizations.js.map +1 -0
  136. package/dist/src/interfaces/web/server.d.ts +73 -0
  137. package/dist/src/interfaces/web/server.d.ts.map +1 -0
  138. package/dist/src/interfaces/web/server.js +505 -0
  139. package/dist/src/interfaces/web/server.js.map +1 -0
  140. package/dist/src/mcp-servers/antigravity/index.js +2 -2
  141. package/dist/src/mcp-servers/antigravity/index.js.map +1 -1
  142. package/dist/src/memory/dreaming.d.ts +91 -0
  143. package/dist/src/memory/dreaming.d.ts.map +1 -0
  144. package/dist/src/memory/dreaming.js +582 -0
  145. package/dist/src/memory/dreaming.js.map +1 -0
  146. package/dist/src/memory/index.d.ts +8 -0
  147. package/dist/src/memory/index.d.ts.map +1 -0
  148. package/dist/src/memory/index.js +29 -0
  149. package/dist/src/memory/index.js.map +1 -0
  150. package/dist/src/memory/store.d.ts +13 -0
  151. package/dist/src/memory/store.d.ts.map +1 -1
  152. package/dist/src/memory/store.js +28 -0
  153. package/dist/src/memory/store.js.map +1 -1
  154. package/dist/src/memory/vector.d.ts +94 -0
  155. package/dist/src/memory/vector.d.ts.map +1 -0
  156. package/dist/src/memory/vector.js +457 -0
  157. package/dist/src/memory/vector.js.map +1 -0
  158. package/dist/src/networking/analyzer.d.ts +189 -0
  159. package/dist/src/networking/analyzer.d.ts.map +1 -0
  160. package/dist/src/networking/analyzer.js +604 -0
  161. package/dist/src/networking/analyzer.js.map +1 -0
  162. package/dist/src/plugins/bundled/context-engine/index.d.ts +8 -0
  163. package/dist/src/plugins/bundled/context-engine/index.d.ts.map +1 -0
  164. package/dist/src/plugins/bundled/context-engine/index.js +353 -0
  165. package/dist/src/plugins/bundled/context-engine/index.js.map +1 -0
  166. package/dist/src/plugins/bundled/observability/index.d.ts +64 -0
  167. package/dist/src/plugins/bundled/observability/index.d.ts.map +1 -0
  168. package/dist/src/plugins/bundled/observability/index.js +441 -0
  169. package/dist/src/plugins/bundled/observability/index.js.map +1 -0
  170. package/dist/src/plugins/index.d.ts +15 -0
  171. package/dist/src/plugins/index.d.ts.map +1 -0
  172. package/dist/src/plugins/index.js +117 -0
  173. package/dist/src/plugins/index.js.map +1 -0
  174. package/dist/src/plugins/loader.d.ts +19 -0
  175. package/dist/src/plugins/loader.d.ts.map +1 -0
  176. package/dist/src/plugins/loader.js +333 -0
  177. package/dist/src/plugins/loader.js.map +1 -0
  178. package/dist/src/plugins/manager.d.ts +32 -0
  179. package/dist/src/plugins/manager.d.ts.map +1 -0
  180. package/dist/src/plugins/manager.js +410 -0
  181. package/dist/src/plugins/manager.js.map +1 -0
  182. package/dist/src/plugins/registry.d.ts +50 -0
  183. package/dist/src/plugins/registry.d.ts.map +1 -0
  184. package/dist/src/plugins/registry.js +285 -0
  185. package/dist/src/plugins/registry.js.map +1 -0
  186. package/dist/src/plugins/types.d.ts +165 -0
  187. package/dist/src/plugins/types.d.ts.map +1 -0
  188. package/dist/src/plugins/types.js +7 -0
  189. package/dist/src/plugins/types.js.map +1 -0
  190. package/dist/src/providers/base.d.ts +5 -0
  191. package/dist/src/providers/base.d.ts.map +1 -1
  192. package/dist/src/providers/base.js.map +1 -1
  193. package/dist/src/providers/huggingface.d.ts +27 -0
  194. package/dist/src/providers/huggingface.d.ts.map +1 -0
  195. package/dist/src/providers/huggingface.js +140 -0
  196. package/dist/src/providers/huggingface.js.map +1 -0
  197. package/dist/src/providers/kiloauto.d.ts +29 -0
  198. package/dist/src/providers/kiloauto.d.ts.map +1 -0
  199. package/dist/src/providers/kiloauto.js +242 -0
  200. package/dist/src/providers/kiloauto.js.map +1 -0
  201. package/dist/src/providers/localllama.d.ts +26 -0
  202. package/dist/src/providers/localllama.d.ts.map +1 -0
  203. package/dist/src/providers/localllama.js +192 -0
  204. package/dist/src/providers/localllama.js.map +1 -0
  205. package/dist/src/providers/openai.d.ts.map +1 -1
  206. package/dist/src/providers/openai.js +9 -1
  207. package/dist/src/providers/openai.js.map +1 -1
  208. package/dist/src/providers/router.d.ts.map +1 -1
  209. package/dist/src/providers/router.js +41 -5
  210. package/dist/src/providers/router.js.map +1 -1
  211. package/dist/src/scheduler/heartbeat.d.ts.map +1 -1
  212. package/dist/src/scheduler/heartbeat.js +23 -1
  213. package/dist/src/scheduler/heartbeat.js.map +1 -1
  214. package/dist/src/security/privacy.d.ts +199 -0
  215. package/dist/src/security/privacy.d.ts.map +1 -0
  216. package/dist/src/security/privacy.js +600 -0
  217. package/dist/src/security/privacy.js.map +1 -0
  218. package/dist/src/server/hq.d.ts.map +1 -1
  219. package/dist/src/server/hq.js +56 -4
  220. package/dist/src/server/hq.js.map +1 -1
  221. package/dist/src/skills/loader.d.ts.map +1 -1
  222. package/dist/src/skills/loader.js +13 -3
  223. package/dist/src/skills/loader.js.map +1 -1
  224. package/dist/src/tools/advanced.d.ts.map +1 -1
  225. package/dist/src/tools/advanced.js +73 -18
  226. package/dist/src/tools/advanced.js.map +1 -1
  227. package/dist/src/tools/filesystem.d.ts.map +1 -1
  228. package/dist/src/tools/filesystem.js +110 -7
  229. package/dist/src/tools/filesystem.js.map +1 -1
  230. package/dist/src/tools/index_memory.d.ts.map +1 -1
  231. package/dist/src/tools/index_memory.js +13 -6
  232. package/dist/src/tools/index_memory.js.map +1 -1
  233. package/dist/src/tools/loader.d.ts.map +1 -1
  234. package/dist/src/tools/loader.js +4 -2
  235. package/dist/src/tools/loader.js.map +1 -1
  236. package/dist/src/tools/registry.d.ts +6 -0
  237. package/dist/src/tools/registry.d.ts.map +1 -1
  238. package/dist/src/tools/registry.js +51 -12
  239. package/dist/src/tools/registry.js.map +1 -1
  240. package/dist/src/tools/shell.d.ts.map +1 -1
  241. package/dist/src/tools/shell.js +2 -0
  242. package/dist/src/tools/shell.js.map +1 -1
  243. package/dist/src/tools/specialized.d.ts.map +1 -1
  244. package/dist/src/tools/specialized.js +52 -12
  245. package/dist/src/tools/specialized.js.map +1 -1
  246. package/dist/src/workflow/engine.d.ts.map +1 -1
  247. package/dist/src/workflow/engine.js +43 -13
  248. package/dist/src/workflow/engine.js.map +1 -1
  249. package/dist/src/workflow/lobster.d.ts +138 -0
  250. package/dist/src/workflow/lobster.d.ts.map +1 -0
  251. package/dist/src/workflow/lobster.js +620 -0
  252. package/dist/src/workflow/lobster.js.map +1 -0
  253. package/dist/src/workspace/heartbeat.d.ts +122 -0
  254. package/dist/src/workspace/heartbeat.d.ts.map +1 -0
  255. package/dist/src/workspace/heartbeat.js +624 -0
  256. package/dist/src/workspace/heartbeat.js.map +1 -0
  257. package/dist/src/workspace/index.d.ts +29 -0
  258. package/dist/src/workspace/index.d.ts.map +1 -0
  259. package/dist/src/workspace/index.js +97 -0
  260. package/dist/src/workspace/index.js.map +1 -0
  261. package/package.json +4 -3
@@ -0,0 +1,410 @@
1
+ "use strict";
2
+ /**
3
+ * 🐟 AZERCLAW Plugin Manager
4
+ * Manages plugin lifecycle, discovery, and security
5
+ */
6
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
7
+ if (k2 === undefined) k2 = k;
8
+ var desc = Object.getOwnPropertyDescriptor(m, k);
9
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
10
+ desc = { enumerable: true, get: function() { return m[k]; } };
11
+ }
12
+ Object.defineProperty(o, k2, desc);
13
+ }) : (function(o, m, k, k2) {
14
+ if (k2 === undefined) k2 = k;
15
+ o[k2] = m[k];
16
+ }));
17
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
18
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
19
+ }) : function(o, v) {
20
+ o["default"] = v;
21
+ });
22
+ var __importStar = (this && this.__importStar) || (function () {
23
+ var ownKeys = function(o) {
24
+ ownKeys = Object.getOwnPropertyNames || function (o) {
25
+ var ar = [];
26
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
27
+ return ar;
28
+ };
29
+ return ownKeys(o);
30
+ };
31
+ return function (mod) {
32
+ if (mod && mod.__esModule) return mod;
33
+ var result = {};
34
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
35
+ __setModuleDefault(result, mod);
36
+ return result;
37
+ };
38
+ })();
39
+ Object.defineProperty(exports, "__esModule", { value: true });
40
+ exports.PluginManager = void 0;
41
+ const fs = __importStar(require("fs"));
42
+ const path = __importStar(require("path"));
43
+ const os = __importStar(require("os"));
44
+ const events_1 = require("events");
45
+ // ─── Plugin Manager Implementation ──────────────────────────────────────
46
+ class PluginManager extends events_1.EventEmitter {
47
+ plugins = new Map();
48
+ pluginConfigs = new Map();
49
+ globalConfig;
50
+ azerclawHome;
51
+ pluginDir;
52
+ constructor() {
53
+ super();
54
+ this.azerclawHome = path.join(os.homedir(), '.azerclaw');
55
+ this.pluginDir = path.join(this.azerclawHome, 'plugins');
56
+ this.globalConfig = this.loadGlobalConfig();
57
+ this.ensureDirectories();
58
+ }
59
+ // ─── Plugin Lifecycle ────────────────────────────────────────────────
60
+ async loadPlugin(pluginPath) {
61
+ const pluginId = path.basename(pluginPath);
62
+ // Check if already loaded
63
+ if (this.plugins.has(pluginId)) {
64
+ throw new Error(`Plugin ${pluginId} is already loaded`);
65
+ }
66
+ try {
67
+ // Load plugin module
68
+ const pluginModule = require(pluginPath);
69
+ const plugin = pluginModule.default || pluginModule;
70
+ // Validate plugin
71
+ this.validatePlugin(plugin);
72
+ // Create plugin context
73
+ const context = this.createPluginContext(pluginId);
74
+ // Initialize plugin
75
+ if (plugin.initialize) {
76
+ await plugin.initialize(context);
77
+ }
78
+ // Register plugin tools
79
+ if (plugin.tools) {
80
+ for (const tool of plugin.tools) {
81
+ // Will be handled by extended ToolRegistry
82
+ this.emit('tool-register', { pluginId, tool });
83
+ }
84
+ }
85
+ const loadedPlugin = {
86
+ id: pluginId,
87
+ plugin,
88
+ path: pluginPath,
89
+ status: 'loaded',
90
+ loadedAt: new Date()
91
+ };
92
+ this.plugins.set(pluginId, loadedPlugin);
93
+ this.emit('plugin-loaded', loadedPlugin);
94
+ return loadedPlugin;
95
+ }
96
+ catch (error) {
97
+ const loadedPlugin = {
98
+ id: pluginId,
99
+ plugin: null,
100
+ path: pluginPath,
101
+ status: 'error',
102
+ loadedAt: new Date(),
103
+ error: error
104
+ };
105
+ this.plugins.set(pluginId, loadedPlugin);
106
+ this.emit('plugin-error', loadedPlugin);
107
+ throw error;
108
+ }
109
+ }
110
+ async unloadPlugin(pluginId) {
111
+ const loadedPlugin = this.plugins.get(pluginId);
112
+ if (!loadedPlugin) {
113
+ throw new Error(`Plugin ${pluginId} is not loaded`);
114
+ }
115
+ try {
116
+ // Deactivate if active
117
+ if (loadedPlugin.status === 'active') {
118
+ await this.deactivatePlugin(pluginId);
119
+ }
120
+ // Cleanup plugin
121
+ if (loadedPlugin.plugin.cleanup) {
122
+ const context = this.createPluginContext(pluginId);
123
+ await loadedPlugin.plugin.cleanup(context);
124
+ }
125
+ // Unregister tools
126
+ if (loadedPlugin.plugin.tools) {
127
+ for (const tool of loadedPlugin.plugin.tools) {
128
+ this.emit('tool-unregister', { pluginId, toolName: tool.name });
129
+ }
130
+ }
131
+ // Remove from cache
132
+ delete require.cache[require.resolve(loadedPlugin.path)];
133
+ this.plugins.delete(pluginId);
134
+ this.emit('plugin-unloaded', { pluginId });
135
+ }
136
+ catch (error) {
137
+ this.emit('plugin-error', { pluginId, error });
138
+ throw error;
139
+ }
140
+ }
141
+ async activatePlugin(pluginId) {
142
+ const loadedPlugin = this.plugins.get(pluginId);
143
+ if (!loadedPlugin) {
144
+ throw new Error(`Plugin ${pluginId} is not loaded`);
145
+ }
146
+ if (loadedPlugin.status === 'active') {
147
+ return; // Already active
148
+ }
149
+ try {
150
+ const context = this.createPluginContext(pluginId);
151
+ // Activate plugin
152
+ if (loadedPlugin.plugin.activate) {
153
+ await loadedPlugin.plugin.activate(context);
154
+ }
155
+ loadedPlugin.status = 'active';
156
+ loadedPlugin.activatedAt = new Date();
157
+ this.emit('plugin-activated', loadedPlugin);
158
+ }
159
+ catch (error) {
160
+ loadedPlugin.status = 'error';
161
+ loadedPlugin.error = error;
162
+ this.emit('plugin-error', loadedPlugin);
163
+ throw error;
164
+ }
165
+ }
166
+ async deactivatePlugin(pluginId) {
167
+ const loadedPlugin = this.plugins.get(pluginId);
168
+ if (!loadedPlugin) {
169
+ throw new Error(`Plugin ${pluginId} is not loaded`);
170
+ }
171
+ if (loadedPlugin.status !== 'active') {
172
+ return; // Not active
173
+ }
174
+ try {
175
+ const context = this.createPluginContext(pluginId);
176
+ // Deactivate plugin
177
+ if (loadedPlugin.plugin.deactivate) {
178
+ await loadedPlugin.plugin.deactivate(context);
179
+ }
180
+ loadedPlugin.status = 'inactive';
181
+ delete loadedPlugin.activatedAt;
182
+ this.emit('plugin-deactivated', loadedPlugin);
183
+ }
184
+ catch (error) {
185
+ loadedPlugin.status = 'error';
186
+ loadedPlugin.error = error;
187
+ this.emit('plugin-error', loadedPlugin);
188
+ throw error;
189
+ }
190
+ }
191
+ // ─── Plugin Discovery ───────────────────────────────────────────────
192
+ async discoverPlugins() {
193
+ const pluginPaths = [];
194
+ const isTsSupported = require.extensions['.ts'] !== undefined ||
195
+ process.execArgv.some(arg => arg.includes('ts-node') || arg.includes('tsx') || arg.includes('register'));
196
+ // Discover from plugin directory
197
+ if (fs.existsSync(this.pluginDir)) {
198
+ const entries = fs.readdirSync(this.pluginDir, { withFileTypes: true });
199
+ for (const entry of entries) {
200
+ if (entry.isDirectory()) {
201
+ const pluginPath = path.join(this.pluginDir, entry.name);
202
+ const packageJsonPath = path.join(pluginPath, 'package.json');
203
+ const indexPath = path.join(pluginPath, 'index.js');
204
+ const tsIndexPath = path.join(pluginPath, 'index.ts');
205
+ // Check if it's a valid plugin
206
+ if (fs.existsSync(packageJsonPath)) {
207
+ if (fs.existsSync(indexPath)) {
208
+ pluginPaths.push(indexPath);
209
+ }
210
+ else if (fs.existsSync(tsIndexPath) && isTsSupported) {
211
+ pluginPaths.push(tsIndexPath);
212
+ }
213
+ }
214
+ }
215
+ else if (entry.name.endsWith('.js')) {
216
+ pluginPaths.push(path.join(this.pluginDir, entry.name));
217
+ }
218
+ else if (entry.name.endsWith('.ts') && isTsSupported) {
219
+ pluginPaths.push(path.join(this.pluginDir, entry.name));
220
+ }
221
+ }
222
+ }
223
+ // Discover from workspace
224
+ const workspaceDir = process.cwd();
225
+ const workspacePluginDir = path.join(workspaceDir, '.azerclaw', 'plugins');
226
+ if (fs.existsSync(workspacePluginDir)) {
227
+ const entries = fs.readdirSync(workspacePluginDir, { withFileTypes: true });
228
+ for (const entry of entries) {
229
+ if (entry.name.endsWith('.js')) {
230
+ pluginPaths.push(path.join(workspacePluginDir, entry.name));
231
+ }
232
+ else if (entry.name.endsWith('.ts') && isTsSupported) {
233
+ pluginPaths.push(path.join(workspacePluginDir, entry.name));
234
+ }
235
+ }
236
+ }
237
+ return pluginPaths;
238
+ }
239
+ async reloadPlugins() {
240
+ // Unload all plugins
241
+ const pluginIds = Array.from(this.plugins.keys());
242
+ for (const pluginId of pluginIds) {
243
+ try {
244
+ await this.unloadPlugin(pluginId);
245
+ }
246
+ catch (error) {
247
+ console.error(`Error unloading plugin ${pluginId}:`, error);
248
+ }
249
+ }
250
+ // Discover and load plugins
251
+ if (this.globalConfig.autoLoad) {
252
+ const pluginPaths = await this.discoverPlugins();
253
+ for (const pluginPath of pluginPaths) {
254
+ try {
255
+ await this.loadPlugin(pluginPath);
256
+ }
257
+ catch (error) {
258
+ console.error(`Error loading plugin ${pluginPath}:`, error);
259
+ }
260
+ }
261
+ }
262
+ }
263
+ // ─── Plugin Information ───────────────────────────────────────────────
264
+ async listPlugins() {
265
+ return Array.from(this.plugins.values());
266
+ }
267
+ async getPlugin(pluginId) {
268
+ return this.plugins.get(pluginId) || null;
269
+ }
270
+ getPluginCount() {
271
+ return this.plugins.size;
272
+ }
273
+ async getPluginHealth(pluginId) {
274
+ const loadedPlugin = this.plugins.get(pluginId);
275
+ if (!loadedPlugin) {
276
+ return null;
277
+ }
278
+ if (loadedPlugin.plugin.healthCheck) {
279
+ try {
280
+ const health = await loadedPlugin.plugin.healthCheck();
281
+ loadedPlugin.health = health;
282
+ return health;
283
+ }
284
+ catch (error) {
285
+ return {
286
+ status: 'unhealthy',
287
+ message: `Health check failed: ${error.message}`,
288
+ lastCheck: new Date()
289
+ };
290
+ }
291
+ }
292
+ // Default health based on status
293
+ return {
294
+ status: loadedPlugin.status === 'active' ? 'healthy' : 'degraded',
295
+ message: `Plugin status: ${loadedPlugin.status}`,
296
+ lastCheck: new Date()
297
+ };
298
+ }
299
+ // ─── Plugin Operations ───────────────────────────────────────────────
300
+ async installPlugin(source) {
301
+ // This would implement plugin installation from npm, git, or local file
302
+ // For now, return a placeholder
303
+ throw new Error('Plugin installation not yet implemented');
304
+ }
305
+ async uninstallPlugin(pluginId) {
306
+ await this.unloadPlugin(pluginId);
307
+ // Remove plugin files
308
+ throw new Error('Plugin uninstallation not yet implemented');
309
+ }
310
+ async updatePlugin(pluginId) {
311
+ throw new Error('Plugin updates not yet implemented');
312
+ }
313
+ // ─── Private Methods ─────────────────────────────────────────────────
314
+ validatePlugin(plugin) {
315
+ if (!plugin.metadata) {
316
+ throw new Error('Plugin must have metadata');
317
+ }
318
+ const { metadata } = plugin;
319
+ if (!metadata.name || !metadata.version || !metadata.capabilities) {
320
+ throw new Error('Plugin metadata must include name, version, and capabilities');
321
+ }
322
+ // Validate capabilities
323
+ for (const capability of metadata.capabilities) {
324
+ if (!capability.type || !capability.name) {
325
+ throw new Error('Each capability must have type and name');
326
+ }
327
+ }
328
+ }
329
+ createPluginContext(pluginId) {
330
+ return {
331
+ pluginId,
332
+ azerclawHome: this.azerclawHome,
333
+ configDir: path.join(this.azerclawHome, 'config'),
334
+ dataDir: path.join(this.azerclawHome, 'data'),
335
+ tempDir: path.join(this.azerclawHome, 'tmp'),
336
+ workspaceDir: process.cwd(),
337
+ logger: {
338
+ debug: (msg, ...args) => console.debug(`[Plugin:${pluginId}] ${msg}`, ...args),
339
+ info: (msg, ...args) => console.info(`[Plugin:${pluginId}] ${msg}`, ...args),
340
+ warn: (msg, ...args) => console.warn(`[Plugin:${pluginId}] ${msg}`, ...args),
341
+ error: (msg, ...args) => console.error(`[Plugin:${pluginId}] ${msg}`, ...args),
342
+ },
343
+ events: new events_1.EventEmitter(),
344
+ storage: {
345
+ get: async (key) => {
346
+ // Implement plugin storage
347
+ return null;
348
+ },
349
+ set: async (key, value) => {
350
+ // Implement plugin storage
351
+ },
352
+ delete: async (key) => {
353
+ // Implement plugin storage
354
+ },
355
+ clear: async () => {
356
+ // Implement plugin storage
357
+ },
358
+ list: async () => {
359
+ // Implement plugin storage
360
+ return [];
361
+ }
362
+ },
363
+ // Services will be injected by the main application
364
+ toolRegistry: null,
365
+ configManager: null,
366
+ memoryStore: null
367
+ };
368
+ }
369
+ loadGlobalConfig() {
370
+ const configPath = path.join(this.azerclawHome, 'plugins.json');
371
+ if (fs.existsSync(configPath)) {
372
+ try {
373
+ return JSON.parse(fs.readFileSync(configPath, 'utf-8'));
374
+ }
375
+ catch (error) {
376
+ console.warn('Invalid plugin config, using defaults');
377
+ }
378
+ }
379
+ return {
380
+ pluginDir: this.pluginDir,
381
+ autoLoad: true,
382
+ sandboxDefault: true,
383
+ permissions: {
384
+ default: [],
385
+ restricted: []
386
+ },
387
+ security: {
388
+ verifySignature: false,
389
+ allowUnsigned: true,
390
+ trustedSources: []
391
+ }
392
+ };
393
+ }
394
+ ensureDirectories() {
395
+ const dirs = [
396
+ this.azerclawHome,
397
+ this.pluginDir,
398
+ path.join(this.azerclawHome, 'config'),
399
+ path.join(this.azerclawHome, 'data'),
400
+ path.join(this.azerclawHome, 'tmp')
401
+ ];
402
+ for (const dir of dirs) {
403
+ if (!fs.existsSync(dir)) {
404
+ fs.mkdirSync(dir, { recursive: true, mode: 0o700 });
405
+ }
406
+ }
407
+ }
408
+ }
409
+ exports.PluginManager = PluginManager;
410
+ //# sourceMappingURL=manager.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"manager.js","sourceRoot":"","sources":["../../../src/plugins/manager.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,50 @@
1
+ /**
2
+ * 🐟 AZERCLAW Plugin Registry
3
+ * Integrates plugins with the existing tool registry and manages plugin capabilities
4
+ */
5
+ import { EventEmitter } from 'events';
6
+ import { Tool, ToolRegistry } from '../tools/registry';
7
+ import { LoadedPlugin, PluginCapability, PluginRegistry as IPluginRegistry } from './types';
8
+ export declare class PluginRegistry extends EventEmitter implements IPluginRegistry {
9
+ private toolRegistry;
10
+ private plugins;
11
+ private pluginTools;
12
+ private toolPlugins;
13
+ private capabilities;
14
+ constructor(toolRegistry: ToolRegistry);
15
+ registerPlugin(plugin: LoadedPlugin): void;
16
+ unregisterPlugin(pluginId: string): void;
17
+ registerTool(pluginId: string, tool: Tool): void;
18
+ unregisterTool(pluginId: string, toolName: string): void;
19
+ getToolsByPlugin(pluginId: string): Tool[];
20
+ getPluginByTool(toolName: string): LoadedPlugin | null;
21
+ registerProvider(pluginId: string, provider: any): void;
22
+ unregisterProvider(pluginId: string, providerName: string): void;
23
+ registerWorkflow(pluginId: string, workflow: any): void;
24
+ unregisterWorkflow(pluginId: string, workflowName: string): void;
25
+ getPluginsByCapability(capability: string): LoadedPlugin[];
26
+ hasCapability(pluginId: string, capability: string): boolean;
27
+ getCapabilitiesByPlugin(pluginId: string): PluginCapability[];
28
+ getPlugin(pluginId: string): LoadedPlugin | null;
29
+ getAllPlugins(): LoadedPlugin[];
30
+ getPluginCount(): number;
31
+ getToolCount(): number;
32
+ searchPlugins(query: string): LoadedPlugin[];
33
+ searchTools(query: string): {
34
+ tool: Tool;
35
+ plugin: LoadedPlugin;
36
+ }[];
37
+ getPluginStats(): {
38
+ total: number;
39
+ active: number;
40
+ inactive: number;
41
+ error: number;
42
+ byCapability: Record<string, number>;
43
+ totalTools: number;
44
+ };
45
+ getPluginDependencies(pluginId: string): string[];
46
+ getPluginDependents(pluginId: string): LoadedPlugin[];
47
+ canUnloadPlugin(pluginId: string): boolean;
48
+ cleanup(): void;
49
+ }
50
+ //# sourceMappingURL=registry.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../../src/plugins/registry.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AACtC,OAAO,EAAE,IAAI,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACvD,OAAO,EAAE,YAAY,EAAU,gBAAgB,EAAE,cAAc,IAAI,eAAe,EAAE,MAAM,SAAS,CAAC;AAIpG,qBAAa,cAAe,SAAQ,YAAa,YAAW,eAAe;IACzE,OAAO,CAAC,YAAY,CAAe;IACnC,OAAO,CAAC,OAAO,CAAmC;IAClD,OAAO,CAAC,WAAW,CAA6B;IAChD,OAAO,CAAC,WAAW,CAA6B;IAChD,OAAO,CAAC,YAAY,CAAkC;gBAE1C,YAAY,EAAE,YAAY;IAOtC,cAAc,CAAC,MAAM,EAAE,YAAY,GAAG,IAAI;IAwB1C,gBAAgB,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI;IAiCxC,YAAY,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,GAAG,IAAI;IAkBhD,cAAc,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,IAAI;IAqBxD,gBAAgB,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,EAAE;IAI1C,eAAe,CAAC,QAAQ,EAAE,MAAM,GAAG,YAAY,GAAG,IAAI;IAUtD,gBAAgB,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,GAAG,GAAG,IAAI;IAUvD,kBAAkB,CAAC,QAAQ,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,GAAG,IAAI;IAUhE,gBAAgB,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,GAAG,GAAG,IAAI;IASvD,kBAAkB,CAAC,QAAQ,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,GAAG,IAAI;IAUhE,sBAAsB,CAAC,UAAU,EAAE,MAAM,GAAG,YAAY,EAAE;IAW1D,aAAa,CAAC,QAAQ,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO;IAW5D,uBAAuB,CAAC,QAAQ,EAAE,MAAM,GAAG,gBAAgB,EAAE;IAW7D,SAAS,CAAC,QAAQ,EAAE,MAAM,GAAG,YAAY,GAAG,IAAI;IAIhD,aAAa,IAAI,YAAY,EAAE;IAI/B,cAAc,IAAI,MAAM;IAIxB,YAAY,IAAI,MAAM;IAMtB,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,YAAY,EAAE;IAc5C,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG;QAAE,IAAI,EAAE,IAAI,CAAC;QAAC,MAAM,EAAE,YAAY,CAAA;KAAE,EAAE;IAqBlE,cAAc,IAAI;QAChB,KAAK,EAAE,MAAM,CAAC;QACd,MAAM,EAAE,MAAM,CAAC;QACf,QAAQ,EAAE,MAAM,CAAC;QACjB,KAAK,EAAE,MAAM,CAAC;QACd,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QACrC,UAAU,EAAE,MAAM,CAAC;KACpB;IA0CD,qBAAqB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,EAAE;IAYjD,mBAAmB,CAAC,QAAQ,EAAE,MAAM,GAAG,YAAY,EAAE;IAmBrD,eAAe,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO;IAO1C,OAAO,IAAI,IAAI;CAehB"}