@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 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,87 @@
1
+ /**
2
+ * Security Validation Layer
3
+ * Path validation, command validation, and security policies
4
+ */
5
+ import type { SecurityPolicy } from "../types/index.js";
6
+ export declare const DEFAULT_SECURITY_POLICY: SecurityPolicy;
7
+ /**
8
+ * Validate file path for security
9
+ *
10
+ * NOTE: To properly handle symlinks, this function should be async and use realpath.
11
+ * For now, symlink bypass attempts are mitigated by checking for common patterns.
12
+ * TODO: Convert to async function and use fs.realpath for production use.
13
+ */
14
+ export declare function validatePath(path: string, policy?: SecurityPolicy): {
15
+ valid: boolean;
16
+ error?: string;
17
+ resolvedPath?: string;
18
+ };
19
+ /**
20
+ * Validate command for security
21
+ */
22
+ export declare function validateCommand(command: string, policy?: SecurityPolicy): {
23
+ valid: boolean;
24
+ error?: string;
25
+ sanitized?: string;
26
+ };
27
+ /**
28
+ * Rate limiter implementation with memory leak protection
29
+ */
30
+ export declare class RateLimiter {
31
+ private requests;
32
+ private policy;
33
+ private cleanupTimer;
34
+ private readonly CLEANUP_INTERVAL;
35
+ private readonly MAX_KEYS;
36
+ private readonly MAX_ENTRIES_PER_KEY;
37
+ constructor(policy?: SecurityPolicy);
38
+ /**
39
+ * Start periodic cleanup of old entries
40
+ */
41
+ private startCleanupTimer;
42
+ /**
43
+ * Stop cleanup timer
44
+ */
45
+ stopCleanupTimer(): void;
46
+ /**
47
+ * Clean up old entries to prevent memory leaks
48
+ */
49
+ private cleanup;
50
+ /**
51
+ * Check if request is allowed
52
+ */
53
+ isAllowed(key: string): {
54
+ allowed: boolean;
55
+ retryAfter?: number;
56
+ };
57
+ /**
58
+ * Reset rate limit for a key
59
+ */
60
+ reset(key: string): void;
61
+ /**
62
+ * Get current status
63
+ */
64
+ getStatus(key: string): {
65
+ requestsInMinute: number;
66
+ requestsInHour: number;
67
+ remainingInMinute: number;
68
+ remainingInHour: number;
69
+ };
70
+ }
71
+ /**
72
+ * Content validation for inputs
73
+ */
74
+ export declare function validateContent(content: string, options?: {
75
+ maxLength?: number;
76
+ allowedTags?: string[];
77
+ sanitizeHtml?: boolean;
78
+ }): {
79
+ valid: boolean;
80
+ error?: string;
81
+ sanitized?: string;
82
+ };
83
+ /**
84
+ * API Key masking for logging
85
+ */
86
+ export declare function maskSensitiveData(data: Record<string, unknown>): Record<string, unknown>;
87
+ //# sourceMappingURL=validation.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validation.d.ts","sourceRoot":"","sources":["../../src/security/validation.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAKH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AA6BxD,eAAO,MAAM,uBAAuB,EAAE,cAiDrC,CAAC;AAqBF;;;;;;GAMG;AACH,wBAAgB,YAAY,CAC1B,IAAI,EAAE,MAAM,EACZ,MAAM,GAAE,cAAwC,GAC/C;IAAE,KAAK,EAAE,OAAO,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,YAAY,CAAC,EAAE,MAAM,CAAA;CAAE,CAsF3D;AAED;;GAEG;AACH,wBAAgB,eAAe,CAC7B,OAAO,EAAE,MAAM,EACf,MAAM,GAAE,cAAwC,GAC/C;IAAE,KAAK,EAAE,OAAO,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,SAAS,CAAC,EAAE,MAAM,CAAA;CAAE,CA8DxD;AAkBD;;GAEG;AACH,qBAAa,WAAW;IACtB,OAAO,CAAC,QAAQ,CAAoC;IACpD,OAAO,CAAC,MAAM,CAAiB;IAC/B,OAAO,CAAC,YAAY,CAA+B;IACnD,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAiB;IAClD,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAS;IAClC,OAAO,CAAC,QAAQ,CAAC,mBAAmB,CAAQ;gBAEhC,MAAM,GAAE,cAAwC;IAK5D;;OAEG;IACH,OAAO,CAAC,iBAAiB;IAQzB;;OAEG;IACH,gBAAgB,IAAI,IAAI;IAOxB;;OAEG;IACH,OAAO,CAAC,OAAO;IA4Bf;;OAEG;IACH,SAAS,CAAC,GAAG,EAAE,MAAM,GAAG;QAAE,OAAO,EAAE,OAAO,CAAC;QAAC,UAAU,CAAC,EAAE,MAAM,CAAA;KAAE;IAgEjE;;OAEG;IACH,KAAK,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI;IAIxB;;OAEG;IACH,SAAS,CAAC,GAAG,EAAE,MAAM,GAAG;QACtB,gBAAgB,EAAE,MAAM,CAAC;QACzB,cAAc,EAAE,MAAM,CAAC;QACvB,iBAAiB,EAAE,MAAM,CAAC;QAC1B,eAAe,EAAE,MAAM,CAAC;KACzB;CAuBF;AAED;;GAEG;AACH,wBAAgB,eAAe,CAC7B,OAAO,EAAE,MAAM,EACf,OAAO,GAAE;IACP,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;IACvB,YAAY,CAAC,EAAE,OAAO,CAAC;CACnB,GACL;IAAE,KAAK,EAAE,OAAO,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,SAAS,CAAC,EAAE,MAAM,CAAA;CAAE,CA0CxD;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAC/B,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC5B,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAgCzB"}
@@ -0,0 +1,465 @@
1
+ /**
2
+ * Security Validation Layer
3
+ * Path validation, command validation, and security policies
4
+ */
5
+ import { minimatch } from "minimatch";
6
+ import { resolve, normalize, isAbsolute } from "path";
7
+ import { logSecurityEvent } from "../utils/logger.js";
8
+ // Dangerous command patterns (case-insensitive)
9
+ const DANGEROUS_PATTERNS = [
10
+ /rm\s+-rf\s+\//i,
11
+ /rm\s+-rf\s+~\//i,
12
+ /rm\s+-rf\s+\.\.\//i,
13
+ /format\s+/i,
14
+ /mkfs\./i,
15
+ /dd\s+if=/i,
16
+ /:\(\)\{\s*:\|:\s*\&\s*\};/i, // Fork bomb
17
+ />\s*\/dev\/null/i,
18
+ /curl\s+.*\s*\|\s*sh/i,
19
+ /wget\s+.*\s*\|\s*sh/i,
20
+ /eval\s*\(/i,
21
+ /exec\s*\(/i,
22
+ /system\s*\(/i,
23
+ /\$\(.*\)/i, // Command substitution
24
+ /`.*`/i, // Backtick command substitution
25
+ /\|\s*sh/i, // Pipe to shell
26
+ /\|\s*bash/i, // Pipe to bash
27
+ /base64\s+-d/i, // Base64 decode
28
+ /python.*-c/i, // Python inline code
29
+ /perl.*-e/i, // Perl inline code
30
+ /ruby.*-e/i, // Ruby inline code
31
+ /node.*-e/i, // Node.js inline code
32
+ ];
33
+ // Default security policy
34
+ export const DEFAULT_SECURITY_POLICY = {
35
+ id: "default",
36
+ name: "Default Security Policy",
37
+ pathValidation: {
38
+ enabled: true,
39
+ allowedPaths: [process.cwd(), `${process.env.HOME}/.smartagent`],
40
+ blockedPaths: [
41
+ "/",
42
+ "/bin",
43
+ "/sbin",
44
+ "/usr/bin",
45
+ "/usr/sbin",
46
+ "/etc",
47
+ "/var",
48
+ "/sys",
49
+ "/proc",
50
+ "/dev",
51
+ "/boot",
52
+ "/lib",
53
+ "/lib64",
54
+ "/usr/lib",
55
+ "/usr/lib64",
56
+ ],
57
+ },
58
+ commandValidation: {
59
+ enabled: true,
60
+ whitelist: [],
61
+ blacklist: [
62
+ "rm -rf /",
63
+ "format",
64
+ "mkfs",
65
+ "dd",
66
+ "fdisk",
67
+ "mkfs.ext4",
68
+ "mkfs.ntfs",
69
+ "mkfs.ext3",
70
+ "mkfs.vfat",
71
+ "parted",
72
+ "gparted",
73
+ "hdparm",
74
+ "badblocks",
75
+ ],
76
+ dangerousPatterns: DANGEROUS_PATTERNS,
77
+ },
78
+ rateLimit: {
79
+ enabled: true,
80
+ maxRequestsPerMinute: 50,
81
+ maxRequestsPerHour: 1000,
82
+ },
83
+ };
84
+ /**
85
+ * Normalize path for comparison
86
+ */
87
+ function normalizePathForComparison(path) {
88
+ // Decode URL encoding
89
+ let decoded = path;
90
+ try {
91
+ decoded = decodeURIComponent(path);
92
+ }
93
+ catch {
94
+ // If decoding fails, use original
95
+ }
96
+ // Normalize unicode
97
+ decoded = decoded.normalize("NFC");
98
+ // Convert to lowercase for case-insensitive comparison
99
+ return decoded.toLowerCase();
100
+ }
101
+ /**
102
+ * Validate file path for security
103
+ *
104
+ * NOTE: To properly handle symlinks, this function should be async and use realpath.
105
+ * For now, symlink bypass attempts are mitigated by checking for common patterns.
106
+ * TODO: Convert to async function and use fs.realpath for production use.
107
+ */
108
+ export function validatePath(path, policy = DEFAULT_SECURITY_POLICY) {
109
+ if (!policy.pathValidation.enabled) {
110
+ return { valid: true, resolvedPath: resolve(path) };
111
+ }
112
+ // Check for null bytes
113
+ if (path.includes("\x00")) {
114
+ logSecurityEvent("Path validation failed - null byte injection", "error", { path });
115
+ return { valid: false, error: `Path contains null bytes` };
116
+ }
117
+ // Resolve to absolute path
118
+ let resolvedPath = isAbsolute(path) ? normalize(path) : resolve(path);
119
+ // Basic symlink detection (paths containing common symlink indicators)
120
+ // Full protection requires async realpath() - see TODO above
121
+ const suspiciousPatterns = [/\->/, /symlink/, /\.lnk$/i];
122
+ for (const pattern of suspiciousPatterns) {
123
+ if (pattern.test(path)) {
124
+ logSecurityEvent("Path validation warning - possible symlink detected", "warn", {
125
+ path,
126
+ pattern: pattern.toString(),
127
+ });
128
+ }
129
+ }
130
+ // Check for path traversal using normalized comparison
131
+ const normalizedInput = normalizePathForComparison(path);
132
+ const normalizedResolved = normalizePathForComparison(resolvedPath);
133
+ // Check for traversal patterns
134
+ const traversalPatterns = [
135
+ /\.\.\//,
136
+ /\.\.\\/,
137
+ /%2e%2e%2f/i,
138
+ /%2e%2e\//i,
139
+ /\.\.\/%2f/i,
140
+ /%252e%252e%252f/i,
141
+ ];
142
+ for (const pattern of traversalPatterns) {
143
+ if (pattern.test(normalizedInput)) {
144
+ logSecurityEvent("Path validation failed - traversal attempt", "error", {
145
+ path,
146
+ resolvedPath,
147
+ pattern: pattern.toString(),
148
+ });
149
+ return { valid: false, error: `Path contains potential traversal attempt` };
150
+ }
151
+ }
152
+ // Check blocked paths
153
+ for (const blockedPath of policy.pathValidation.blockedPaths) {
154
+ const normalizedBlocked = normalizePathForComparison(blockedPath);
155
+ if (normalizedResolved.startsWith(normalizedBlocked)) {
156
+ logSecurityEvent("Path validation failed - blocked path", "warn", {
157
+ path: resolvedPath,
158
+ blockedPath,
159
+ });
160
+ return {
161
+ valid: false,
162
+ error: `Path '${path}' is in a blocked directory`,
163
+ };
164
+ }
165
+ }
166
+ // Check allowed paths
167
+ const isAllowed = policy.pathValidation.allowedPaths.some((allowedPath) => {
168
+ const normalizedAllowed = normalizePathForComparison(normalize(allowedPath));
169
+ return (normalizedResolved.startsWith(normalizedAllowed) ||
170
+ minimatch(normalizedResolved, `${normalizedAllowed}/**`));
171
+ });
172
+ if (!isAllowed && policy.pathValidation.allowedPaths.length > 0) {
173
+ logSecurityEvent("Path validation failed - not in allowed paths", "warn", {
174
+ path: resolvedPath,
175
+ });
176
+ return {
177
+ valid: false,
178
+ error: `Path '${path}' is not in an allowed directory`,
179
+ };
180
+ }
181
+ return { valid: true, resolvedPath };
182
+ }
183
+ /**
184
+ * Validate command for security
185
+ */
186
+ export function validateCommand(command, policy = DEFAULT_SECURITY_POLICY) {
187
+ if (!policy.commandValidation.enabled) {
188
+ return { valid: true, sanitized: command };
189
+ }
190
+ // Check for null bytes
191
+ if (command.includes("\x00")) {
192
+ logSecurityEvent("Command validation failed - null byte injection", "error", { command });
193
+ return { valid: false, error: `Command contains null bytes` };
194
+ }
195
+ const trimmedCommand = command.trim();
196
+ // Check blacklist
197
+ for (const blocked of policy.commandValidation.blacklist) {
198
+ if (trimmedCommand.toLowerCase().includes(blocked.toLowerCase())) {
199
+ logSecurityEvent("Command validation failed - blacklisted command", "error", {
200
+ command: trimmedCommand,
201
+ blocked,
202
+ });
203
+ return {
204
+ valid: false,
205
+ error: `Command contains blocked pattern: ${blocked}`,
206
+ };
207
+ }
208
+ }
209
+ // Check dangerous patterns
210
+ for (const pattern of policy.commandValidation.dangerousPatterns) {
211
+ if (pattern.test(trimmedCommand)) {
212
+ logSecurityEvent("Command validation failed - dangerous pattern", "error", {
213
+ command: trimmedCommand,
214
+ pattern: pattern.toString(),
215
+ });
216
+ return {
217
+ valid: false,
218
+ error: `Command matches dangerous pattern`,
219
+ };
220
+ }
221
+ }
222
+ // Check whitelist (if defined)
223
+ if (policy.commandValidation.whitelist.length > 0) {
224
+ const isWhitelisted = policy.commandValidation.whitelist.some((allowed) => trimmedCommand.toLowerCase().startsWith(allowed.toLowerCase()));
225
+ if (!isWhitelisted) {
226
+ logSecurityEvent("Command validation failed - not in whitelist", "warn", {
227
+ command: trimmedCommand,
228
+ });
229
+ return {
230
+ valid: false,
231
+ error: `Command is not in the allowed whitelist`,
232
+ };
233
+ }
234
+ }
235
+ // Sanitize command
236
+ const sanitized = sanitizeCommand(trimmedCommand);
237
+ return { valid: true, sanitized };
238
+ }
239
+ /**
240
+ * Sanitize command string
241
+ */
242
+ function sanitizeCommand(command) {
243
+ // Remove null bytes
244
+ let sanitized = command.replace(/\x00/g, "");
245
+ // Remove control characters except common whitespace
246
+ sanitized = sanitized.replace(/[\x00-\x08\x0B\x0C\x0E-\x1F\x7F]/g, "");
247
+ // Normalize whitespace
248
+ sanitized = sanitized.replace(/\s+/g, " ");
249
+ return sanitized.trim();
250
+ }
251
+ /**
252
+ * Rate limiter implementation with memory leak protection
253
+ */
254
+ export class RateLimiter {
255
+ requests = new Map();
256
+ policy;
257
+ cleanupTimer = null;
258
+ CLEANUP_INTERVAL = 5 * 60 * 1000; // 5 minutes
259
+ MAX_KEYS = 10000;
260
+ MAX_ENTRIES_PER_KEY = 1000;
261
+ constructor(policy = DEFAULT_SECURITY_POLICY) {
262
+ this.policy = policy;
263
+ this.startCleanupTimer();
264
+ }
265
+ /**
266
+ * Start periodic cleanup of old entries
267
+ */
268
+ startCleanupTimer() {
269
+ if (this.cleanupTimer)
270
+ return;
271
+ this.cleanupTimer = setInterval(() => {
272
+ this.cleanup();
273
+ }, this.CLEANUP_INTERVAL);
274
+ }
275
+ /**
276
+ * Stop cleanup timer
277
+ */
278
+ stopCleanupTimer() {
279
+ if (this.cleanupTimer) {
280
+ clearInterval(this.cleanupTimer);
281
+ this.cleanupTimer = null;
282
+ }
283
+ }
284
+ /**
285
+ * Clean up old entries to prevent memory leaks
286
+ */
287
+ cleanup() {
288
+ const now = Date.now();
289
+ const maxAge = 2 * 60 * 60 * 1000; // 2 hours
290
+ let cleanedKeys = 0;
291
+ let cleanedEntries = 0;
292
+ for (const [key, timestamps] of this.requests.entries()) {
293
+ const filtered = timestamps.filter(t => t > now - maxAge);
294
+ cleanedEntries += timestamps.length - filtered.length;
295
+ if (filtered.length === 0) {
296
+ this.requests.delete(key);
297
+ cleanedKeys++;
298
+ }
299
+ else {
300
+ this.requests.set(key, filtered);
301
+ }
302
+ }
303
+ // Log if significant cleanup occurred
304
+ if (cleanedKeys > 0 || cleanedEntries > 100) {
305
+ logSecurityEvent("Rate limiter cleanup completed", "info", {
306
+ cleanedKeys,
307
+ cleanedEntries,
308
+ remainingKeys: this.requests.size,
309
+ });
310
+ }
311
+ }
312
+ /**
313
+ * Check if request is allowed
314
+ */
315
+ isAllowed(key) {
316
+ if (!this.policy.rateLimit.enabled) {
317
+ return { allowed: true };
318
+ }
319
+ const now = Date.now();
320
+ const windowStart = now - 60 * 1000; // 1 minute window
321
+ const hourWindowStart = now - 60 * 60 * 1000; // 1 hour window
322
+ // Limit number of tracked keys
323
+ if (!this.requests.has(key) && this.requests.size >= this.MAX_KEYS) {
324
+ // Remove oldest key
325
+ const firstKey = this.requests.keys().next().value;
326
+ if (firstKey) {
327
+ this.requests.delete(firstKey);
328
+ }
329
+ }
330
+ const timestamps = this.requests.get(key) || [];
331
+ // Clean old entries and limit size
332
+ let recentRequests = timestamps.filter((t) => t > windowStart);
333
+ let hourRequests = timestamps.filter((t) => t > hourWindowStart);
334
+ // Limit entries per key to prevent memory bloat
335
+ if (recentRequests.length > this.MAX_ENTRIES_PER_KEY) {
336
+ recentRequests = recentRequests.slice(-this.MAX_ENTRIES_PER_KEY);
337
+ }
338
+ if (hourRequests.length > this.MAX_ENTRIES_PER_KEY) {
339
+ hourRequests = hourRequests.slice(-this.MAX_ENTRIES_PER_KEY);
340
+ }
341
+ // Check limits
342
+ if (recentRequests.length >= this.policy.rateLimit.maxRequestsPerMinute) {
343
+ const oldestRequest = recentRequests[0];
344
+ const retryAfter = oldestRequest ? Math.ceil((oldestRequest + 60 * 1000 - now) / 1000) : 60;
345
+ logSecurityEvent("Rate limit exceeded - per minute", "warn", {
346
+ key,
347
+ count: recentRequests.length,
348
+ });
349
+ return { allowed: false, retryAfter };
350
+ }
351
+ if (hourRequests.length >= this.policy.rateLimit.maxRequestsPerHour) {
352
+ const oldestRequest = hourRequests[0];
353
+ const retryAfter = oldestRequest ? Math.ceil((oldestRequest + 60 * 60 * 1000 - now) / 1000) : 3600;
354
+ logSecurityEvent("Rate limit exceeded - per hour", "warn", {
355
+ key,
356
+ count: hourRequests.length,
357
+ });
358
+ return { allowed: false, retryAfter };
359
+ }
360
+ // Record request
361
+ recentRequests.push(now);
362
+ this.requests.set(key, recentRequests);
363
+ return { allowed: true };
364
+ }
365
+ /**
366
+ * Reset rate limit for a key
367
+ */
368
+ reset(key) {
369
+ this.requests.delete(key);
370
+ }
371
+ /**
372
+ * Get current status
373
+ */
374
+ getStatus(key) {
375
+ const now = Date.now();
376
+ const timestamps = this.requests.get(key) || [];
377
+ const minuteWindow = now - 60 * 1000;
378
+ const hourWindow = now - 60 * 60 * 1000;
379
+ const requestsInMinute = timestamps.filter((t) => t > minuteWindow).length;
380
+ const requestsInHour = timestamps.filter((t) => t > hourWindow).length;
381
+ return {
382
+ requestsInMinute,
383
+ requestsInHour,
384
+ remainingInMinute: Math.max(0, this.policy.rateLimit.maxRequestsPerMinute - requestsInMinute),
385
+ remainingInHour: Math.max(0, this.policy.rateLimit.maxRequestsPerHour - requestsInHour),
386
+ };
387
+ }
388
+ }
389
+ /**
390
+ * Content validation for inputs
391
+ */
392
+ export function validateContent(content, options = {}) {
393
+ const { maxLength = 10000 } = options;
394
+ // Check for null bytes
395
+ if (content.includes("\x00")) {
396
+ return {
397
+ valid: false,
398
+ error: "Content contains null bytes",
399
+ };
400
+ }
401
+ if (content.length > maxLength) {
402
+ return {
403
+ valid: false,
404
+ error: `Content exceeds maximum length of ${maxLength} characters`,
405
+ };
406
+ }
407
+ // Check for potential injection
408
+ const injectionPatterns = [
409
+ /<script\b[^<]*(?:(?!<\/script>)<[^<]*)*<\/script>/gi,
410
+ /javascript:/gi,
411
+ /on\w+\s*=/gi,
412
+ /data:/gi,
413
+ /vbscript:/gi,
414
+ /mocha:/gi,
415
+ /livescript:/gi,
416
+ ];
417
+ for (const pattern of injectionPatterns) {
418
+ if (pattern.test(content)) {
419
+ logSecurityEvent("Content validation failed - potential injection", "error", {
420
+ pattern: pattern.toString(),
421
+ });
422
+ return {
423
+ valid: false,
424
+ error: "Content contains potentially dangerous patterns",
425
+ };
426
+ }
427
+ }
428
+ return { valid: true, sanitized: content };
429
+ }
430
+ /**
431
+ * API Key masking for logging
432
+ */
433
+ export function maskSensitiveData(data) {
434
+ const sensitiveKeys = [
435
+ "apiKey",
436
+ "api_key",
437
+ "password",
438
+ "secret",
439
+ "token",
440
+ "auth",
441
+ "credential",
442
+ "private_key",
443
+ "privatekey",
444
+ "access_token",
445
+ "refresh_token",
446
+ "session",
447
+ "cookie",
448
+ "passwd",
449
+ "pwd",
450
+ ];
451
+ const masked = {};
452
+ for (const [key, value] of Object.entries(data)) {
453
+ if (sensitiveKeys.some((sk) => key.toLowerCase().includes(sk))) {
454
+ masked[key] = "***REDACTED***";
455
+ }
456
+ else if (typeof value === "object" && value !== null) {
457
+ masked[key] = maskSensitiveData(value);
458
+ }
459
+ else {
460
+ masked[key] = value;
461
+ }
462
+ }
463
+ return masked;
464
+ }
465
+ //# sourceMappingURL=validation.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validation.js","sourceRoot":"","sources":["../../src/security/validation.ts"],"names":[],"mappings":"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"}