@gotza02/smartagent 1.2.0

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 (75) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +422 -0
  3. package/dist/config/index.d.ts +72 -0
  4. package/dist/config/index.d.ts.map +1 -0
  5. package/dist/config/index.js +329 -0
  6. package/dist/config/index.js.map +1 -0
  7. package/dist/core/agent-manager.d.ts +116 -0
  8. package/dist/core/agent-manager.d.ts.map +1 -0
  9. package/dist/core/agent-manager.js +460 -0
  10. package/dist/core/agent-manager.js.map +1 -0
  11. package/dist/core/context-manager.d.ts +107 -0
  12. package/dist/core/context-manager.d.ts.map +1 -0
  13. package/dist/core/context-manager.js +467 -0
  14. package/dist/core/context-manager.js.map +1 -0
  15. package/dist/core/database.d.ts +82 -0
  16. package/dist/core/database.d.ts.map +1 -0
  17. package/dist/core/database.js +751 -0
  18. package/dist/core/database.js.map +1 -0
  19. package/dist/core/event-emitter.d.ts +110 -0
  20. package/dist/core/event-emitter.d.ts.map +1 -0
  21. package/dist/core/event-emitter.js +240 -0
  22. package/dist/core/event-emitter.js.map +1 -0
  23. package/dist/core/metrics.d.ts +108 -0
  24. package/dist/core/metrics.d.ts.map +1 -0
  25. package/dist/core/metrics.js +281 -0
  26. package/dist/core/metrics.js.map +1 -0
  27. package/dist/core/middleware.d.ts +63 -0
  28. package/dist/core/middleware.d.ts.map +1 -0
  29. package/dist/core/middleware.js +194 -0
  30. package/dist/core/middleware.js.map +1 -0
  31. package/dist/core/plugin-system.d.ts +86 -0
  32. package/dist/core/plugin-system.d.ts.map +1 -0
  33. package/dist/core/plugin-system.js +251 -0
  34. package/dist/core/plugin-system.js.map +1 -0
  35. package/dist/core/task-scheduler.d.ts +130 -0
  36. package/dist/core/task-scheduler.d.ts.map +1 -0
  37. package/dist/core/task-scheduler.js +401 -0
  38. package/dist/core/task-scheduler.js.map +1 -0
  39. package/dist/engines/auto-router.d.ts +76 -0
  40. package/dist/engines/auto-router.d.ts.map +1 -0
  41. package/dist/engines/auto-router.js +445 -0
  42. package/dist/engines/auto-router.js.map +1 -0
  43. package/dist/engines/parallel-execution.d.ts +104 -0
  44. package/dist/engines/parallel-execution.d.ts.map +1 -0
  45. package/dist/engines/parallel-execution.js +591 -0
  46. package/dist/engines/parallel-execution.js.map +1 -0
  47. package/dist/engines/sequential-thinking.d.ts +88 -0
  48. package/dist/engines/sequential-thinking.d.ts.map +1 -0
  49. package/dist/engines/sequential-thinking.js +406 -0
  50. package/dist/engines/sequential-thinking.js.map +1 -0
  51. package/dist/index.d.ts +12 -0
  52. package/dist/index.d.ts.map +1 -0
  53. package/dist/index.js +1101 -0
  54. package/dist/index.js.map +1 -0
  55. package/dist/security/validation.d.ts +87 -0
  56. package/dist/security/validation.d.ts.map +1 -0
  57. package/dist/security/validation.js +465 -0
  58. package/dist/security/validation.js.map +1 -0
  59. package/dist/tools/filesystem.d.ts +90 -0
  60. package/dist/tools/filesystem.d.ts.map +1 -0
  61. package/dist/tools/filesystem.js +292 -0
  62. package/dist/tools/filesystem.js.map +1 -0
  63. package/dist/tools/terminal.d.ts +99 -0
  64. package/dist/tools/terminal.d.ts.map +1 -0
  65. package/dist/tools/terminal.js +363 -0
  66. package/dist/tools/terminal.js.map +1 -0
  67. package/dist/types/index.d.ts +306 -0
  68. package/dist/types/index.d.ts.map +1 -0
  69. package/dist/types/index.js +54 -0
  70. package/dist/types/index.js.map +1 -0
  71. package/dist/utils/logger.d.ts +22 -0
  72. package/dist/utils/logger.d.ts.map +1 -0
  73. package/dist/utils/logger.js +189 -0
  74. package/dist/utils/logger.js.map +1 -0
  75. package/package.json +71 -0
