@ggakila/agentx-framework 0.1.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 (228) hide show
  1. package/CHANGELOG.md +107 -0
  2. package/LICENSE +21 -0
  3. package/README.md +335 -0
  4. package/dist/agent/Agent.d.ts +110 -0
  5. package/dist/agent/Agent.d.ts.map +1 -0
  6. package/dist/agent/Agent.js +291 -0
  7. package/dist/agent/Agent.js.map +1 -0
  8. package/dist/agent/index.d.ts +5 -0
  9. package/dist/agent/index.d.ts.map +1 -0
  10. package/dist/agent/index.js +11 -0
  11. package/dist/agent/index.js.map +1 -0
  12. package/dist/cli/CLI.d.ts +74 -0
  13. package/dist/cli/CLI.d.ts.map +1 -0
  14. package/dist/cli/CLI.js +255 -0
  15. package/dist/cli/CLI.js.map +1 -0
  16. package/dist/cli/InteractiveSetup.d.ts +104 -0
  17. package/dist/cli/InteractiveSetup.d.ts.map +1 -0
  18. package/dist/cli/InteractiveSetup.js +2225 -0
  19. package/dist/cli/InteractiveSetup.js.map +1 -0
  20. package/dist/cli/bin.d.ts +7 -0
  21. package/dist/cli/bin.d.ts.map +1 -0
  22. package/dist/cli/bin.js +35 -0
  23. package/dist/cli/bin.js.map +1 -0
  24. package/dist/cli/commands/ProjectCommands.d.ts +23 -0
  25. package/dist/cli/commands/ProjectCommands.d.ts.map +1 -0
  26. package/dist/cli/commands/ProjectCommands.js +504 -0
  27. package/dist/cli/commands/ProjectCommands.js.map +1 -0
  28. package/dist/cli/index.d.ts +7 -0
  29. package/dist/cli/index.d.ts.map +1 -0
  30. package/dist/cli/index.js +21 -0
  31. package/dist/cli/index.js.map +1 -0
  32. package/dist/credential/CredentialManager.d.ts +112 -0
  33. package/dist/credential/CredentialManager.d.ts.map +1 -0
  34. package/dist/credential/CredentialManager.js +343 -0
  35. package/dist/credential/CredentialManager.js.map +1 -0
  36. package/dist/credential/OAuth2Manager.d.ts +206 -0
  37. package/dist/credential/OAuth2Manager.d.ts.map +1 -0
  38. package/dist/credential/OAuth2Manager.js +463 -0
  39. package/dist/credential/OAuth2Manager.js.map +1 -0
  40. package/dist/credential/index.d.ts +6 -0
  41. package/dist/credential/index.d.ts.map +1 -0
  42. package/dist/credential/index.js +16 -0
  43. package/dist/credential/index.js.map +1 -0
  44. package/dist/error/ErrorHandler.d.ts +74 -0
  45. package/dist/error/ErrorHandler.d.ts.map +1 -0
  46. package/dist/error/ErrorHandler.js +279 -0
  47. package/dist/error/ErrorHandler.js.map +1 -0
  48. package/dist/index.d.ts +30 -0
  49. package/dist/index.d.ts.map +1 -0
  50. package/dist/index.js +100 -0
  51. package/dist/index.js.map +1 -0
  52. package/dist/integrations/DatabaseTool.d.ts +149 -0
  53. package/dist/integrations/DatabaseTool.d.ts.map +1 -0
  54. package/dist/integrations/DatabaseTool.js +900 -0
  55. package/dist/integrations/DatabaseTool.js.map +1 -0
  56. package/dist/integrations/EmailTool.d.ts +142 -0
  57. package/dist/integrations/EmailTool.d.ts.map +1 -0
  58. package/dist/integrations/EmailTool.js +259 -0
  59. package/dist/integrations/EmailTool.js.map +1 -0
  60. package/dist/integrations/FileSystemTool.d.ts +153 -0
  61. package/dist/integrations/FileSystemTool.d.ts.map +1 -0
  62. package/dist/integrations/FileSystemTool.js +835 -0
  63. package/dist/integrations/FileSystemTool.js.map +1 -0
  64. package/dist/integrations/GoogleWorkspaceTool.d.ts +125 -0
  65. package/dist/integrations/GoogleWorkspaceTool.d.ts.map +1 -0
  66. package/dist/integrations/GoogleWorkspaceTool.js +765 -0
  67. package/dist/integrations/GoogleWorkspaceTool.js.map +1 -0
  68. package/dist/integrations/HttpTool.d.ts +55 -0
  69. package/dist/integrations/HttpTool.d.ts.map +1 -0
  70. package/dist/integrations/HttpTool.js +209 -0
  71. package/dist/integrations/HttpTool.js.map +1 -0
  72. package/dist/integrations/MessagingTool.d.ts +136 -0
  73. package/dist/integrations/MessagingTool.d.ts.map +1 -0
  74. package/dist/integrations/MessagingTool.js +503 -0
  75. package/dist/integrations/MessagingTool.js.map +1 -0
  76. package/dist/integrations/SchedulerTool.d.ts +147 -0
  77. package/dist/integrations/SchedulerTool.d.ts.map +1 -0
  78. package/dist/integrations/SchedulerTool.js +471 -0
  79. package/dist/integrations/SchedulerTool.js.map +1 -0
  80. package/dist/integrations/WebhookTool.d.ts +97 -0
  81. package/dist/integrations/WebhookTool.d.ts.map +1 -0
  82. package/dist/integrations/WebhookTool.js +351 -0
  83. package/dist/integrations/WebhookTool.js.map +1 -0
  84. package/dist/integrations/index.d.ts +13 -0
  85. package/dist/integrations/index.d.ts.map +1 -0
  86. package/dist/integrations/index.js +60 -0
  87. package/dist/integrations/index.js.map +1 -0
  88. package/dist/llm/LLMProvider.d.ts +83 -0
  89. package/dist/llm/LLMProvider.d.ts.map +1 -0
  90. package/dist/llm/LLMProvider.js +370 -0
  91. package/dist/llm/LLMProvider.js.map +1 -0
  92. package/dist/llm/index.d.ts +5 -0
  93. package/dist/llm/index.d.ts.map +1 -0
  94. package/dist/llm/index.js +14 -0
  95. package/dist/llm/index.js.map +1 -0
  96. package/dist/payment/PaymentProvider.d.ts +157 -0
  97. package/dist/payment/PaymentProvider.d.ts.map +1 -0
  98. package/dist/payment/PaymentProvider.js +525 -0
  99. package/dist/payment/PaymentProvider.js.map +1 -0
  100. package/dist/payment/index.d.ts +5 -0
  101. package/dist/payment/index.d.ts.map +1 -0
  102. package/dist/payment/index.js +16 -0
  103. package/dist/payment/index.js.map +1 -0
  104. package/dist/plugin/PluginManager.d.ts +156 -0
  105. package/dist/plugin/PluginManager.d.ts.map +1 -0
  106. package/dist/plugin/PluginManager.js +288 -0
  107. package/dist/plugin/PluginManager.js.map +1 -0
  108. package/dist/plugin/index.d.ts +5 -0
  109. package/dist/plugin/index.d.ts.map +1 -0
  110. package/dist/plugin/index.js +10 -0
  111. package/dist/plugin/index.js.map +1 -0
  112. package/dist/runtime/AgentXRuntime.d.ts +90 -0
  113. package/dist/runtime/AgentXRuntime.d.ts.map +1 -0
  114. package/dist/runtime/AgentXRuntime.js +469 -0
  115. package/dist/runtime/AgentXRuntime.js.map +1 -0
  116. package/dist/security/SecurityManager.d.ts +245 -0
  117. package/dist/security/SecurityManager.d.ts.map +1 -0
  118. package/dist/security/SecurityManager.js +512 -0
  119. package/dist/security/SecurityManager.js.map +1 -0
  120. package/dist/security/index.d.ts +5 -0
  121. package/dist/security/index.d.ts.map +1 -0
  122. package/dist/security/index.js +14 -0
  123. package/dist/security/index.js.map +1 -0
  124. package/dist/tool/ToolRegistry.d.ts +58 -0
  125. package/dist/tool/ToolRegistry.d.ts.map +1 -0
  126. package/dist/tool/ToolRegistry.js +173 -0
  127. package/dist/tool/ToolRegistry.js.map +1 -0
  128. package/dist/tool/ToolValidator.d.ts +41 -0
  129. package/dist/tool/ToolValidator.d.ts.map +1 -0
  130. package/dist/tool/ToolValidator.js +158 -0
  131. package/dist/tool/ToolValidator.js.map +1 -0
  132. package/dist/tool/index.d.ts +6 -0
  133. package/dist/tool/index.d.ts.map +1 -0
  134. package/dist/tool/index.js +11 -0
  135. package/dist/tool/index.js.map +1 -0
  136. package/dist/transport/BaseTransport.d.ts +66 -0
  137. package/dist/transport/BaseTransport.d.ts.map +1 -0
  138. package/dist/transport/BaseTransport.js +103 -0
  139. package/dist/transport/BaseTransport.js.map +1 -0
  140. package/dist/transport/HttpTransport.d.ts +41 -0
  141. package/dist/transport/HttpTransport.d.ts.map +1 -0
  142. package/dist/transport/HttpTransport.js +160 -0
  143. package/dist/transport/HttpTransport.js.map +1 -0
  144. package/dist/transport/LocalTransport.d.ts +40 -0
  145. package/dist/transport/LocalTransport.d.ts.map +1 -0
  146. package/dist/transport/LocalTransport.js +157 -0
  147. package/dist/transport/LocalTransport.js.map +1 -0
  148. package/dist/transport/QueueTransport.d.ts +63 -0
  149. package/dist/transport/QueueTransport.d.ts.map +1 -0
  150. package/dist/transport/QueueTransport.js +194 -0
  151. package/dist/transport/QueueTransport.js.map +1 -0
  152. package/dist/transport/StdioTransport.d.ts +51 -0
  153. package/dist/transport/StdioTransport.d.ts.map +1 -0
  154. package/dist/transport/StdioTransport.js +216 -0
  155. package/dist/transport/StdioTransport.js.map +1 -0
  156. package/dist/transport/TransportFactory.d.ts +35 -0
  157. package/dist/transport/TransportFactory.d.ts.map +1 -0
  158. package/dist/transport/TransportFactory.js +100 -0
  159. package/dist/transport/TransportFactory.js.map +1 -0
  160. package/dist/transport/index.d.ts +10 -0
  161. package/dist/transport/index.d.ts.map +1 -0
  162. package/dist/transport/index.js +19 -0
  163. package/dist/transport/index.js.map +1 -0
  164. package/dist/types/agent.d.ts +66 -0
  165. package/dist/types/agent.d.ts.map +1 -0
  166. package/dist/types/agent.js +3 -0
  167. package/dist/types/agent.js.map +1 -0
  168. package/dist/types/config.d.ts +60 -0
  169. package/dist/types/config.d.ts.map +1 -0
  170. package/dist/types/config.js +6 -0
  171. package/dist/types/config.js.map +1 -0
  172. package/dist/types/credential.d.ts +38 -0
  173. package/dist/types/credential.d.ts.map +1 -0
  174. package/dist/types/credential.js +3 -0
  175. package/dist/types/credential.js.map +1 -0
  176. package/dist/types/error.d.ts +136 -0
  177. package/dist/types/error.d.ts.map +1 -0
  178. package/dist/types/error.js +223 -0
  179. package/dist/types/error.js.map +1 -0
  180. package/dist/types/index.d.ts +10 -0
  181. package/dist/types/index.d.ts.map +1 -0
  182. package/dist/types/index.js +27 -0
  183. package/dist/types/index.js.map +1 -0
  184. package/dist/types/llm.d.ts +43 -0
  185. package/dist/types/llm.d.ts.map +1 -0
  186. package/dist/types/llm.js +3 -0
  187. package/dist/types/llm.js.map +1 -0
  188. package/dist/types/payment.d.ts +129 -0
  189. package/dist/types/payment.d.ts.map +1 -0
  190. package/dist/types/payment.js +6 -0
  191. package/dist/types/payment.js.map +1 -0
  192. package/dist/types/runtime.d.ts +31 -0
  193. package/dist/types/runtime.d.ts.map +1 -0
  194. package/dist/types/runtime.js +3 -0
  195. package/dist/types/runtime.js.map +1 -0
  196. package/dist/types/tool.d.ts +72 -0
  197. package/dist/types/tool.d.ts.map +1 -0
  198. package/dist/types/tool.js +3 -0
  199. package/dist/types/tool.js.map +1 -0
  200. package/dist/types/transport.d.ts +53 -0
  201. package/dist/types/transport.d.ts.map +1 -0
  202. package/dist/types/transport.js +3 -0
  203. package/dist/types/transport.js.map +1 -0
  204. package/dist/types/workflow.d.ts +72 -0
  205. package/dist/types/workflow.d.ts.map +1 -0
  206. package/dist/types/workflow.js +6 -0
  207. package/dist/types/workflow.js.map +1 -0
  208. package/dist/utils/factory.d.ts +14 -0
  209. package/dist/utils/factory.d.ts.map +1 -0
  210. package/dist/utils/factory.js +146 -0
  211. package/dist/utils/factory.js.map +1 -0
  212. package/dist/workflow/StateManager.d.ts +93 -0
  213. package/dist/workflow/StateManager.d.ts.map +1 -0
  214. package/dist/workflow/StateManager.js +223 -0
  215. package/dist/workflow/StateManager.js.map +1 -0
  216. package/dist/workflow/WorkflowDefinition.d.ts +49 -0
  217. package/dist/workflow/WorkflowDefinition.d.ts.map +1 -0
  218. package/dist/workflow/WorkflowDefinition.js +264 -0
  219. package/dist/workflow/WorkflowDefinition.js.map +1 -0
  220. package/dist/workflow/WorkflowExecutor.d.ts +42 -0
  221. package/dist/workflow/WorkflowExecutor.d.ts.map +1 -0
  222. package/dist/workflow/WorkflowExecutor.js +372 -0
  223. package/dist/workflow/WorkflowExecutor.js.map +1 -0
  224. package/dist/workflow/index.d.ts +7 -0
  225. package/dist/workflow/index.d.ts.map +1 -0
  226. package/dist/workflow/index.js +17 -0
  227. package/dist/workflow/index.js.map +1 -0
  228. package/package.json +122 -0
