@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,281 @@
1
+ /**
2
+ * Metrics & Monitoring System
3
+ * Performance metrics collection and reporting
4
+ */
5
+ import { logger } from "../utils/logger.js";
6
+ /**
7
+ * Metrics Manager
8
+ * Collects and manages performance metrics
9
+ */
10
+ export class MetricsManager {
11
+ metrics = new Map();
12
+ snapshots = [];
13
+ maxSnapshots = 1000;
14
+ /**
15
+ * Register a counter metric
16
+ */
17
+ registerCounter(name, description) {
18
+ this.metrics.set(name, {
19
+ name,
20
+ type: "counter",
21
+ description,
22
+ values: [],
23
+ });
24
+ }
25
+ /**
26
+ * Register a gauge metric
27
+ */
28
+ registerGauge(name, description) {
29
+ this.metrics.set(name, {
30
+ name,
31
+ type: "gauge",
32
+ description,
33
+ values: [],
34
+ });
35
+ }
36
+ /**
37
+ * Register a histogram metric
38
+ */
39
+ registerHistogram(name, description, buckets = [0.1, 0.5, 1, 2, 5, 10]) {
40
+ const metric = {
41
+ name,
42
+ type: "histogram",
43
+ description,
44
+ values: [],
45
+ buckets: [...buckets, Infinity],
46
+ bucketCounts: new Map(),
47
+ };
48
+ for (const bucket of metric.buckets) {
49
+ metric.bucketCounts.set(bucket, 0);
50
+ }
51
+ this.metrics.set(name, metric);
52
+ }
53
+ /**
54
+ * Increment counter
55
+ */
56
+ increment(name, value = 1, labels) {
57
+ const metric = this.metrics.get(name);
58
+ if (!metric || metric.type !== "counter") {
59
+ logger.warn(`Counter metric not found: ${name}`);
60
+ return;
61
+ }
62
+ metric.values.push({
63
+ value,
64
+ timestamp: Date.now(),
65
+ labels,
66
+ });
67
+ // Keep only recent values
68
+ if (metric.values.length > 1000) {
69
+ metric.values = metric.values.slice(-1000);
70
+ }
71
+ }
72
+ /**
73
+ * Set gauge value
74
+ */
75
+ setGauge(name, value, labels) {
76
+ const metric = this.metrics.get(name);
77
+ if (!metric || metric.type !== "gauge") {
78
+ logger.warn(`Gauge metric not found: ${name}`);
79
+ return;
80
+ }
81
+ metric.values.push({
82
+ value,
83
+ timestamp: Date.now(),
84
+ labels,
85
+ });
86
+ // Keep only recent values
87
+ if (metric.values.length > 1000) {
88
+ metric.values = metric.values.slice(-1000);
89
+ }
90
+ }
91
+ /**
92
+ * Observe histogram value
93
+ */
94
+ observe(name, value, labels) {
95
+ const metric = this.metrics.get(name);
96
+ if (!metric || metric.type !== "histogram") {
97
+ logger.warn(`Histogram metric not found: ${name}`);
98
+ return;
99
+ }
100
+ metric.values.push({
101
+ value,
102
+ timestamp: Date.now(),
103
+ labels,
104
+ });
105
+ // Update bucket counts
106
+ for (const bucket of metric.buckets) {
107
+ if (value <= bucket) {
108
+ const current = metric.bucketCounts.get(bucket) || 0;
109
+ metric.bucketCounts.set(bucket, current + 1);
110
+ }
111
+ }
112
+ // Keep only recent values
113
+ if (metric.values.length > 1000) {
114
+ metric.values = metric.values.slice(-1000);
115
+ }
116
+ }
117
+ /**
118
+ * Get metric value
119
+ */
120
+ getValue(name) {
121
+ const metric = this.metrics.get(name);
122
+ if (!metric || metric.values.length === 0)
123
+ return null;
124
+ const latest = metric.values[metric.values.length - 1];
125
+ return latest?.value ?? null;
126
+ }
127
+ /**
128
+ * Get metric summary
129
+ */
130
+ getSummary(name) {
131
+ const metric = this.metrics.get(name);
132
+ if (!metric || metric.values.length === 0)
133
+ return null;
134
+ const values = metric.values.map((v) => v.value);
135
+ const sum = values.reduce((a, b) => a + b, 0);
136
+ return {
137
+ count: values.length,
138
+ sum,
139
+ avg: sum / values.length,
140
+ min: Math.min(...values),
141
+ max: Math.max(...values),
142
+ };
143
+ }
144
+ /**
145
+ * Get histogram buckets
146
+ */
147
+ getHistogramBuckets(name) {
148
+ const metric = this.metrics.get(name);
149
+ if (!metric || metric.type !== "histogram")
150
+ return null;
151
+ return metric.buckets.map((bucket) => ({
152
+ le: bucket,
153
+ count: metric.bucketCounts.get(bucket) || 0,
154
+ }));
155
+ }
156
+ /**
157
+ * Get all metrics
158
+ */
159
+ getAllMetrics() {
160
+ return Array.from(this.metrics.values());
161
+ }
162
+ /**
163
+ * Export metrics in Prometheus format
164
+ */
165
+ exportPrometheus() {
166
+ const lines = [];
167
+ for (const metric of this.metrics.values()) {
168
+ lines.push(`# HELP ${metric.name} ${metric.description}`);
169
+ lines.push(`# TYPE ${metric.name} ${metric.type}`);
170
+ if (metric.type === "histogram") {
171
+ const histMetric = metric;
172
+ for (const bucket of histMetric.buckets) {
173
+ const count = histMetric.bucketCounts.get(bucket) || 0;
174
+ const bucketLabel = bucket === Infinity ? "+Inf" : bucket.toString();
175
+ lines.push(`${metric.name}_bucket{le="${bucketLabel}"} ${count}`);
176
+ }
177
+ const sum = metric.values.reduce((a, v) => a + v.value, 0);
178
+ lines.push(`${metric.name}_sum ${sum}`);
179
+ lines.push(`${metric.name}_count ${metric.values.length}`);
180
+ }
181
+ else {
182
+ const latest = metric.values[metric.values.length - 1];
183
+ if (latest) {
184
+ const labels = latest.labels
185
+ ? Object.entries(latest.labels)
186
+ .map(([k, v]) => `${k}="${v}"`)
187
+ .join(",")
188
+ : "";
189
+ lines.push(`${metric.name}${labels ? `{${labels}}` : ""} ${latest.value}`);
190
+ }
191
+ }
192
+ lines.push("");
193
+ }
194
+ return lines.join("\n");
195
+ }
196
+ /**
197
+ * Export metrics in JSON format
198
+ */
199
+ exportJSON() {
200
+ const data = {};
201
+ for (const [name, metric] of this.metrics.entries()) {
202
+ data[name] = {
203
+ type: metric.type,
204
+ description: metric.description,
205
+ values: metric.values,
206
+ };
207
+ if (metric.type === "histogram") {
208
+ data[name] = {
209
+ ...data[name],
210
+ buckets: this.getHistogramBuckets(name),
211
+ };
212
+ }
213
+ }
214
+ return JSON.stringify(data, null, 2);
215
+ }
216
+ /**
217
+ * Take performance snapshot
218
+ */
219
+ takeSnapshot() {
220
+ const snapshot = {
221
+ timestamp: Date.now(),
222
+ metrics: {},
223
+ };
224
+ for (const [name, metric] of this.metrics.entries()) {
225
+ const latest = metric.values[metric.values.length - 1];
226
+ if (latest) {
227
+ snapshot.metrics[name] = latest.value;
228
+ }
229
+ }
230
+ this.snapshots.push(snapshot);
231
+ // Keep only recent snapshots
232
+ if (this.snapshots.length > this.maxSnapshots) {
233
+ this.snapshots = this.snapshots.slice(-this.maxSnapshots);
234
+ }
235
+ return snapshot;
236
+ }
237
+ /**
238
+ * Get snapshots
239
+ */
240
+ getSnapshots(options = {}) {
241
+ let snapshots = [...this.snapshots];
242
+ if (options.since) {
243
+ snapshots = snapshots.filter((s) => s.timestamp >= options.since.getTime());
244
+ }
245
+ if (options.limit) {
246
+ snapshots = snapshots.slice(-options.limit);
247
+ }
248
+ return snapshots;
249
+ }
250
+ /**
251
+ * Clear all metrics
252
+ */
253
+ clear() {
254
+ this.metrics.clear();
255
+ this.snapshots = [];
256
+ }
257
+ /**
258
+ * Register default metrics
259
+ */
260
+ registerDefaultMetrics() {
261
+ // Agent metrics
262
+ this.registerGauge("swarm_agents_total", "Total number of agents");
263
+ this.registerGauge("swarm_agents_active", "Number of active agents");
264
+ this.registerGauge("swarm_agents_idle", "Number of idle agents");
265
+ // Task metrics
266
+ this.registerCounter("swarm_tasks_created_total", "Total number of tasks created");
267
+ this.registerCounter("swarm_tasks_completed_total", "Total number of tasks completed");
268
+ this.registerCounter("swarm_tasks_failed_total", "Total number of tasks failed");
269
+ this.registerHistogram("swarm_task_duration_seconds", "Task execution duration");
270
+ // Request metrics
271
+ this.registerCounter("swarm_requests_total", "Total number of requests");
272
+ this.registerCounter("swarm_requests_failed_total", "Total number of failed requests");
273
+ this.registerHistogram("swarm_request_duration_seconds", "Request duration");
274
+ // System metrics
275
+ this.registerGauge("swarm_memory_usage_bytes", "Memory usage in bytes");
276
+ this.registerGauge("swarm_cpu_usage_percent", "CPU usage percentage");
277
+ }
278
+ }
279
+ // Export singleton instance
280
+ export const metricsManager = new MetricsManager();
281
+ //# sourceMappingURL=metrics.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"metrics.js","sourceRoot":"","sources":["../../src/core/metrics.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,63 @@
1
+ /**
2
+ * Middleware System
3
+ * Request/Response middleware pipeline
4
+ */
5
+ import type { ApiResponse } from "../types/index.js";
6
+ type MiddlewareFunction<T = unknown> = (context: MiddlewareContext<T>, next: () => Promise<void>) => Promise<void>;
7
+ interface MiddlewareContext<T = unknown> {
8
+ requestId: string;
9
+ tool: string;
10
+ params: Record<string, unknown>;
11
+ result?: ApiResponse<T>;
12
+ error?: Error;
13
+ metadata: Record<string, unknown>;
14
+ startTime: number;
15
+ }
16
+ /**
17
+ * Middleware Manager
18
+ * Manages request/response middleware pipeline
19
+ */
20
+ export declare class MiddlewareManager {
21
+ private registry;
22
+ private rateLimiter;
23
+ constructor();
24
+ /**
25
+ * Register default middleware
26
+ */
27
+ private registerDefaultMiddleware;
28
+ /**
29
+ * Register before middleware
30
+ */
31
+ useBefore(middleware: MiddlewareFunction): void;
32
+ /**
33
+ * Register after middleware
34
+ */
35
+ useAfter(middleware: MiddlewareFunction): void;
36
+ /**
37
+ * Register error middleware
38
+ */
39
+ useError(middleware: MiddlewareFunction): void;
40
+ /**
41
+ * Execute middleware pipeline
42
+ */
43
+ execute<T>(tool: string, params: Record<string, unknown>, handler: () => Promise<ApiResponse<T>>, metadata?: Record<string, unknown>): Promise<ApiResponse<T>>;
44
+ /**
45
+ * Run array of middlewares
46
+ */
47
+ private runMiddlewares;
48
+ /**
49
+ * Get middleware count
50
+ */
51
+ getMiddlewareCount(): {
52
+ before: number;
53
+ after: number;
54
+ error: number;
55
+ };
56
+ /**
57
+ * Clear all middleware
58
+ */
59
+ clear(): void;
60
+ }
61
+ export declare const middlewareManager: MiddlewareManager;
62
+ export type { MiddlewareFunction, MiddlewareContext };
63
+ //# sourceMappingURL=middleware.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"middleware.d.ts","sourceRoot":"","sources":["../../src/core/middleware.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAKH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAErD,KAAK,kBAAkB,CAAC,CAAC,GAAG,OAAO,IAAI,CACrC,OAAO,EAAE,iBAAiB,CAAC,CAAC,CAAC,EAC7B,IAAI,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,KACtB,OAAO,CAAC,IAAI,CAAC,CAAC;AAEnB,UAAU,iBAAiB,CAAC,CAAC,GAAG,OAAO;IACrC,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAChC,MAAM,CAAC,EAAE,WAAW,CAAC,CAAC,CAAC,CAAC;IACxB,KAAK,CAAC,EAAE,KAAK,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAClC,SAAS,EAAE,MAAM,CAAC;CACnB;AAQD;;;GAGG;AACH,qBAAa,iBAAiB;IAC5B,OAAO,CAAC,QAAQ,CAId;IACF,OAAO,CAAC,WAAW,CAAc;;IAQjC;;OAEG;IACH,OAAO,CAAC,yBAAyB;IAkFjC;;OAEG;IACH,SAAS,CAAC,UAAU,EAAE,kBAAkB,GAAG,IAAI;IAI/C;;OAEG;IACH,QAAQ,CAAC,UAAU,EAAE,kBAAkB,GAAG,IAAI;IAI9C;;OAEG;IACH,QAAQ,CAAC,UAAU,EAAE,kBAAkB,GAAG,IAAI;IAI9C;;OAEG;IACG,OAAO,CAAC,CAAC,EACb,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC/B,OAAO,EAAE,MAAM,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,EACtC,QAAQ,GAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAM,GACrC,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;IAiD1B;;OAEG;YACW,cAAc;IAkB5B;;OAEG;IACH,kBAAkB,IAAI;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE;IAQtE;;OAEG;IACH,KAAK,IAAI,IAAI;CAMd;AAGD,eAAO,MAAM,iBAAiB,mBAA0B,CAAC;AAGzD,YAAY,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,CAAC"}
@@ -0,0 +1,194 @@
1
+ /**
2
+ * Middleware System
3
+ * Request/Response middleware pipeline
4
+ */
5
+ import { logger } from "../utils/logger.js";
6
+ import { RateLimiter } from "../security/validation.js";
7
+ import { configManager } from "../config/index.js";
8
+ /**
9
+ * Middleware Manager
10
+ * Manages request/response middleware pipeline
11
+ */
12
+ export class MiddlewareManager {
13
+ registry = {
14
+ before: [],
15
+ after: [],
16
+ error: [],
17
+ };
18
+ rateLimiter;
19
+ constructor() {
20
+ const policy = configManager.getConfig().securityPolicy;
21
+ this.rateLimiter = new RateLimiter(policy);
22
+ this.registerDefaultMiddleware();
23
+ }
24
+ /**
25
+ * Register default middleware
26
+ */
27
+ registerDefaultMiddleware() {
28
+ // Authentication middleware (FIRST - runs before all others)
29
+ this.useBefore(async (context, next) => {
30
+ const config = configManager.getConfig();
31
+ if (config.auth.enabled) {
32
+ const authToken = context.metadata.authToken;
33
+ if (!authToken) {
34
+ context.error = new Error("Authentication required: authToken not provided");
35
+ return;
36
+ }
37
+ if (!config.auth.tokens.includes(authToken)) {
38
+ context.error = new Error("Authentication failed: invalid token");
39
+ return;
40
+ }
41
+ logger.debug("Authentication successful", {
42
+ requestId: context.requestId,
43
+ tool: context.tool,
44
+ });
45
+ }
46
+ await next();
47
+ });
48
+ // Rate limiting middleware
49
+ this.useBefore(async (context, next) => {
50
+ const config = configManager.getConfig();
51
+ if (config.securityPolicy.rateLimit.enabled) {
52
+ const key = context.metadata.agentId?.toString() || context.requestId;
53
+ const result = this.rateLimiter.isAllowed(key);
54
+ if (!result.allowed) {
55
+ context.error = new Error(`Rate limit exceeded. Retry after ${result.retryAfter} seconds`);
56
+ return;
57
+ }
58
+ }
59
+ await next();
60
+ });
61
+ // Request validation middleware
62
+ this.useBefore(async (context, next) => {
63
+ // Validate required parameters
64
+ if (!context.tool) {
65
+ context.error = new Error("Tool name is required");
66
+ return;
67
+ }
68
+ await next();
69
+ });
70
+ // Logging middleware
71
+ this.useAfter(async (context, next) => {
72
+ const duration = Date.now() - context.startTime;
73
+ logger.info("Tool execution completed", {
74
+ requestId: context.requestId,
75
+ tool: context.tool,
76
+ duration,
77
+ success: context.result?.success ?? false,
78
+ });
79
+ await next();
80
+ });
81
+ // Error handling middleware
82
+ this.useError(async (context, next) => {
83
+ if (context.error) {
84
+ logger.error("Tool execution error", {
85
+ requestId: context.requestId,
86
+ tool: context.tool,
87
+ error: context.error.message,
88
+ stack: context.error.stack,
89
+ });
90
+ }
91
+ await next();
92
+ });
93
+ }
94
+ /**
95
+ * Register before middleware
96
+ */
97
+ useBefore(middleware) {
98
+ this.registry.before.push(middleware);
99
+ }
100
+ /**
101
+ * Register after middleware
102
+ */
103
+ useAfter(middleware) {
104
+ this.registry.after.push(middleware);
105
+ }
106
+ /**
107
+ * Register error middleware
108
+ */
109
+ useError(middleware) {
110
+ this.registry.error.push(middleware);
111
+ }
112
+ /**
113
+ * Execute middleware pipeline
114
+ */
115
+ async execute(tool, params, handler, metadata = {}) {
116
+ const requestId = `${Date.now()}-${Math.random().toString(36).substr(2, 9)}`;
117
+ const context = {
118
+ requestId,
119
+ tool,
120
+ params,
121
+ metadata,
122
+ startTime: Date.now(),
123
+ };
124
+ try {
125
+ // Execute before middleware
126
+ await this.runMiddlewares(this.registry.before, context);
127
+ // Check if error was set by middleware
128
+ if (context.error) {
129
+ throw context.error;
130
+ }
131
+ // Execute handler
132
+ context.result = await handler();
133
+ // Execute after middleware
134
+ await this.runMiddlewares(this.registry.after, context);
135
+ return context.result;
136
+ }
137
+ catch (error) {
138
+ context.error = error instanceof Error ? error : new Error(String(error));
139
+ // Execute error middleware
140
+ await this.runMiddlewares(this.registry.error, context);
141
+ // Return error response
142
+ return {
143
+ success: false,
144
+ error: {
145
+ code: "MIDDLEWARE_ERROR",
146
+ message: context.error.message,
147
+ details: { tool, params },
148
+ },
149
+ meta: {
150
+ timestamp: new Date().toISOString(),
151
+ requestId,
152
+ duration: Date.now() - context.startTime,
153
+ },
154
+ };
155
+ }
156
+ }
157
+ /**
158
+ * Run array of middlewares
159
+ */
160
+ async runMiddlewares(middlewares, context) {
161
+ let index = 0;
162
+ const next = async () => {
163
+ if (index >= middlewares.length)
164
+ return;
165
+ const middleware = middlewares[index++];
166
+ if (middleware) {
167
+ await middleware(context, next);
168
+ }
169
+ };
170
+ await next();
171
+ }
172
+ /**
173
+ * Get middleware count
174
+ */
175
+ getMiddlewareCount() {
176
+ return {
177
+ before: this.registry.before.length,
178
+ after: this.registry.after.length,
179
+ error: this.registry.error.length,
180
+ };
181
+ }
182
+ /**
183
+ * Clear all middleware
184
+ */
185
+ clear() {
186
+ this.registry.before = [];
187
+ this.registry.after = [];
188
+ this.registry.error = [];
189
+ this.registerDefaultMiddleware();
190
+ }
191
+ }
192
+ // Export singleton instance
193
+ export const middlewareManager = new MiddlewareManager();
194
+ //# sourceMappingURL=middleware.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"middleware.js","sourceRoot":"","sources":["../../src/core/middleware.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,86 @@
1
+ /**
2
+ * Plugin System
3
+ * Extensible plugin architecture for custom tools and agents
4
+ */
5
+ interface PluginManifest {
6
+ id: string;
7
+ name: string;
8
+ version: string;
9
+ description: string;
10
+ author: string;
11
+ dependencies?: string[];
12
+ permissions?: string[];
13
+ }
14
+ interface Plugin {
15
+ manifest: PluginManifest;
16
+ initialize: () => Promise<void> | void;
17
+ destroy?: () => Promise<void> | void;
18
+ hooks?: Record<string, PluginHook>;
19
+ }
20
+ type PluginHook<T = unknown, R = unknown> = (data: T) => Promise<R> | R;
21
+ /**
22
+ * Plugin Manager
23
+ * Manages plugin lifecycle and hooks
24
+ */
25
+ export declare class PluginManager {
26
+ private registry;
27
+ /**
28
+ * Register a plugin
29
+ */
30
+ registerPlugin(plugin: Plugin): Promise<boolean>;
31
+ /**
32
+ * Unregister a plugin
33
+ */
34
+ unregisterPlugin(pluginId: string): Promise<boolean>;
35
+ /**
36
+ * Register a hook
37
+ */
38
+ registerHook(name: string, hook: PluginHook): void;
39
+ /**
40
+ * Unregister a hook
41
+ */
42
+ unregisterHook(name: string, hook: PluginHook): void;
43
+ /**
44
+ * Execute hooks
45
+ */
46
+ executeHooks<T, R>(name: string, data: T): Promise<R[]>;
47
+ /**
48
+ * Get plugin by ID
49
+ */
50
+ getPlugin(pluginId: string): Plugin | null;
51
+ /**
52
+ * Get all plugins
53
+ */
54
+ getAllPlugins(): Plugin[];
55
+ /**
56
+ * Check if plugin is registered
57
+ */
58
+ hasPlugin(pluginId: string): boolean;
59
+ /**
60
+ * Get plugin count
61
+ */
62
+ getPluginCount(): number;
63
+ /**
64
+ * Get hook count
65
+ */
66
+ getHookCount(name?: string): number;
67
+ /**
68
+ * Get available hooks
69
+ */
70
+ getAvailableHooks(): string[];
71
+ /**
72
+ * Load plugin from file
73
+ */
74
+ loadPluginFromFile(filePath: string): Promise<boolean>;
75
+ /**
76
+ * Create built-in plugin
77
+ */
78
+ createBuiltinPlugin(id: string, name: string, hooks: Record<string, PluginHook>): Plugin;
79
+ /**
80
+ * Reset plugin manager
81
+ */
82
+ reset(): Promise<void>;
83
+ }
84
+ export declare const pluginManager: PluginManager;
85
+ export type { Plugin, PluginManifest, PluginHook };
86
+ //# sourceMappingURL=plugin-system.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"plugin-system.d.ts","sourceRoot":"","sources":["../../src/core/plugin-system.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAKH,UAAU,cAAc;IACtB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,MAAM,CAAC;IACf,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;IACxB,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;CACxB;AAED,UAAU,MAAM;IACd,QAAQ,EAAE,cAAc,CAAC;IACzB,UAAU,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;IACvC,OAAO,CAAC,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;IACrC,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;CACpC;AAED,KAAK,UAAU,CAAC,CAAC,GAAG,OAAO,EAAE,CAAC,GAAG,OAAO,IAAI,CAAC,IAAI,EAAE,CAAC,KAAK,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;AAOxE;;;GAGG;AACH,qBAAa,aAAa;IACxB,OAAO,CAAC,QAAQ,CAGd;IAEF;;OAEG;IACG,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAsDtD;;OAEG;IACG,gBAAgB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAoD1D;;OAEG;IACH,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,UAAU,GAAG,IAAI;IAMlD;;OAEG;IACH,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,UAAU,GAAG,IAAI;IAUpD;;OAEG;IACG,YAAY,CAAC,CAAC,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,GAAG,OAAO,CAAC,CAAC,EAAE,CAAC;IAoB7D;;OAEG;IACH,SAAS,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI;IAI1C;;OAEG;IACH,aAAa,IAAI,MAAM,EAAE;IAIzB;;OAEG;IACH,SAAS,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO;IAIpC;;OAEG;IACH,cAAc,IAAI,MAAM;IAIxB;;OAEG;IACH,YAAY,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,MAAM;IAYnC;;OAEG;IACH,iBAAiB,IAAI,MAAM,EAAE;IAI7B;;OAEG;IACG,kBAAkB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAoB5D;;OAEG;IACH,mBAAmB,CACjB,EAAE,EAAE,MAAM,EACV,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,GAChC,MAAM;IAgBT;;OAEG;IACG,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;CAW7B;AAGD,eAAO,MAAM,aAAa,eAAsB,CAAC;AAGjD,YAAY,EAAE,MAAM,EAAE,cAAc,EAAE,UAAU,EAAE,CAAC"}