@@ -0,0 +1,251 @@
1
+ /**
2
+ * Plugin System
3
+ * Extensible plugin architecture for custom tools and agents
4
+ */
5
+ import { logger } from "../utils/logger.js";
6
+ import { eventEmitter } from "./event-emitter.js";
7
+ /**
8
+ * Plugin Manager
9
+ * Manages plugin lifecycle and hooks
10
+ */
11
+ export class PluginManager {
12
+ registry = {
13
+ plugins: new Map(),
14
+ hooks: new Map(),
15
+ };
16
+ /**
17
+ * Register a plugin
18
+ */
19
+ async registerPlugin(plugin) {
20
+ const { manifest } = plugin;
21
+ // Check if already registered
22
+ if (this.registry.plugins.has(manifest.id)) {
23
+ logger.warn(`Plugin already registered: ${manifest.id}`);
24
+ return false;
25
+ }
26
+ // Check dependencies
27
+ if (manifest.dependencies) {
28
+ for (const depId of manifest.dependencies) {
29
+ if (!this.registry.plugins.has(depId)) {
30
+ logger.error(`Plugin dependency not found: ${depId}`, {
31
+ plugin: manifest.id,
32
+ });
33
+ return false;
34
+ }
35
+ }
36
+ }
37
+ // Initialize plugin
38
+ try {
39
+ await plugin.initialize();
40
+ // Register hooks
41
+ if (plugin.hooks) {
42
+ for (const [hookName, hook] of Object.entries(plugin.hooks)) {
43
+ this.registerHook(hookName, hook);
44
+ }
45
+ }
46
+ // Add to registry
47
+ this.registry.plugins.set(manifest.id, plugin);
48
+ // logger.info(`Plugin registered: ${manifest.name} v${manifest.version}`, {
49
+ // pluginId: manifest.id,
50
+ // });
51
+ eventEmitter.emit("plugin:registered", {
52
+ pluginId: manifest.id,
53
+ name: manifest.name,
54
+ version: manifest.version,
55
+ });
56
+ return true;
57
+ }
58
+ catch (error) {
59
+ logger.error(`Failed to initialize plugin: ${manifest.id}`, {
60
+ error: error instanceof Error ? error.message : String(error),
61
+ });
62
+ return false;
63
+ }
64
+ }
65
+ /**
66
+ * Unregister a plugin
67
+ */
68
+ async unregisterPlugin(pluginId) {
69
+ const plugin = this.registry.plugins.get(pluginId);
70
+ if (!plugin) {
71
+ logger.warn(`Plugin not found: ${pluginId}`);
72
+ return false;
73
+ }
74
+ // Check for dependent plugins
75
+ for (const [id, p] of this.registry.plugins.entries()) {
76
+ if (p.manifest.dependencies?.includes(pluginId)) {
77
+ logger.error(`Cannot unregister plugin with dependents: ${pluginId}`, {
78
+ dependent: id,
79
+ });
80
+ return false;
81
+ }
82
+ }
83
+ // Destroy plugin
84
+ try {
85
+ if (plugin.destroy) {
86
+ await plugin.destroy();
87
+ }
88
+ // Unregister hooks
89
+ if (plugin.hooks) {
90
+ for (const hookName of Object.keys(plugin.hooks)) {
91
+ const hook = plugin.hooks[hookName];
92
+ if (hook) {
93
+ this.unregisterHook(hookName, hook);
94
+ }
95
+ }
96
+ }
97
+ // Remove from registry
98
+ this.registry.plugins.delete(pluginId);
99
+ logger.info(`Plugin unregistered: ${plugin.manifest.name}`);
100
+ eventEmitter.emit("plugin:unregistered", {
101
+ pluginId,
102
+ name: plugin.manifest.name,
103
+ });
104
+ return true;
105
+ }
106
+ catch (error) {
107
+ logger.error(`Failed to destroy plugin: ${pluginId}`, {
108
+ error: error instanceof Error ? error.message : String(error),
109
+ });
110
+ return false;
111
+ }
112
+ }
113
+ /**
114
+ * Register a hook
115
+ */
116
+ registerHook(name, hook) {
117
+ const hooks = this.registry.hooks.get(name) || [];
118
+ hooks.push(hook);
119
+ this.registry.hooks.set(name, hooks);
120
+ }
121
+ /**
122
+ * Unregister a hook
123
+ */
124
+ unregisterHook(name, hook) {
125
+ const hooks = this.registry.hooks.get(name);
126
+ if (!hooks)
127
+ return;
128
+ const index = hooks.indexOf(hook);
129
+ if (index > -1) {
130
+ hooks.splice(index, 1);
131
+ }
132
+ }
133
+ /**
134
+ * Execute hooks
135
+ */
136
+ async executeHooks(name, data) {
137
+ const hooks = this.registry.hooks.get(name);
138
+ if (!hooks || hooks.length === 0)
139
+ return [];
140
+ const results = [];
141
+ for (const hook of hooks) {
142
+ try {
143
+ const result = await hook(data);
144
+ results.push(result);
145
+ }
146
+ catch (error) {
147
+ logger.error(`Hook execution error: ${name}`, {
148
+ error: error instanceof Error ? error.message : String(error),
149
+ });
150
+ }
151
+ }
152
+ return results;
153
+ }
154
+ /**
155
+ * Get plugin by ID
156
+ */
157
+ getPlugin(pluginId) {
158
+ return this.registry.plugins.get(pluginId) || null;
159
+ }
160
+ /**
161
+ * Get all plugins
162
+ */
163
+ getAllPlugins() {
164
+ return Array.from(this.registry.plugins.values());
165
+ }
166
+ /**
167
+ * Check if plugin is registered
168
+ */
169
+ hasPlugin(pluginId) {
170
+ return this.registry.plugins.has(pluginId);
171
+ }
172
+ /**
173
+ * Get plugin count
174
+ */
175
+ getPluginCount() {
176
+ return this.registry.plugins.size;
177
+ }
178
+ /**
179
+ * Get hook count
180
+ */
181
+ getHookCount(name) {
182
+ if (name) {
183
+ return this.registry.hooks.get(name)?.length || 0;
184
+ }
185
+ let count = 0;
186
+ for (const hooks of this.registry.hooks.values()) {
187
+ count += hooks.length;
188
+ }
189
+ return count;
190
+ }
191
+ /**
192
+ * Get available hooks
193
+ */
194
+ getAvailableHooks() {
195
+ return Array.from(this.registry.hooks.keys());
196
+ }
197
+ /**
198
+ * Load plugin from file
199
+ */
200
+ async loadPluginFromFile(filePath) {
201
+ try {
202
+ // Dynamic import
203
+ const module = await import(filePath);
204
+ const plugin = module.default || module;
205
+ if (!plugin.manifest || !plugin.initialize) {
206
+ logger.error(`Invalid plugin format: ${filePath}`);
207
+ return false;
208
+ }
209
+ return this.registerPlugin(plugin);
210
+ }
211
+ catch (error) {
212
+ logger.error(`Failed to load plugin from file: ${filePath}`, {
213
+ error: error instanceof Error ? error.message : String(error),
214
+ });
215
+ return false;
216
+ }
217
+ }
218
+ /**
219
+ * Create built-in plugin
220
+ */
221
+ createBuiltinPlugin(id, name, hooks) {
222
+ return {
223
+ manifest: {
224
+ id,
225
+ name,
226
+ version: "1.0.0",
227
+ description: `Built-in ${name} plugin`,
228
+ author: "Swarm MCP Enterprise",
229
+ },
230
+ initialize: () => {
231
+ logger.info(`Built-in plugin initialized: ${name}`);
232
+ },
233
+ hooks,
234
+ };
235
+ }
236
+ /**
237
+ * Reset plugin manager
238
+ */
239
+ async reset() {
240
+ // Unregister all plugins
241
+ for (const pluginId of this.registry.plugins.keys()) {
242
+ await this.unregisterPlugin(pluginId);
243
+ }
244
+ this.registry.plugins.clear();
245
+ this.registry.hooks.clear();
246
+ logger.info("Plugin manager reset");
247
+ }
248
+ }
249
+ // Export singleton instance
250
+ export const pluginManager = new PluginManager();
251
+ //# sourceMappingURL=plugin-system.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"plugin-system.js","sourceRoot":"","sources":["../../src/core/plugin-system.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,130 @@
1
+ /**
2
+ * Task Scheduler & Dependencies
3
+ * Advanced task scheduling with dependency management
4
+ */
5
+ import type { Task, TaskStatus } from "../types/index.js";
6
+ interface TaskDependency {
7
+ taskId: string;
8
+ dependsOn: string[];
9
+ dependentTasks: string[];
10
+ }
11
+ interface ScheduledTask extends Task {
12
+ dependencies: string[];
13
+ dependents: string[];
14
+ scheduledAt?: string;
15
+ retryCount: number;
16
+ maxRetries: number;
17
+ retryDelay: number;
18
+ }
19
+ interface ScheduleOptions {
20
+ priority?: number;
21
+ dependencies?: string[];
22
+ maxRetries?: number;
23
+ retryDelay?: number;
24
+ }
25
+ /**
26
+ * Task Scheduler
27
+ * Manages task dependencies and execution order
28
+ */
29
+ export declare class TaskScheduler {
30
+ private graph;
31
+ private executionQueue;
32
+ private runningTasks;
33
+ private maxConcurrentTasks;
34
+ /**
35
+ * Schedule a new task with dependencies
36
+ */
37
+ scheduleTask(agentId: string, type: string, description: string, options?: ScheduleOptions): ScheduledTask;
38
+ /**
39
+ * Check if task is ready to execute (all dependencies completed)
40
+ */
41
+ isTaskReady(taskId: string): boolean;
42
+ /**
43
+ * Add task to execution queue
44
+ */
45
+ private addToQueue;
46
+ /**
47
+ * Get next task from queue
48
+ */
49
+ getNextTask(): ScheduledTask | null;
50
+ /**
51
+ * Mark task as started
52
+ */
53
+ startTask(taskId: string): ScheduledTask | null;
54
+ /**
55
+ * Mark task as completed
56
+ */
57
+ completeTask(taskId: string, result?: unknown): ScheduledTask | null;
58
+ /**
59
+ * Mark task as failed
60
+ */
61
+ failTask(taskId: string, error: string): ScheduledTask | null;
62
+ /**
63
+ * Schedule task retry with exponential backoff and jitter
64
+ */
65
+ private scheduleRetry;
66
+ /**
67
+ * Check and queue dependent tasks
68
+ */
69
+ private checkDependentTasks;
70
+ /**
71
+ * Fail all dependent tasks
72
+ */
73
+ private failDependentTasks;
74
+ /**
75
+ * Get task by ID
76
+ */
77
+ getTask(taskId: string): ScheduledTask | null;
78
+ /**
79
+ * Get all tasks
80
+ */
81
+ getAllTasks(): ScheduledTask[];
82
+ /**
83
+ * Get tasks by status
84
+ */
85
+ getTasksByStatus(status: TaskStatus): ScheduledTask[];
86
+ /**
87
+ * Get tasks by agent
88
+ */
89
+ getTasksByAgent(agentId: string): ScheduledTask[];
90
+ /**
91
+ * Get execution order (topological sort)
92
+ */
93
+ getExecutionOrder(): string[];
94
+ /**
95
+ * Detect circular dependencies
96
+ */
97
+ detectCircularDependencies(): string[][];
98
+ /**
99
+ * Cancel a task
100
+ */
101
+ cancelTask(taskId: string): boolean;
102
+ /**
103
+ * Get task statistics
104
+ */
105
+ getStats(): {
106
+ total: number;
107
+ pending: number;
108
+ inProgress: number;
109
+ completed: number;
110
+ failed: number;
111
+ cancelled: number;
112
+ queued: number;
113
+ running: number;
114
+ };
115
+ /**
116
+ * Set max concurrent tasks
117
+ */
118
+ setMaxConcurrentTasks(max: number): void;
119
+ /**
120
+ * Clear completed tasks
121
+ */
122
+ cleanup(maxAgeHours?: number): number;
123
+ /**
124
+ * Reset scheduler
125
+ */
126
+ reset(): void;
127
+ }
128
+ export declare const taskScheduler: TaskScheduler;
129
+ export type { ScheduledTask, TaskDependency, ScheduleOptions };
130
+ //# sourceMappingURL=task-scheduler.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"task-scheduler.d.ts","sourceRoot":"","sources":["../../src/core/task-scheduler.ts"],"names":[],"mappings":"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"}