@@ -0,0 +1,512 @@
1
+ "use strict";
2
+ /**
3
+ * Security Manager
4
+ * Provides comprehensive security features for production
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.HealthCheckManager = exports.CircuitBreaker = exports.RateLimiter = exports.AuditLogger = exports.RBACManager = exports.InputValidator = void 0;
41
+ const crypto = __importStar(require("crypto"));
42
+ /**
43
+ * Input Validator
44
+ * Validates and sanitizes user input
45
+ */
46
+ class InputValidator {
47
+ logger;
48
+ constructor(logger) {
49
+ this.logger = logger;
50
+ }
51
+ /**
52
+ * Sanitize string input
53
+ */
54
+ sanitizeString(input, options = {}) {
55
+ let sanitized = input;
56
+ // Trim whitespace
57
+ sanitized = sanitized.trim();
58
+ // Limit length
59
+ if (options.maxLength && sanitized.length > options.maxLength) {
60
+ sanitized = sanitized.slice(0, options.maxLength);
61
+ }
62
+ // Remove HTML tags unless allowed
63
+ if (!options.allowHtml) {
64
+ sanitized = sanitized.replace(/<[^>]*>/g, '');
65
+ }
66
+ // Remove newlines unless allowed
67
+ if (!options.allowNewlines) {
68
+ sanitized = sanitized.replace(/[\r\n]/g, ' ');
69
+ }
70
+ // Remove null bytes
71
+ sanitized = sanitized.replace(/\0/g, '');
72
+ return sanitized;
73
+ }
74
+ /**
75
+ * Validate email format
76
+ */
77
+ isValidEmail(email) {
78
+ const emailRegex = /^[^\s@]+@[^\s@]+\.[^\s@]+$/;
79
+ return emailRegex.test(email);
80
+ }
81
+ /**
82
+ * Validate URL format
83
+ */
84
+ isValidUrl(url, options = {}) {
85
+ try {
86
+ const parsed = new URL(url);
87
+ if (options.requireHttps && parsed.protocol !== 'https:') {
88
+ return false;
89
+ }
90
+ if (options.allowedProtocols && !options.allowedProtocols.includes(parsed.protocol)) {
91
+ return false;
92
+ }
93
+ return true;
94
+ }
95
+ catch {
96
+ return false;
97
+ }
98
+ }
99
+ /**
100
+ * Validate JSON schema
101
+ */
102
+ validateSchema(data, schema) {
103
+ const errors = [];
104
+ if (typeof schema !== 'object' || schema === null) {
105
+ return { valid: false, errors: ['Invalid schema'] };
106
+ }
107
+ // Basic type validation
108
+ const schemaType = schema.type;
109
+ if (schemaType) {
110
+ const actualType = Array.isArray(data) ? 'array' : typeof data;
111
+ if (actualType !== schemaType) {
112
+ errors.push(`Expected type ${schemaType}, got ${actualType}`);
113
+ }
114
+ }
115
+ // Required fields
116
+ if (schema.required && Array.isArray(schema.required) && typeof data === 'object' && data !== null) {
117
+ for (const field of schema.required) {
118
+ if (!(field in data)) {
119
+ errors.push(`Missing required field: ${field}`);
120
+ }
121
+ }
122
+ }
123
+ return { valid: errors.length === 0, errors };
124
+ }
125
+ /**
126
+ * Escape SQL special characters
127
+ */
128
+ escapeSql(input) {
129
+ return input
130
+ .replace(/'/g, "''")
131
+ .replace(/\\/g, '\\\\')
132
+ .replace(/"/g, '\\"');
133
+ }
134
+ /**
135
+ * Escape shell special characters
136
+ */
137
+ escapeShell(input) {
138
+ return input.replace(/[;&|`$(){}[\]<>\\!#*?~^'"]/g, '\\$&');
139
+ }
140
+ }
141
+ exports.InputValidator = InputValidator;
142
+ class RBACManager {
143
+ roles = new Map();
144
+ logger;
145
+ constructor(logger) {
146
+ this.logger = logger;
147
+ }
148
+ /**
149
+ * Define a role
150
+ */
151
+ defineRole(role) {
152
+ this.roles.set(role.name, role);
153
+ this.logger.debug(`Role defined: ${role.name}`, { permissions: role.permissions });
154
+ }
155
+ /**
156
+ * Get all permissions for a role (including inherited)
157
+ */
158
+ getRolePermissions(roleName, visited = new Set()) {
159
+ if (visited.has(roleName)) {
160
+ return []; // Prevent circular inheritance
161
+ }
162
+ visited.add(roleName);
163
+ const role = this.roles.get(roleName);
164
+ if (!role) {
165
+ return [];
166
+ }
167
+ const permissions = new Set(role.permissions);
168
+ // Add inherited permissions
169
+ if (role.inherits) {
170
+ for (const inheritedRole of role.inherits) {
171
+ const inheritedPermissions = this.getRolePermissions(inheritedRole, visited);
172
+ for (const perm of inheritedPermissions) {
173
+ permissions.add(perm);
174
+ }
175
+ }
176
+ }
177
+ return Array.from(permissions);
178
+ }
179
+ /**
180
+ * Check if user has permission
181
+ */
182
+ hasPermission(user, permission) {
183
+ for (const roleName of user.roles) {
184
+ const permissions = this.getRolePermissions(roleName);
185
+ if (permissions.includes(permission) || permissions.includes('*')) {
186
+ return true;
187
+ }
188
+ // Check wildcard patterns
189
+ for (const perm of permissions) {
190
+ if (perm.endsWith('*')) {
191
+ const prefix = perm.slice(0, -1);
192
+ if (permission.startsWith(prefix)) {
193
+ return true;
194
+ }
195
+ }
196
+ }
197
+ }
198
+ return false;
199
+ }
200
+ /**
201
+ * Get all permissions for a user
202
+ */
203
+ getUserPermissions(user) {
204
+ const permissions = new Set();
205
+ for (const roleName of user.roles) {
206
+ const rolePermissions = this.getRolePermissions(roleName);
207
+ for (const perm of rolePermissions) {
208
+ permissions.add(perm);
209
+ }
210
+ }
211
+ return Array.from(permissions);
212
+ }
213
+ /**
214
+ * List all defined roles
215
+ */
216
+ listRoles() {
217
+ return Array.from(this.roles.values());
218
+ }
219
+ }
220
+ exports.RBACManager = RBACManager;
221
+ class AuditLogger {
222
+ events = [];
223
+ logger;
224
+ maxEvents;
225
+ constructor(logger, maxEvents = 10000) {
226
+ this.logger = logger;
227
+ this.maxEvents = maxEvents;
228
+ }
229
+ /**
230
+ * Log an audit event
231
+ */
232
+ log(event) {
233
+ const auditEvent = {
234
+ ...event,
235
+ id: crypto.randomUUID(),
236
+ timestamp: new Date(),
237
+ };
238
+ this.events.push(auditEvent);
239
+ // Trim old events
240
+ if (this.events.length > this.maxEvents) {
241
+ this.events = this.events.slice(-this.maxEvents);
242
+ }
243
+ // Log to main logger
244
+ const level = event.success ? 'info' : 'warn';
245
+ this.logger[level](`Audit: ${event.action}`, {
246
+ type: event.type,
247
+ userId: event.userId,
248
+ resource: event.resource,
249
+ success: event.success,
250
+ });
251
+ }
252
+ /**
253
+ * Query audit events
254
+ */
255
+ query(filter) {
256
+ let results = this.events;
257
+ if (filter.type) {
258
+ results = results.filter(e => e.type === filter.type);
259
+ }
260
+ if (filter.userId) {
261
+ results = results.filter(e => e.userId === filter.userId);
262
+ }
263
+ if (filter.action) {
264
+ results = results.filter(e => e.action === filter.action);
265
+ }
266
+ if (filter.startTime) {
267
+ results = results.filter(e => e.timestamp >= filter.startTime);
268
+ }
269
+ if (filter.endTime) {
270
+ results = results.filter(e => e.timestamp <= filter.endTime);
271
+ }
272
+ if (filter.success !== undefined) {
273
+ results = results.filter(e => e.success === filter.success);
274
+ }
275
+ if (filter.limit) {
276
+ results = results.slice(-filter.limit);
277
+ }
278
+ return results;
279
+ }
280
+ /**
281
+ * Get recent events
282
+ */
283
+ getRecent(count = 100) {
284
+ return this.events.slice(-count);
285
+ }
286
+ /**
287
+ * Clear all events
288
+ */
289
+ clear() {
290
+ this.events = [];
291
+ }
292
+ }
293
+ exports.AuditLogger = AuditLogger;
294
+ class RateLimiter {
295
+ requests = new Map();
296
+ config;
297
+ logger;
298
+ constructor(config, logger) {
299
+ this.config = config;
300
+ this.logger = logger;
301
+ }
302
+ /**
303
+ * Check if request is allowed
304
+ */
305
+ isAllowed(key) {
306
+ const now = Date.now();
307
+ const windowStart = now - this.config.windowMs;
308
+ // Get existing requests for this key
309
+ let timestamps = this.requests.get(key) || [];
310
+ // Filter to only requests within the window
311
+ timestamps = timestamps.filter(t => t > windowStart);
312
+ // Check if under limit
313
+ if (timestamps.length >= this.config.maxRequests) {
314
+ this.logger.debug(`Rate limit exceeded for ${key}`, {
315
+ requests: timestamps.length,
316
+ limit: this.config.maxRequests,
317
+ });
318
+ return false;
319
+ }
320
+ // Add current request
321
+ timestamps.push(now);
322
+ this.requests.set(key, timestamps);
323
+ return true;
324
+ }
325
+ /**
326
+ * Get remaining requests for a key
327
+ */
328
+ getRemaining(key) {
329
+ const now = Date.now();
330
+ const windowStart = now - this.config.windowMs;
331
+ const timestamps = this.requests.get(key) || [];
332
+ const validRequests = timestamps.filter(t => t > windowStart);
333
+ return Math.max(0, this.config.maxRequests - validRequests.length);
334
+ }
335
+ /**
336
+ * Get time until reset for a key
337
+ */
338
+ getResetTime(key) {
339
+ const timestamps = this.requests.get(key) || [];
340
+ if (timestamps.length === 0) {
341
+ return 0;
342
+ }
343
+ const oldestInWindow = Math.min(...timestamps);
344
+ return Math.max(0, oldestInWindow + this.config.windowMs - Date.now());
345
+ }
346
+ /**
347
+ * Reset rate limit for a key
348
+ */
349
+ reset(key) {
350
+ this.requests.delete(key);
351
+ }
352
+ /**
353
+ * Clear all rate limits
354
+ */
355
+ clear() {
356
+ this.requests.clear();
357
+ }
358
+ }
359
+ exports.RateLimiter = RateLimiter;
360
+ class CircuitBreaker {
361
+ state = 'closed';
362
+ failures = 0;
363
+ successes = 0;
364
+ lastFailureTime;
365
+ config;
366
+ logger;
367
+ constructor(config, logger) {
368
+ this.config = config;
369
+ this.logger = logger;
370
+ }
371
+ /**
372
+ * Execute a function with circuit breaker protection
373
+ */
374
+ async execute(fn) {
375
+ if (this.state === 'open') {
376
+ // Check if we should transition to half-open
377
+ if (this.lastFailureTime &&
378
+ Date.now() - this.lastFailureTime.getTime() > this.config.resetTimeout) {
379
+ this.state = 'half-open';
380
+ this.successes = 0;
381
+ this.logger.info('Circuit breaker transitioning to half-open');
382
+ }
383
+ else {
384
+ throw new Error('Circuit breaker is open');
385
+ }
386
+ }
387
+ try {
388
+ const result = await fn();
389
+ this.onSuccess();
390
+ return result;
391
+ }
392
+ catch (error) {
393
+ this.onFailure();
394
+ throw error;
395
+ }
396
+ }
397
+ /**
398
+ * Record a success
399
+ */
400
+ onSuccess() {
401
+ this.failures = 0;
402
+ if (this.state === 'half-open') {
403
+ this.successes++;
404
+ if (this.successes >= this.config.halfOpenRequests) {
405
+ this.state = 'closed';
406
+ this.logger.info('Circuit breaker closed');
407
+ }
408
+ }
409
+ }
410
+ /**
411
+ * Record a failure
412
+ */
413
+ onFailure() {
414
+ this.failures++;
415
+ this.lastFailureTime = new Date();
416
+ if (this.state === 'half-open') {
417
+ this.state = 'open';
418
+ this.logger.warn('Circuit breaker opened (half-open failure)');
419
+ }
420
+ else if (this.failures >= this.config.failureThreshold) {
421
+ this.state = 'open';
422
+ this.logger.warn('Circuit breaker opened', { failures: this.failures });
423
+ }
424
+ }
425
+ /**
426
+ * Get current state
427
+ */
428
+ getState() {
429
+ return this.state;
430
+ }
431
+ /**
432
+ * Force reset the circuit breaker
433
+ */
434
+ reset() {
435
+ this.state = 'closed';
436
+ this.failures = 0;
437
+ this.successes = 0;
438
+ this.lastFailureTime = undefined;
439
+ }
440
+ }
441
+ exports.CircuitBreaker = CircuitBreaker;
442
+ class HealthCheckManager {
443
+ checks = new Map();
444
+ logger;
445
+ constructor(logger) {
446
+ this.logger = logger;
447
+ }
448
+ /**
449
+ * Register a health check
450
+ */
451
+ register(check) {
452
+ this.checks.set(check.name, check);
453
+ }
454
+ /**
455
+ * Unregister a health check
456
+ */
457
+ unregister(name) {
458
+ this.checks.delete(name);
459
+ }
460
+ /**
461
+ * Run all health checks
462
+ */
463
+ async check() {
464
+ const results = {};
465
+ let allHealthy = true;
466
+ for (const [name, check] of this.checks) {
467
+ const start = Date.now();
468
+ try {
469
+ const healthy = await check.check();
470
+ results[name] = {
471
+ healthy,
472
+ latency: Date.now() - start,
473
+ };
474
+ if (!healthy && check.critical) {
475
+ allHealthy = false;
476
+ }
477
+ }
478
+ catch (error) {
479
+ results[name] = {
480
+ healthy: false,
481
+ latency: Date.now() - start,
482
+ error: error.message,
483
+ };
484
+ if (check.critical) {
485
+ allHealthy = false;
486
+ }
487
+ }
488
+ }
489
+ const status = {
490
+ healthy: allHealthy,
491
+ checks: results,
492
+ timestamp: new Date(),
493
+ };
494
+ this.logger.debug('Health check completed', { healthy: allHealthy });
495
+ return status;
496
+ }
497
+ /**
498
+ * Check if system is ready
499
+ */
500
+ async isReady() {
501
+ const status = await this.check();
502
+ return status.healthy;
503
+ }
504
+ /**
505
+ * Check if system is alive (basic liveness)
506
+ */
507
+ isAlive() {
508
+ return true;
509
+ }
510
+ }
511
+ exports.HealthCheckManager = HealthCheckManager;
512
+ //# sourceMappingURL=SecurityManager.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SecurityManager.js","sourceRoot":"","sources":["../../src/security/SecurityManager.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Security Module Exports
3
+ */
4
+ export { InputValidator, RBACManager, Role, User, AuditLogger, AuditEvent, RateLimiter, RateLimitConfig, CircuitBreaker, CircuitBreakerConfig, CircuitState, HealthCheckManager, HealthCheck, HealthStatus, } from './SecurityManager';
5
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/security/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EACL,cAAc,EACd,WAAW,EACX,IAAI,EACJ,IAAI,EACJ,WAAW,EACX,UAAU,EACV,WAAW,EACX,eAAe,EACf,cAAc,EACd,oBAAoB,EACpB,YAAY,EACZ,kBAAkB,EAClB,WAAW,EACX,YAAY,GACb,MAAM,mBAAmB,CAAC"}
@@ -0,0 +1,14 @@
1
+ "use strict";
2
+ /**
3
+ * Security Module Exports
4
+ */
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.HealthCheckManager = exports.CircuitBreaker = exports.RateLimiter = exports.AuditLogger = exports.RBACManager = exports.InputValidator = void 0;
7
+ var SecurityManager_1 = require("./SecurityManager");
8
+ Object.defineProperty(exports, "InputValidator", { enumerable: true, get: function () { return SecurityManager_1.InputValidator; } });
9
+ Object.defineProperty(exports, "RBACManager", { enumerable: true, get: function () { return SecurityManager_1.RBACManager; } });
10
+ Object.defineProperty(exports, "AuditLogger", { enumerable: true, get: function () { return SecurityManager_1.AuditLogger; } });
11
+ Object.defineProperty(exports, "RateLimiter", { enumerable: true, get: function () { return SecurityManager_1.RateLimiter; } });
12
+ Object.defineProperty(exports, "CircuitBreaker", { enumerable: true, get: function () { return SecurityManager_1.CircuitBreaker; } });
13
+ Object.defineProperty(exports, "HealthCheckManager", { enumerable: true, get: function () { return SecurityManager_1.HealthCheckManager; } });
14
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/security/index.ts"],"names":[],"mappings":";AAAA;;GAEG;;;AAEH,qDAe2B;AAdzB,iHAAA,cAAc,OAAA;AACd,8GAAA,WAAW,OAAA;AAGX,8GAAA,WAAW,OAAA;AAEX,8GAAA,WAAW,OAAA;AAEX,iHAAA,cAAc,OAAA;AAGd,qHAAA,kBAAkB,OAAA"}
@@ -0,0 +1,58 @@
1
+ /**
2
+ * Tool Registry Implementation
3
+ */
4
+ import { EventEmitter } from 'events';
5
+ import { ToolSpec, ToolRegistry as IToolRegistry, RegisteredTool, ToolQuery, Logger } from '../types/tool';
6
+ import { Transport } from '../types/transport';
7
+ export declare class ToolRegistry extends EventEmitter implements IToolRegistry {
8
+ tools: Map<string, RegisteredTool>;
9
+ private validator;
10
+ private logger;
11
+ constructor(logger: Logger);
12
+ /**
13
+ * Register a new tool
14
+ */
15
+ register(spec: ToolSpec, transport: Transport): Promise<void>;
16
+ /**
17
+ * Unregister a tool
18
+ */
19
+ unregister(name: string): Promise<void>;
20
+ /**
21
+ * Get a registered tool by name
22
+ */
23
+ get(name: string): Promise<RegisteredTool | null>;
24
+ /**
25
+ * List all registered tools
26
+ */
27
+ list(): Promise<RegisteredTool[]>;
28
+ /**
29
+ * Search for tools matching a query
30
+ */
31
+ search(query: ToolQuery): Promise<RegisteredTool[]>;
32
+ /**
33
+ * Update tool usage statistics
34
+ */
35
+ recordUsage(name: string): void;
36
+ /**
37
+ * Update tool health status
38
+ */
39
+ updateHealthStatus(name: string): Promise<void>;
40
+ /**
41
+ * Get tools by health status
42
+ */
43
+ getByHealthStatus(status: 'healthy' | 'unhealthy' | 'unknown'): RegisteredTool[];
44
+ /**
45
+ * Get tool statistics
46
+ */
47
+ getStatistics(): ToolRegistryStats;
48
+ private getCategoryCounts;
49
+ }
50
+ export interface ToolRegistryStats {
51
+ totalTools: number;
52
+ healthyTools: number;
53
+ unhealthyTools: number;
54
+ unknownTools: number;
55
+ totalUsage: number;
56
+ categoryCounts: Record<string, number>;
57
+ }
58
+ //# sourceMappingURL=ToolRegistry.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ToolRegistry.d.ts","sourceRoot":"","sources":["../../src/tool/ToolRegistry.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AACtC,OAAO,EACL,QAAQ,EACR,YAAY,IAAI,aAAa,EAC7B,cAAc,EACd,SAAS,EACT,MAAM,EACP,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAI/C,qBAAa,YAAa,SAAQ,YAAa,YAAW,aAAa;IACrE,KAAK,EAAE,GAAG,CAAC,MAAM,EAAE,cAAc,CAAC,CAAa;IAC/C,OAAO,CAAC,SAAS,CAAgB;IACjC,OAAO,CAAC,MAAM,CAAS;gBAEX,MAAM,EAAE,MAAM;IAM1B;;OAEG;IACG,QAAQ,CAAC,IAAI,EAAE,QAAQ,EAAE,SAAS,EAAE,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC;IA0CnE;;OAEG;IACG,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAwB7C;;OAEG;IACG,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,GAAG,IAAI,CAAC;IAIvD;;OAEG;IACG,IAAI,IAAI,OAAO,CAAC,cAAc,EAAE,CAAC;IAIvC;;OAEG;IACG,MAAM,CAAC,KAAK,EAAE,SAAS,GAAG,OAAO,CAAC,cAAc,EAAE,CAAC;IAsCzD;;OAEG;IACH,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAQ/B;;OAEG;IACG,kBAAkB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAerD;;OAEG;IACH,iBAAiB,CAAC,MAAM,EAAE,SAAS,GAAG,WAAW,GAAG,SAAS,GAAG,cAAc,EAAE;IAMhF;;OAEG;IACH,aAAa,IAAI,iBAAiB;IAalC,OAAO,CAAC,iBAAiB;CAU1B;AAED,MAAM,WAAW,iBAAiB;IAChC,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,MAAM,CAAC;IACrB,cAAc,EAAE,MAAM,CAAC;IACvB,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,EAAE,MAAM,CAAC;IACnB,cAAc,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACxC"}