azerclaw 2.1.9 → 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.
- package/bin/azerclaw.ts +45 -6
- package/bin/opencode.ts +1 -1
- package/dist/bin/azerclaw.d.ts +1 -47
- package/dist/bin/azerclaw.d.ts.map +1 -1
- package/dist/bin/azerclaw.js +94 -55
- package/dist/bin/azerclaw.js.map +1 -1
- package/dist/bin/opencode.js +1 -1
- package/dist/src/agents/builtin.js +12 -12
- package/dist/src/brain/adapters/base.d.ts +33 -0
- package/dist/src/brain/adapters/base.d.ts.map +1 -0
- package/dist/src/brain/adapters/base.js +11 -0
- package/dist/src/brain/adapters/base.js.map +1 -0
- package/dist/src/brain/adapters/index.d.ts +11 -0
- package/dist/src/brain/adapters/index.d.ts.map +1 -0
- package/dist/src/brain/adapters/index.js +37 -0
- package/dist/src/brain/adapters/index.js.map +1 -0
- package/dist/src/brain/adapters/native.d.ts +15 -0
- package/dist/src/brain/adapters/native.d.ts.map +1 -0
- package/dist/src/brain/adapters/native.js +25 -0
- package/dist/src/brain/adapters/native.js.map +1 -0
- package/dist/src/brain/adapters/prompt.d.ts +16 -0
- package/dist/src/brain/adapters/prompt.d.ts.map +1 -0
- package/dist/src/brain/adapters/prompt.js +91 -0
- package/dist/src/brain/adapters/prompt.js.map +1 -0
- package/dist/src/brain/hybrid.d.ts +53 -0
- package/dist/src/brain/hybrid.d.ts.map +1 -0
- package/dist/src/brain/hybrid.js +263 -0
- package/dist/src/brain/hybrid.js.map +1 -0
- package/dist/src/brain/index.d.ts +8 -0
- package/dist/src/brain/index.d.ts.map +1 -0
- package/dist/src/brain/index.js +19 -0
- package/dist/src/brain/index.js.map +1 -0
- package/dist/src/brain/router.d.ts +55 -0
- package/dist/src/brain/router.d.ts.map +1 -0
- package/dist/src/brain/router.js +174 -0
- package/dist/src/brain/router.js.map +1 -0
- package/dist/src/channels/adapter.d.ts +6 -0
- package/dist/src/channels/adapter.d.ts.map +1 -1
- package/dist/src/channels/adapter.js +44 -1
- package/dist/src/channels/adapter.js.map +1 -1
- package/dist/src/channels/discord.d.ts.map +1 -1
- package/dist/src/channels/discord.js +60 -14
- package/dist/src/channels/discord.js.map +1 -1
- package/dist/src/channels/slack.d.ts +5 -0
- package/dist/src/channels/slack.d.ts.map +1 -1
- package/dist/src/channels/slack.js +77 -9
- package/dist/src/channels/slack.js.map +1 -1
- package/dist/src/channels/telegram.d.ts +1 -0
- package/dist/src/channels/telegram.d.ts.map +1 -1
- package/dist/src/channels/telegram.js +42 -4
- package/dist/src/channels/telegram.js.map +1 -1
- package/dist/src/channels/webhook.d.ts.map +1 -1
- package/dist/src/channels/webhook.js +37 -6
- package/dist/src/channels/webhook.js.map +1 -1
- package/dist/src/cli/animations/fish.d.ts +9 -0
- package/dist/src/cli/animations/fish.d.ts.map +1 -1
- package/dist/src/cli/animations/fish.js +64 -80
- package/dist/src/cli/animations/fish.js.map +1 -1
- package/dist/src/cli/animations/markdown.d.ts.map +1 -1
- package/dist/src/cli/animations/markdown.js +0 -1
- package/dist/src/cli/animations/markdown.js.map +1 -1
- package/dist/src/cli/commands/agents.js +31 -30
- package/dist/src/cli/commands/agents.js.map +1 -1
- package/dist/src/cli/commands/channels.js +41 -48
- package/dist/src/cli/commands/channels.js.map +1 -1
- package/dist/src/cli/commands/chat.d.ts +1 -0
- package/dist/src/cli/commands/chat.d.ts.map +1 -1
- package/dist/src/cli/commands/chat.js +81 -8
- package/dist/src/cli/commands/chat.js.map +1 -1
- package/dist/src/cli/commands/config.js +0 -1
- package/dist/src/cli/commands/config.js.map +1 -1
- package/dist/src/cli/commands/doctor.js +42 -40
- package/dist/src/cli/commands/doctor.js.map +1 -1
- package/dist/src/cli/commands/export.js +6 -6
- package/dist/src/cli/commands/export.js.map +1 -1
- package/dist/src/cli/commands/mcp.js +7 -7
- package/dist/src/cli/commands/mcp.js.map +1 -1
- package/dist/src/cli/commands/models.js +0 -1
- package/dist/src/cli/commands/models.js.map +1 -1
- package/dist/src/cli/commands/onboard.js +0 -55
- package/dist/src/cli/commands/onboard.js.map +1 -1
- package/dist/src/cli/commands/pairing.js +22 -24
- package/dist/src/cli/commands/pairing.js.map +1 -1
- package/dist/src/cli/commands/plugins.js +8 -8
- package/dist/src/cli/commands/plugins.js.map +1 -1
- package/dist/src/cli/commands/run.d.ts +1 -0
- package/dist/src/cli/commands/run.d.ts.map +1 -1
- package/dist/src/cli/commands/run.js +101 -50
- package/dist/src/cli/commands/run.js.map +1 -1
- package/dist/src/cli/commands/sandbox.js +27 -32
- package/dist/src/cli/commands/sandbox.js.map +1 -1
- package/dist/src/cli/commands/settings.js +1 -16
- package/dist/src/cli/commands/settings.js.map +1 -1
- package/dist/src/cli/commands/share.js +6 -6
- package/dist/src/cli/commands/share.js.map +1 -1
- package/dist/src/cli/commands/tui.js +0 -1
- package/dist/src/cli/commands/tui.js.map +1 -1
- package/dist/src/config/hotreload.d.ts +87 -0
- package/dist/src/config/hotreload.d.ts.map +1 -0
- package/dist/src/config/hotreload.js +497 -0
- package/dist/src/config/hotreload.js.map +1 -0
- package/dist/src/config/manager.d.ts +4 -2
- package/dist/src/config/manager.d.ts.map +1 -1
- package/dist/src/config/manager.js +23 -5
- package/dist/src/config/manager.js.map +1 -1
- package/dist/src/config/schema.d.ts +286 -9
- package/dist/src/config/schema.d.ts.map +1 -1
- package/dist/src/config/schema.js +71 -7
- package/dist/src/config/schema.js.map +1 -1
- package/dist/src/core/runtime.d.ts +18 -0
- package/dist/src/core/runtime.d.ts.map +1 -1
- package/dist/src/core/runtime.js +82 -12
- package/dist/src/core/runtime.js.map +1 -1
- package/dist/src/core/server.d.ts.map +1 -1
- package/dist/src/core/server.js +18 -2
- package/dist/src/core/server.js.map +1 -1
- package/dist/src/index.d.ts +2 -0
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js +6 -0
- package/dist/src/index.js.map +1 -1
- package/dist/src/interfaces/terminal/dashboard.d.ts +80 -0
- package/dist/src/interfaces/terminal/dashboard.d.ts.map +1 -0
- package/dist/src/interfaces/terminal/dashboard.js +618 -0
- package/dist/src/interfaces/terminal/dashboard.js.map +1 -0
- package/dist/src/interfaces/terminal/index.d.ts +46 -0
- package/dist/src/interfaces/terminal/index.d.ts.map +1 -0
- package/dist/src/interfaces/terminal/index.js +171 -0
- package/dist/src/interfaces/terminal/index.js.map +1 -0
- package/dist/src/interfaces/terminal/visualizations.d.ts +78 -0
- package/dist/src/interfaces/terminal/visualizations.d.ts.map +1 -0
- package/dist/src/interfaces/terminal/visualizations.js +540 -0
- package/dist/src/interfaces/terminal/visualizations.js.map +1 -0
- package/dist/src/interfaces/web/server.d.ts +73 -0
- package/dist/src/interfaces/web/server.d.ts.map +1 -0
- package/dist/src/interfaces/web/server.js +505 -0
- package/dist/src/interfaces/web/server.js.map +1 -0
- package/dist/src/mcp-servers/antigravity/index.js +2 -2
- package/dist/src/mcp-servers/antigravity/index.js.map +1 -1
- package/dist/src/memory/dreaming.d.ts +91 -0
- package/dist/src/memory/dreaming.d.ts.map +1 -0
- package/dist/src/memory/dreaming.js +582 -0
- package/dist/src/memory/dreaming.js.map +1 -0
- package/dist/src/memory/index.d.ts +8 -0
- package/dist/src/memory/index.d.ts.map +1 -0
- package/dist/src/memory/index.js +29 -0
- package/dist/src/memory/index.js.map +1 -0
- package/dist/src/memory/store.d.ts +13 -0
- package/dist/src/memory/store.d.ts.map +1 -1
- package/dist/src/memory/store.js +28 -0
- package/dist/src/memory/store.js.map +1 -1
- package/dist/src/memory/vector.d.ts +94 -0
- package/dist/src/memory/vector.d.ts.map +1 -0
- package/dist/src/memory/vector.js +457 -0
- package/dist/src/memory/vector.js.map +1 -0
- package/dist/src/networking/analyzer.d.ts +189 -0
- package/dist/src/networking/analyzer.d.ts.map +1 -0
- package/dist/src/networking/analyzer.js +604 -0
- package/dist/src/networking/analyzer.js.map +1 -0
- package/dist/src/plugins/bundled/context-engine/index.d.ts +8 -0
- package/dist/src/plugins/bundled/context-engine/index.d.ts.map +1 -0
- package/dist/src/plugins/bundled/context-engine/index.js +353 -0
- package/dist/src/plugins/bundled/context-engine/index.js.map +1 -0
- package/dist/src/plugins/bundled/observability/index.d.ts +64 -0
- package/dist/src/plugins/bundled/observability/index.d.ts.map +1 -0
- package/dist/src/plugins/bundled/observability/index.js +441 -0
- package/dist/src/plugins/bundled/observability/index.js.map +1 -0
- package/dist/src/plugins/index.d.ts +15 -0
- package/dist/src/plugins/index.d.ts.map +1 -0
- package/dist/src/plugins/index.js +117 -0
- package/dist/src/plugins/index.js.map +1 -0
- package/dist/src/plugins/loader.d.ts +19 -0
- package/dist/src/plugins/loader.d.ts.map +1 -0
- package/dist/src/plugins/loader.js +333 -0
- package/dist/src/plugins/loader.js.map +1 -0
- package/dist/src/plugins/manager.d.ts +32 -0
- package/dist/src/plugins/manager.d.ts.map +1 -0
- package/dist/src/plugins/manager.js +410 -0
- package/dist/src/plugins/manager.js.map +1 -0
- package/dist/src/plugins/registry.d.ts +50 -0
- package/dist/src/plugins/registry.d.ts.map +1 -0
- package/dist/src/plugins/registry.js +285 -0
- package/dist/src/plugins/registry.js.map +1 -0
- package/dist/src/plugins/types.d.ts +165 -0
- package/dist/src/plugins/types.d.ts.map +1 -0
- package/dist/src/plugins/types.js +7 -0
- package/dist/src/plugins/types.js.map +1 -0
- package/dist/src/providers/base.d.ts +5 -0
- package/dist/src/providers/base.d.ts.map +1 -1
- package/dist/src/providers/base.js.map +1 -1
- package/dist/src/providers/huggingface.d.ts +27 -0
- package/dist/src/providers/huggingface.d.ts.map +1 -0
- package/dist/src/providers/huggingface.js +140 -0
- package/dist/src/providers/huggingface.js.map +1 -0
- package/dist/src/providers/kiloauto.d.ts +29 -0
- package/dist/src/providers/kiloauto.d.ts.map +1 -0
- package/dist/src/providers/kiloauto.js +242 -0
- package/dist/src/providers/kiloauto.js.map +1 -0
- package/dist/src/providers/localllama.d.ts +26 -0
- package/dist/src/providers/localllama.d.ts.map +1 -0
- package/dist/src/providers/localllama.js +192 -0
- package/dist/src/providers/localllama.js.map +1 -0
- package/dist/src/providers/openai.d.ts.map +1 -1
- package/dist/src/providers/openai.js +8 -1
- package/dist/src/providers/openai.js.map +1 -1
- package/dist/src/providers/router.d.ts.map +1 -1
- package/dist/src/providers/router.js +36 -4
- package/dist/src/providers/router.js.map +1 -1
- package/dist/src/scheduler/heartbeat.d.ts.map +1 -1
- package/dist/src/scheduler/heartbeat.js +23 -1
- package/dist/src/scheduler/heartbeat.js.map +1 -1
- package/dist/src/security/privacy.d.ts +199 -0
- package/dist/src/security/privacy.d.ts.map +1 -0
- package/dist/src/security/privacy.js +600 -0
- package/dist/src/security/privacy.js.map +1 -0
- package/dist/src/server/hq.d.ts.map +1 -1
- package/dist/src/server/hq.js +56 -4
- package/dist/src/server/hq.js.map +1 -1
- package/dist/src/skills/loader.d.ts.map +1 -1
- package/dist/src/skills/loader.js +13 -3
- package/dist/src/skills/loader.js.map +1 -1
- package/dist/src/tools/advanced.d.ts.map +1 -1
- package/dist/src/tools/advanced.js +73 -18
- package/dist/src/tools/advanced.js.map +1 -1
- package/dist/src/tools/filesystem.d.ts.map +1 -1
- package/dist/src/tools/filesystem.js +110 -7
- package/dist/src/tools/filesystem.js.map +1 -1
- package/dist/src/tools/index_memory.d.ts.map +1 -1
- package/dist/src/tools/index_memory.js +13 -6
- package/dist/src/tools/index_memory.js.map +1 -1
- package/dist/src/tools/loader.d.ts.map +1 -1
- package/dist/src/tools/loader.js +4 -2
- package/dist/src/tools/loader.js.map +1 -1
- package/dist/src/tools/registry.d.ts +6 -0
- package/dist/src/tools/registry.d.ts.map +1 -1
- package/dist/src/tools/registry.js +51 -12
- package/dist/src/tools/registry.js.map +1 -1
- package/dist/src/tools/shell.d.ts.map +1 -1
- package/dist/src/tools/shell.js +2 -0
- package/dist/src/tools/shell.js.map +1 -1
- package/dist/src/tools/specialized.d.ts.map +1 -1
- package/dist/src/tools/specialized.js +52 -12
- package/dist/src/tools/specialized.js.map +1 -1
- package/dist/src/workflow/engine.d.ts.map +1 -1
- package/dist/src/workflow/engine.js +43 -13
- package/dist/src/workflow/engine.js.map +1 -1
- package/dist/src/workflow/lobster.d.ts +138 -0
- package/dist/src/workflow/lobster.d.ts.map +1 -0
- package/dist/src/workflow/lobster.js +620 -0
- package/dist/src/workflow/lobster.js.map +1 -0
- package/dist/src/workspace/heartbeat.d.ts +122 -0
- package/dist/src/workspace/heartbeat.d.ts.map +1 -0
- package/dist/src/workspace/heartbeat.js +624 -0
- package/dist/src/workspace/heartbeat.js.map +1 -0
- package/dist/src/workspace/index.d.ts +29 -0
- package/dist/src/workspace/index.d.ts.map +1 -0
- package/dist/src/workspace/index.js +97 -0
- package/dist/src/workspace/index.js.map +1 -0
- package/package.json +2 -2
|
@@ -0,0 +1,333 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* 🐟 AZERCLAW Plugin Loader
|
|
4
|
+
* Handles plugin discovery, validation, and loading
|
|
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.getPluginPaths = getPluginPaths;
|
|
41
|
+
exports.validatePluginMetadata = validatePluginMetadata;
|
|
42
|
+
exports.validatePluginStructure = validatePluginStructure;
|
|
43
|
+
exports.loadPluginFromFile = loadPluginFromFile;
|
|
44
|
+
exports.discoverPlugins = discoverPlugins;
|
|
45
|
+
exports.autoLoadPlugins = autoLoadPlugins;
|
|
46
|
+
exports.getPluginConfig = getPluginConfig;
|
|
47
|
+
exports.setPluginConfig = setPluginConfig;
|
|
48
|
+
exports.getPluginId = getPluginId;
|
|
49
|
+
exports.isPluginCompatible = isPluginCompatible;
|
|
50
|
+
exports.getPluginDependencies = getPluginDependencies;
|
|
51
|
+
exports.checkPluginDependencies = checkPluginDependencies;
|
|
52
|
+
const fs = __importStar(require("fs"));
|
|
53
|
+
const path = __importStar(require("path"));
|
|
54
|
+
const os = __importStar(require("os"));
|
|
55
|
+
// ─── Plugin Discovery Paths ─────────────────────────────────────────────
|
|
56
|
+
function getPluginPaths(workspaceDir) {
|
|
57
|
+
const paths = [];
|
|
58
|
+
// Global plugins directory
|
|
59
|
+
const globalPluginDir = path.join(os.homedir(), '.azerclaw', 'plugins');
|
|
60
|
+
if (fs.existsSync(globalPluginDir)) {
|
|
61
|
+
paths.push(globalPluginDir);
|
|
62
|
+
}
|
|
63
|
+
// Workspace plugins
|
|
64
|
+
if (workspaceDir) {
|
|
65
|
+
const workspacePluginDir = path.join(workspaceDir, '.azerclaw', 'plugins');
|
|
66
|
+
if (fs.existsSync(workspacePluginDir)) {
|
|
67
|
+
paths.push(workspacePluginDir);
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
// Bundled plugins (built-in)
|
|
71
|
+
const bundledPluginDir = path.join(__dirname, '..', '..', 'plugins');
|
|
72
|
+
if (fs.existsSync(bundledPluginDir)) {
|
|
73
|
+
paths.push(bundledPluginDir);
|
|
74
|
+
}
|
|
75
|
+
return paths;
|
|
76
|
+
}
|
|
77
|
+
// ─── Plugin Validation ─────────────────────────────────────────────────
|
|
78
|
+
function validatePluginMetadata(metadata) {
|
|
79
|
+
const errors = [];
|
|
80
|
+
// Required fields
|
|
81
|
+
if (!metadata.name || typeof metadata.name !== 'string') {
|
|
82
|
+
errors.push('Plugin name is required and must be a string');
|
|
83
|
+
}
|
|
84
|
+
if (!metadata.version || typeof metadata.version !== 'string') {
|
|
85
|
+
errors.push('Plugin version is required and must be a string');
|
|
86
|
+
}
|
|
87
|
+
if (!metadata.description || typeof metadata.description !== 'string') {
|
|
88
|
+
errors.push('Plugin description is required and must be a string');
|
|
89
|
+
}
|
|
90
|
+
if (!Array.isArray(metadata.capabilities)) {
|
|
91
|
+
errors.push('Plugin capabilities must be an array');
|
|
92
|
+
}
|
|
93
|
+
else {
|
|
94
|
+
metadata.capabilities.forEach((cap, index) => {
|
|
95
|
+
if (!cap.type || typeof cap.type !== 'string') {
|
|
96
|
+
errors.push(`Capability ${index} must have a type`);
|
|
97
|
+
}
|
|
98
|
+
if (!cap.name || typeof cap.name !== 'string') {
|
|
99
|
+
errors.push(`Capability ${index} must have a name`);
|
|
100
|
+
}
|
|
101
|
+
});
|
|
102
|
+
}
|
|
103
|
+
if (!Array.isArray(metadata.requires)) {
|
|
104
|
+
errors.push('Plugin requirements must be an array');
|
|
105
|
+
}
|
|
106
|
+
if (!Array.isArray(metadata.permissions)) {
|
|
107
|
+
errors.push('Plugin permissions must be an array');
|
|
108
|
+
}
|
|
109
|
+
// Version compatibility
|
|
110
|
+
if (metadata.azerclawVersion) {
|
|
111
|
+
// Could implement semver compatibility check here
|
|
112
|
+
// For now, just validate it's a string
|
|
113
|
+
if (typeof metadata.azerclawVersion !== 'string') {
|
|
114
|
+
errors.push('AZERCLAW version must be a string');
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
return errors;
|
|
118
|
+
}
|
|
119
|
+
function validatePluginStructure(pluginPath) {
|
|
120
|
+
const errors = [];
|
|
121
|
+
// Check if path exists
|
|
122
|
+
if (!fs.existsSync(pluginPath)) {
|
|
123
|
+
errors.push(`Plugin path does not exist: ${pluginPath}`);
|
|
124
|
+
return errors;
|
|
125
|
+
}
|
|
126
|
+
const stat = fs.statSync(pluginPath);
|
|
127
|
+
if (stat.isDirectory()) {
|
|
128
|
+
// Directory plugin - check for required files
|
|
129
|
+
const packageJsonPath = path.join(pluginPath, 'package.json');
|
|
130
|
+
const indexPath = path.join(pluginPath, 'index.js');
|
|
131
|
+
const tsIndexPath = path.join(pluginPath, 'index.ts');
|
|
132
|
+
if (!fs.existsSync(packageJsonPath)) {
|
|
133
|
+
errors.push('Directory plugin must have package.json');
|
|
134
|
+
}
|
|
135
|
+
if (!fs.existsSync(indexPath) && !fs.existsSync(tsIndexPath)) {
|
|
136
|
+
errors.push('Directory plugin must have index.js or index.ts');
|
|
137
|
+
}
|
|
138
|
+
// Validate package.json if it exists
|
|
139
|
+
if (fs.existsSync(packageJsonPath)) {
|
|
140
|
+
try {
|
|
141
|
+
const packageJson = JSON.parse(fs.readFileSync(packageJsonPath, 'utf-8'));
|
|
142
|
+
if (!packageJson.name) {
|
|
143
|
+
errors.push('package.json must have a name field');
|
|
144
|
+
}
|
|
145
|
+
if (!packageJson.version) {
|
|
146
|
+
errors.push('package.json must have a version field');
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
catch (error) {
|
|
150
|
+
errors.push('package.json is not valid JSON');
|
|
151
|
+
}
|
|
152
|
+
}
|
|
153
|
+
}
|
|
154
|
+
else if (pluginPath.endsWith('.js') || pluginPath.endsWith('.ts')) {
|
|
155
|
+
// Single file plugin - just check if it's readable
|
|
156
|
+
try {
|
|
157
|
+
fs.accessSync(pluginPath, fs.constants.R_OK);
|
|
158
|
+
}
|
|
159
|
+
catch (error) {
|
|
160
|
+
errors.push(`Plugin file is not readable: ${pluginPath}`);
|
|
161
|
+
}
|
|
162
|
+
}
|
|
163
|
+
else {
|
|
164
|
+
errors.push('Plugin must be a directory or .js/.ts file');
|
|
165
|
+
}
|
|
166
|
+
return errors;
|
|
167
|
+
}
|
|
168
|
+
// ─── Plugin Loading ───────────────────────────────────────────────────
|
|
169
|
+
async function loadPluginFromFile(pluginPath) {
|
|
170
|
+
const errors = validatePluginStructure(pluginPath);
|
|
171
|
+
if (errors.length > 0) {
|
|
172
|
+
throw new Error(`Plugin validation failed:\n${errors.join('\n')}`);
|
|
173
|
+
}
|
|
174
|
+
try {
|
|
175
|
+
// Clear require cache to ensure fresh load
|
|
176
|
+
delete require.cache[require.resolve(pluginPath)];
|
|
177
|
+
// Load the plugin
|
|
178
|
+
const pluginModule = require(pluginPath);
|
|
179
|
+
const plugin = pluginModule.default || pluginModule;
|
|
180
|
+
if (!plugin) {
|
|
181
|
+
throw new Error('Plugin does not export a valid plugin object');
|
|
182
|
+
}
|
|
183
|
+
// Validate plugin metadata
|
|
184
|
+
if (!plugin.metadata) {
|
|
185
|
+
throw new Error('Plugin must have metadata property');
|
|
186
|
+
}
|
|
187
|
+
const metadataErrors = validatePluginMetadata(plugin.metadata);
|
|
188
|
+
if (metadataErrors.length > 0) {
|
|
189
|
+
throw new Error(`Plugin metadata validation failed:\n${metadataErrors.join('\n')}`);
|
|
190
|
+
}
|
|
191
|
+
// Validate plugin structure
|
|
192
|
+
if (typeof plugin !== 'object') {
|
|
193
|
+
throw new Error('Plugin must be an object');
|
|
194
|
+
}
|
|
195
|
+
return plugin;
|
|
196
|
+
}
|
|
197
|
+
catch (error) {
|
|
198
|
+
if (error instanceof Error) {
|
|
199
|
+
throw error;
|
|
200
|
+
}
|
|
201
|
+
throw new Error(`Failed to load plugin: ${error}`);
|
|
202
|
+
}
|
|
203
|
+
}
|
|
204
|
+
// ─── Plugin Discovery ─────────────────────────────────────────────────
|
|
205
|
+
async function discoverPlugins(workspaceDir) {
|
|
206
|
+
const pluginPaths = [];
|
|
207
|
+
const paths = getPluginPaths(workspaceDir);
|
|
208
|
+
const isTsSupported = require.extensions['.ts'] !== undefined ||
|
|
209
|
+
process.execArgv.some(arg => arg.includes('ts-node') || arg.includes('tsx') || arg.includes('register'));
|
|
210
|
+
for (const searchPath of paths) {
|
|
211
|
+
try {
|
|
212
|
+
const entries = fs.readdirSync(searchPath, { withFileTypes: true });
|
|
213
|
+
for (const entry of entries) {
|
|
214
|
+
const fullPath = path.join(searchPath, entry.name);
|
|
215
|
+
if (entry.isDirectory()) {
|
|
216
|
+
// Check if directory contains a plugin
|
|
217
|
+
const packageJsonPath = path.join(fullPath, 'package.json');
|
|
218
|
+
const indexPath = path.join(fullPath, 'index.js');
|
|
219
|
+
const tsIndexPath = path.join(fullPath, 'index.ts');
|
|
220
|
+
if (fs.existsSync(packageJsonPath)) {
|
|
221
|
+
if (fs.existsSync(indexPath)) {
|
|
222
|
+
pluginPaths.push(indexPath);
|
|
223
|
+
}
|
|
224
|
+
else if (fs.existsSync(tsIndexPath) && isTsSupported) {
|
|
225
|
+
pluginPaths.push(tsIndexPath);
|
|
226
|
+
}
|
|
227
|
+
}
|
|
228
|
+
}
|
|
229
|
+
else if (entry.name.endsWith('.js')) {
|
|
230
|
+
pluginPaths.push(fullPath);
|
|
231
|
+
}
|
|
232
|
+
else if (entry.name.endsWith('.ts') && isTsSupported) {
|
|
233
|
+
pluginPaths.push(fullPath);
|
|
234
|
+
}
|
|
235
|
+
}
|
|
236
|
+
}
|
|
237
|
+
catch (error) {
|
|
238
|
+
console.warn(`Error searching for plugins in ${searchPath}:`, error);
|
|
239
|
+
}
|
|
240
|
+
}
|
|
241
|
+
return pluginPaths;
|
|
242
|
+
}
|
|
243
|
+
// ─── Plugin Auto-Loading ───────────────────────────────────────────────
|
|
244
|
+
async function autoLoadPlugins(manager, workspaceDir) {
|
|
245
|
+
const pluginPaths = await discoverPlugins(workspaceDir);
|
|
246
|
+
const loadedPlugins = [];
|
|
247
|
+
for (const pluginPath of pluginPaths) {
|
|
248
|
+
try {
|
|
249
|
+
const loadedPlugin = await manager.loadPlugin(pluginPath);
|
|
250
|
+
// Auto-activate if configured
|
|
251
|
+
const pluginConfig = getPluginConfig(loadedPlugin.plugin.metadata.name);
|
|
252
|
+
if (pluginConfig?.autoStart !== false) {
|
|
253
|
+
await manager.activatePlugin(loadedPlugin.id);
|
|
254
|
+
}
|
|
255
|
+
loadedPlugins.push(loadedPlugin);
|
|
256
|
+
}
|
|
257
|
+
catch (error) {
|
|
258
|
+
console.error(`Failed to load plugin ${pluginPath}:`, error);
|
|
259
|
+
}
|
|
260
|
+
}
|
|
261
|
+
return loadedPlugins;
|
|
262
|
+
}
|
|
263
|
+
// ─── Plugin Configuration ─────────────────────────────────────────────
|
|
264
|
+
function getPluginConfig(pluginName) {
|
|
265
|
+
const configPath = path.join(os.homedir(), '.azerclaw', 'plugins.json');
|
|
266
|
+
try {
|
|
267
|
+
if (fs.existsSync(configPath)) {
|
|
268
|
+
const config = JSON.parse(fs.readFileSync(configPath, 'utf-8'));
|
|
269
|
+
return config.plugins?.[pluginName];
|
|
270
|
+
}
|
|
271
|
+
}
|
|
272
|
+
catch (error) {
|
|
273
|
+
console.warn(`Error loading plugin config for ${pluginName}:`, error);
|
|
274
|
+
}
|
|
275
|
+
return null;
|
|
276
|
+
}
|
|
277
|
+
function setPluginConfig(pluginName, config) {
|
|
278
|
+
const configPath = path.join(os.homedir(), '.azerclaw', 'plugins.json');
|
|
279
|
+
try {
|
|
280
|
+
let globalConfig = {};
|
|
281
|
+
if (fs.existsSync(configPath)) {
|
|
282
|
+
globalConfig = JSON.parse(fs.readFileSync(configPath, 'utf-8'));
|
|
283
|
+
}
|
|
284
|
+
if (!globalConfig.plugins) {
|
|
285
|
+
globalConfig.plugins = {};
|
|
286
|
+
}
|
|
287
|
+
globalConfig.plugins[pluginName] = config;
|
|
288
|
+
fs.writeFileSync(configPath, JSON.stringify(globalConfig, null, 2));
|
|
289
|
+
}
|
|
290
|
+
catch (error) {
|
|
291
|
+
console.error(`Error saving plugin config for ${pluginName}:`, error);
|
|
292
|
+
throw error;
|
|
293
|
+
}
|
|
294
|
+
}
|
|
295
|
+
// ─── Plugin Utilities ─────────────────────────────────────────────────
|
|
296
|
+
function getPluginId(pluginPath) {
|
|
297
|
+
const basename = path.basename(pluginPath);
|
|
298
|
+
// Remove extension if present
|
|
299
|
+
if (basename.endsWith('.js') || basename.endsWith('.ts')) {
|
|
300
|
+
return basename.slice(0, -3);
|
|
301
|
+
}
|
|
302
|
+
return basename;
|
|
303
|
+
}
|
|
304
|
+
function isPluginCompatible(plugin, azerclawVersion) {
|
|
305
|
+
// Simple version compatibility check
|
|
306
|
+
// Could implement semver range checking here
|
|
307
|
+
const requiredVersion = plugin.metadata.azerclawVersion;
|
|
308
|
+
if (!requiredVersion) {
|
|
309
|
+
return true; // No version requirement
|
|
310
|
+
}
|
|
311
|
+
// For now, just check if major version matches
|
|
312
|
+
const requiredMajor = requiredVersion.split('.')[0];
|
|
313
|
+
const currentMajor = azerclawVersion.split('.')[0];
|
|
314
|
+
return requiredMajor === currentMajor;
|
|
315
|
+
}
|
|
316
|
+
function getPluginDependencies(plugin) {
|
|
317
|
+
return [
|
|
318
|
+
...(plugin.metadata.depends || []),
|
|
319
|
+
...(plugin.metadata.peerDepends || [])
|
|
320
|
+
];
|
|
321
|
+
}
|
|
322
|
+
function checkPluginDependencies(plugin, loadedPlugins) {
|
|
323
|
+
const dependencies = getPluginDependencies(plugin);
|
|
324
|
+
const loadedPluginNames = new Set(loadedPlugins.map(p => p.plugin.metadata.name));
|
|
325
|
+
const missing = [];
|
|
326
|
+
for (const dep of dependencies) {
|
|
327
|
+
if (!loadedPluginNames.has(dep)) {
|
|
328
|
+
missing.push(dep);
|
|
329
|
+
}
|
|
330
|
+
}
|
|
331
|
+
return missing;
|
|
332
|
+
}
|
|
333
|
+
//# sourceMappingURL=loader.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"loader.js","sourceRoot":"","sources":["../../../src/plugins/loader.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 🐟 AZERCLAW Plugin Manager
|
|
3
|
+
* Manages plugin lifecycle, discovery, and security
|
|
4
|
+
*/
|
|
5
|
+
import { EventEmitter } from 'events';
|
|
6
|
+
import { PluginManager as IPluginManager, LoadedPlugin, PluginHealth } from './types';
|
|
7
|
+
export declare class PluginManager extends EventEmitter implements IPluginManager {
|
|
8
|
+
private plugins;
|
|
9
|
+
private pluginConfigs;
|
|
10
|
+
private globalConfig;
|
|
11
|
+
private azerclawHome;
|
|
12
|
+
private pluginDir;
|
|
13
|
+
constructor();
|
|
14
|
+
loadPlugin(pluginPath: string): Promise<LoadedPlugin>;
|
|
15
|
+
unloadPlugin(pluginId: string): Promise<void>;
|
|
16
|
+
activatePlugin(pluginId: string): Promise<void>;
|
|
17
|
+
deactivatePlugin(pluginId: string): Promise<void>;
|
|
18
|
+
discoverPlugins(): Promise<string[]>;
|
|
19
|
+
reloadPlugins(): Promise<void>;
|
|
20
|
+
listPlugins(): Promise<LoadedPlugin[]>;
|
|
21
|
+
getPlugin(pluginId: string): Promise<LoadedPlugin | null>;
|
|
22
|
+
getPluginCount(): number;
|
|
23
|
+
getPluginHealth(pluginId: string): Promise<PluginHealth | null>;
|
|
24
|
+
installPlugin(source: string): Promise<string>;
|
|
25
|
+
uninstallPlugin(pluginId: string): Promise<void>;
|
|
26
|
+
updatePlugin(pluginId: string): Promise<void>;
|
|
27
|
+
private validatePlugin;
|
|
28
|
+
private createPluginContext;
|
|
29
|
+
private loadGlobalConfig;
|
|
30
|
+
private ensureDirectories;
|
|
31
|
+
}
|
|
32
|
+
//# sourceMappingURL=manager.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"manager.d.ts","sourceRoot":"","sources":["../../../src/plugins/manager.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAKH,OAAO,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AACtC,OAAO,EAEL,aAAa,IAAI,cAAc,EAC/B,YAAY,EAEZ,YAAY,EAGb,MAAM,SAAS,CAAC;AAIjB,qBAAa,aAAc,SAAQ,YAAa,YAAW,cAAc;IACvE,OAAO,CAAC,OAAO,CAAmC;IAClD,OAAO,CAAC,aAAa,CAAmC;IACxD,OAAO,CAAC,YAAY,CAAqB;IACzC,OAAO,CAAC,YAAY,CAAS;IAC7B,OAAO,CAAC,SAAS,CAAS;;IAYpB,UAAU,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC;IA4DrD,YAAY,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAoC7C,cAAc,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IA8B/C,gBAAgB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAgCjD,eAAe,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;IAmDpC,aAAa,IAAI,OAAO,CAAC,IAAI,CAAC;IA2B9B,WAAW,IAAI,OAAO,CAAC,YAAY,EAAE,CAAC;IAItC,SAAS,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,GAAG,IAAI,CAAC;IAI/D,cAAc,IAAI,MAAM;IAIlB,eAAe,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,GAAG,IAAI,CAAC;IA8B/D,aAAa,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAM9C,eAAe,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAMhD,YAAY,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAMnD,OAAO,CAAC,cAAc;IAkBtB,OAAO,CAAC,mBAAmB;IA6C3B,OAAO,CAAC,gBAAgB;IA2BxB,OAAO,CAAC,iBAAiB;CAe1B"}
|