@trentapps/manager-protocol 1.3.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 (195) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +639 -0
  3. package/dist/analyzers/ArchitectureDetector.d.ts +44 -0
  4. package/dist/analyzers/ArchitectureDetector.d.ts.map +1 -0
  5. package/dist/analyzers/ArchitectureDetector.js +218 -0
  6. package/dist/analyzers/ArchitectureDetector.js.map +1 -0
  7. package/dist/analyzers/CSSAnalyzer.d.ts +284 -0
  8. package/dist/analyzers/CSSAnalyzer.d.ts.map +1 -0
  9. package/dist/analyzers/CSSAnalyzer.js +1180 -0
  10. package/dist/analyzers/CSSAnalyzer.js.map +1 -0
  11. package/dist/analyzers/index.d.ts +5 -0
  12. package/dist/analyzers/index.d.ts.map +1 -0
  13. package/dist/analyzers/index.js +5 -0
  14. package/dist/analyzers/index.js.map +1 -0
  15. package/dist/cli.d.ts +8 -0
  16. package/dist/cli.d.ts.map +1 -0
  17. package/dist/cli.js +174 -0
  18. package/dist/cli.js.map +1 -0
  19. package/dist/design-system/index.d.ts +6 -0
  20. package/dist/design-system/index.d.ts.map +1 -0
  21. package/dist/design-system/index.js +6 -0
  22. package/dist/design-system/index.js.map +1 -0
  23. package/dist/design-system/tokens.d.ts +106 -0
  24. package/dist/design-system/tokens.d.ts.map +1 -0
  25. package/dist/design-system/tokens.js +554 -0
  26. package/dist/design-system/tokens.js.map +1 -0
  27. package/dist/engine/AuditLogger.d.ts +506 -0
  28. package/dist/engine/AuditLogger.d.ts.map +1 -0
  29. package/dist/engine/AuditLogger.js +1491 -0
  30. package/dist/engine/AuditLogger.js.map +1 -0
  31. package/dist/engine/GitHubApprovalManager.d.ts +123 -0
  32. package/dist/engine/GitHubApprovalManager.d.ts.map +1 -0
  33. package/dist/engine/GitHubApprovalManager.js +347 -0
  34. package/dist/engine/GitHubApprovalManager.js.map +1 -0
  35. package/dist/engine/GitHubClient.d.ts +183 -0
  36. package/dist/engine/GitHubClient.d.ts.map +1 -0
  37. package/dist/engine/GitHubClient.js +411 -0
  38. package/dist/engine/GitHubClient.js.map +1 -0
  39. package/dist/engine/RateLimiter.d.ts +81 -0
  40. package/dist/engine/RateLimiter.d.ts.map +1 -0
  41. package/dist/engine/RateLimiter.js +215 -0
  42. package/dist/engine/RateLimiter.js.map +1 -0
  43. package/dist/engine/RuleDependencyAnalyzer.d.ts +73 -0
  44. package/dist/engine/RuleDependencyAnalyzer.d.ts.map +1 -0
  45. package/dist/engine/RuleDependencyAnalyzer.js +475 -0
  46. package/dist/engine/RuleDependencyAnalyzer.js.map +1 -0
  47. package/dist/engine/RulesEngine.d.ts +176 -0
  48. package/dist/engine/RulesEngine.d.ts.map +1 -0
  49. package/dist/engine/RulesEngine.js +705 -0
  50. package/dist/engine/RulesEngine.js.map +1 -0
  51. package/dist/engine/TaskManager.d.ts +174 -0
  52. package/dist/engine/TaskManager.d.ts.map +1 -0
  53. package/dist/engine/TaskManager.js +663 -0
  54. package/dist/engine/TaskManager.js.map +1 -0
  55. package/dist/engine/index.d.ts +11 -0
  56. package/dist/engine/index.d.ts.map +1 -0
  57. package/dist/engine/index.js +13 -0
  58. package/dist/engine/index.js.map +1 -0
  59. package/dist/index.d.ts +21 -0
  60. package/dist/index.d.ts.map +1 -0
  61. package/dist/index.js +29 -0
  62. package/dist/index.js.map +1 -0
  63. package/dist/rules/architecture.d.ts +9 -0
  64. package/dist/rules/architecture.d.ts.map +1 -0
  65. package/dist/rules/architecture.js +322 -0
  66. package/dist/rules/architecture.js.map +1 -0
  67. package/dist/rules/azure.d.ts +7 -0
  68. package/dist/rules/azure.d.ts.map +1 -0
  69. package/dist/rules/azure.js +136 -0
  70. package/dist/rules/azure.js.map +1 -0
  71. package/dist/rules/compliance.d.ts +9 -0
  72. package/dist/rules/compliance.d.ts.map +1 -0
  73. package/dist/rules/compliance.js +286 -0
  74. package/dist/rules/compliance.js.map +1 -0
  75. package/dist/rules/condition-optimizer.d.ts +151 -0
  76. package/dist/rules/condition-optimizer.d.ts.map +1 -0
  77. package/dist/rules/condition-optimizer.js +479 -0
  78. package/dist/rules/condition-optimizer.js.map +1 -0
  79. package/dist/rules/css.d.ts +10 -0
  80. package/dist/rules/css.d.ts.map +1 -0
  81. package/dist/rules/css.js +1777 -0
  82. package/dist/rules/css.js.map +1 -0
  83. package/dist/rules/field-standards.d.ts +1172 -0
  84. package/dist/rules/field-standards.d.ts.map +1 -0
  85. package/dist/rules/field-standards.js +908 -0
  86. package/dist/rules/field-standards.js.map +1 -0
  87. package/dist/rules/flask.d.ts +7 -0
  88. package/dist/rules/flask.d.ts.map +1 -0
  89. package/dist/rules/flask.js +142 -0
  90. package/dist/rules/flask.js.map +1 -0
  91. package/dist/rules/index.d.ts +827 -0
  92. package/dist/rules/index.d.ts.map +1 -0
  93. package/dist/rules/index.js +556 -0
  94. package/dist/rules/index.js.map +1 -0
  95. package/dist/rules/ml-ai.d.ts +7 -0
  96. package/dist/rules/ml-ai.d.ts.map +1 -0
  97. package/dist/rules/ml-ai.js +148 -0
  98. package/dist/rules/ml-ai.js.map +1 -0
  99. package/dist/rules/operational.d.ts +9 -0
  100. package/dist/rules/operational.d.ts.map +1 -0
  101. package/dist/rules/operational.js +318 -0
  102. package/dist/rules/operational.js.map +1 -0
  103. package/dist/rules/patterns.d.ts +568 -0
  104. package/dist/rules/patterns.d.ts.map +1 -0
  105. package/dist/rules/patterns.js +1359 -0
  106. package/dist/rules/patterns.js.map +1 -0
  107. package/dist/rules/security.d.ts +9 -0
  108. package/dist/rules/security.d.ts.map +1 -0
  109. package/dist/rules/security.js +848 -0
  110. package/dist/rules/security.js.map +1 -0
  111. package/dist/rules/shared-patterns.d.ts +268 -0
  112. package/dist/rules/shared-patterns.d.ts.map +1 -0
  113. package/dist/rules/shared-patterns.js +556 -0
  114. package/dist/rules/shared-patterns.js.map +1 -0
  115. package/dist/rules/storage.d.ts +13 -0
  116. package/dist/rules/storage.d.ts.map +1 -0
  117. package/dist/rules/storage.js +672 -0
  118. package/dist/rules/storage.js.map +1 -0
  119. package/dist/rules/stripe.d.ts +7 -0
  120. package/dist/rules/stripe.d.ts.map +1 -0
  121. package/dist/rules/stripe.js +133 -0
  122. package/dist/rules/stripe.js.map +1 -0
  123. package/dist/rules/testing.d.ts +7 -0
  124. package/dist/rules/testing.d.ts.map +1 -0
  125. package/dist/rules/testing.js +135 -0
  126. package/dist/rules/testing.js.map +1 -0
  127. package/dist/rules/ux.d.ts +9 -0
  128. package/dist/rules/ux.d.ts.map +1 -0
  129. package/dist/rules/ux.js +280 -0
  130. package/dist/rules/ux.js.map +1 -0
  131. package/dist/rules/websocket.d.ts +7 -0
  132. package/dist/rules/websocket.d.ts.map +1 -0
  133. package/dist/rules/websocket.js +128 -0
  134. package/dist/rules/websocket.js.map +1 -0
  135. package/dist/server.d.ts +43 -0
  136. package/dist/server.d.ts.map +1 -0
  137. package/dist/server.js +1967 -0
  138. package/dist/server.js.map +1 -0
  139. package/dist/supervisor/AgentSupervisor.d.ts +195 -0
  140. package/dist/supervisor/AgentSupervisor.d.ts.map +1 -0
  141. package/dist/supervisor/AgentSupervisor.js +569 -0
  142. package/dist/supervisor/AgentSupervisor.js.map +1 -0
  143. package/dist/supervisor/ManagedServerRegistry.d.ts +185 -0
  144. package/dist/supervisor/ManagedServerRegistry.d.ts.map +1 -0
  145. package/dist/supervisor/ManagedServerRegistry.js +729 -0
  146. package/dist/supervisor/ManagedServerRegistry.js.map +1 -0
  147. package/dist/supervisor/ProjectTracker.d.ts +210 -0
  148. package/dist/supervisor/ProjectTracker.d.ts.map +1 -0
  149. package/dist/supervisor/ProjectTracker.js +709 -0
  150. package/dist/supervisor/ProjectTracker.js.map +1 -0
  151. package/dist/supervisor/index.d.ts +6 -0
  152. package/dist/supervisor/index.d.ts.map +1 -0
  153. package/dist/supervisor/index.js +6 -0
  154. package/dist/supervisor/index.js.map +1 -0
  155. package/dist/testing/index.d.ts +11 -0
  156. package/dist/testing/index.d.ts.map +1 -0
  157. package/dist/testing/index.js +12 -0
  158. package/dist/testing/index.js.map +1 -0
  159. package/dist/testing/rule-tester.d.ts +217 -0
  160. package/dist/testing/rule-tester.d.ts.map +1 -0
  161. package/dist/testing/rule-tester.examples.d.ts +57 -0
  162. package/dist/testing/rule-tester.examples.d.ts.map +1 -0
  163. package/dist/testing/rule-tester.examples.js +375 -0
  164. package/dist/testing/rule-tester.examples.js.map +1 -0
  165. package/dist/testing/rule-tester.js +381 -0
  166. package/dist/testing/rule-tester.js.map +1 -0
  167. package/dist/testing/rule-validator.d.ts +141 -0
  168. package/dist/testing/rule-validator.d.ts.map +1 -0
  169. package/dist/testing/rule-validator.js +640 -0
  170. package/dist/testing/rule-validator.js.map +1 -0
  171. package/dist/types/index.d.ts +1282 -0
  172. package/dist/types/index.d.ts.map +1 -0
  173. package/dist/types/index.js +386 -0
  174. package/dist/types/index.js.map +1 -0
  175. package/dist/utils/errors.d.ts +86 -0
  176. package/dist/utils/errors.d.ts.map +1 -0
  177. package/dist/utils/errors.js +171 -0
  178. package/dist/utils/errors.js.map +1 -0
  179. package/dist/utils/index.d.ts +7 -0
  180. package/dist/utils/index.d.ts.map +1 -0
  181. package/dist/utils/index.js +7 -0
  182. package/dist/utils/index.js.map +1 -0
  183. package/dist/utils/rate-limiting.d.ts +268 -0
  184. package/dist/utils/rate-limiting.d.ts.map +1 -0
  185. package/dist/utils/rate-limiting.js +403 -0
  186. package/dist/utils/rate-limiting.js.map +1 -0
  187. package/dist/utils/shared.d.ts +306 -0
  188. package/dist/utils/shared.d.ts.map +1 -0
  189. package/dist/utils/shared.js +464 -0
  190. package/dist/utils/shared.js.map +1 -0
  191. package/dist/utils/shell.d.ts +22 -0
  192. package/dist/utils/shell.d.ts.map +1 -0
  193. package/dist/utils/shell.js +29 -0
  194. package/dist/utils/shell.js.map +1 -0
  195. package/package.json +67 -0
@@ -0,0 +1,506 @@
1
+ /**
2
+ * Enterprise Agent Supervisor - Audit Logger
3
+ *
4
+ * Comprehensive audit logging for compliance, security, and operational visibility.
5
+ *
6
+ * Storage Strategy:
7
+ * - Uses write-through caching: events are only added to memory after successful DB write
8
+ * - Failed writes are queued for retry
9
+ * - Periodic sync checks ensure memory/DB consistency
10
+ *
11
+ * Query System (Task #49):
12
+ * - QueryBuilder provides fluent API for complex queries
13
+ * - Supports cursor-based pagination for large result sets
14
+ * - Aggregation queries for analytics and dashboards
15
+ * - Full-text search in metadata and details JSON fields
16
+ */
17
+ import type { AuditEvent, AuditEventType, RiskLevel } from '../types/index.js';
18
+ /**
19
+ * Filter options for audit event queries
20
+ */
21
+ export interface QueryFilter {
22
+ eventType?: AuditEventType | AuditEventType[];
23
+ agentId?: string | string[];
24
+ sessionId?: string | string[];
25
+ userId?: string | string[];
26
+ outcome?: ('success' | 'failure' | 'pending') | ('success' | 'failure' | 'pending')[];
27
+ riskLevel?: RiskLevel | RiskLevel[];
28
+ since?: string | Date;
29
+ until?: string | Date;
30
+ correlationId?: string;
31
+ action?: string;
32
+ metadataSearch?: string;
33
+ detailsSearch?: string;
34
+ }
35
+ /**
36
+ * Pagination options for query results
37
+ */
38
+ export interface PaginationOptions {
39
+ limit?: number;
40
+ cursor?: string;
41
+ offset?: number;
42
+ }
43
+ /**
44
+ * Paginated query result with metadata
45
+ */
46
+ export interface PaginatedResult<T> {
47
+ data: T[];
48
+ pagination: {
49
+ totalCount: number;
50
+ hasMore: boolean;
51
+ nextCursor?: string;
52
+ previousCursor?: string;
53
+ limit: number;
54
+ offset?: number;
55
+ };
56
+ }
57
+ /**
58
+ * Aggregation result for analytics
59
+ */
60
+ export interface AggregationResult {
61
+ byEventType: Record<string, number>;
62
+ byOutcome: Record<string, number>;
63
+ byRiskLevel: Record<string, number>;
64
+ byAgent: Record<string, number>;
65
+ byUser: Record<string, number>;
66
+ timeSeries: TimeSeriesDataPoint[];
67
+ total: number;
68
+ }
69
+ /**
70
+ * Time series data point for charts
71
+ */
72
+ export interface TimeSeriesDataPoint {
73
+ timestamp: string;
74
+ count: number;
75
+ byOutcome?: Record<string, number>;
76
+ }
77
+ /**
78
+ * Supported time series intervals
79
+ */
80
+ export type TimeSeriesInterval = 'minute' | 'hour' | 'day' | 'week' | 'month';
81
+ /**
82
+ * QueryBuilder - Fluent API for building audit event queries
83
+ *
84
+ * Usage:
85
+ * ```typescript
86
+ * const results = await logger.query()
87
+ * .where('eventType', 'action_executed')
88
+ * .where('outcome', 'success')
89
+ * .since(new Date('2024-01-01'))
90
+ * .until(new Date('2024-12-31'))
91
+ * .orderBy('timestamp', 'desc')
92
+ * .limit(100)
93
+ * .execute();
94
+ *
95
+ * // With pagination
96
+ * const page1 = await logger.query()
97
+ * .eventType('action_evaluated')
98
+ * .limit(50)
99
+ * .executePaginated();
100
+ *
101
+ * // Get next page
102
+ * const page2 = await logger.query()
103
+ * .eventType('action_evaluated')
104
+ * .cursor(page1.pagination.nextCursor!)
105
+ * .limit(50)
106
+ * .executePaginated();
107
+ *
108
+ * // Aggregation
109
+ * const stats = await logger.query()
110
+ * .since(new Date('2024-01-01'))
111
+ * .aggregate('day');
112
+ * ```
113
+ */
114
+ export declare class QueryBuilder {
115
+ private filters;
116
+ private paginationOpts;
117
+ private orderByField;
118
+ private orderDirection;
119
+ private logger;
120
+ constructor(logger: AuditLogger);
121
+ /**
122
+ * Add a filter condition
123
+ */
124
+ where<K extends keyof QueryFilter>(field: K, value: QueryFilter[K]): this;
125
+ /**
126
+ * Filter by event type(s)
127
+ */
128
+ eventType(type: AuditEventType | AuditEventType[]): this;
129
+ /**
130
+ * Filter by agent ID(s)
131
+ */
132
+ agentId(id: string | string[]): this;
133
+ /**
134
+ * Filter by session ID(s)
135
+ */
136
+ sessionId(id: string | string[]): this;
137
+ /**
138
+ * Filter by user ID(s)
139
+ */
140
+ userId(id: string | string[]): this;
141
+ /**
142
+ * Filter by outcome(s)
143
+ */
144
+ outcome(outcome: ('success' | 'failure' | 'pending') | ('success' | 'failure' | 'pending')[]): this;
145
+ /**
146
+ * Filter by risk level(s)
147
+ */
148
+ riskLevel(level: RiskLevel | RiskLevel[]): this;
149
+ /**
150
+ * Filter events after this date (inclusive)
151
+ */
152
+ since(date: string | Date): this;
153
+ /**
154
+ * Filter events before this date (inclusive)
155
+ */
156
+ until(date: string | Date): this;
157
+ /**
158
+ * Filter by correlation ID
159
+ */
160
+ correlatedWith(correlationId: string): this;
161
+ /**
162
+ * Filter by action (partial match, case-insensitive)
163
+ */
164
+ action(actionPattern: string): this;
165
+ /**
166
+ * Full-text search in metadata JSON
167
+ */
168
+ searchMetadata(searchTerm: string): this;
169
+ /**
170
+ * Full-text search in details JSON
171
+ */
172
+ searchDetails(searchTerm: string): this;
173
+ /**
174
+ * Set ordering
175
+ */
176
+ orderBy(field: string, direction?: 'asc' | 'desc'): this;
177
+ /**
178
+ * Set result limit
179
+ */
180
+ limit(count: number): this;
181
+ /**
182
+ * Set offset for offset-based pagination
183
+ */
184
+ offset(count: number): this;
185
+ /**
186
+ * Set cursor for cursor-based pagination
187
+ */
188
+ cursor(cursorString: string): this;
189
+ /**
190
+ * Execute the query and return results
191
+ */
192
+ execute(): Promise<AuditEvent[]>;
193
+ /**
194
+ * Execute query with pagination metadata
195
+ */
196
+ executePaginated(): Promise<PaginatedResult<AuditEvent>>;
197
+ /**
198
+ * Get aggregated statistics for the filtered events
199
+ */
200
+ aggregate(interval?: TimeSeriesInterval): Promise<AggregationResult>;
201
+ /**
202
+ * Get count of matching events
203
+ */
204
+ count(): Promise<number>;
205
+ /**
206
+ * Get the first matching event
207
+ */
208
+ first(): Promise<AuditEvent | undefined>;
209
+ /**
210
+ * Check if any events match
211
+ */
212
+ exists(): Promise<boolean>;
213
+ /**
214
+ * Get filters for inspection/debugging
215
+ */
216
+ getFilters(): QueryFilter;
217
+ /**
218
+ * Get pagination options for inspection/debugging
219
+ */
220
+ getPaginationOptions(): PaginationOptions;
221
+ /**
222
+ * Clone the query builder for branching queries
223
+ */
224
+ clone(): QueryBuilder;
225
+ }
226
+ export interface AuditLoggerOptions {
227
+ maxEvents?: number;
228
+ enableConsoleLog?: boolean;
229
+ webhookUrl?: string;
230
+ webhookRetries?: number;
231
+ webhookTimeoutMs?: number;
232
+ onEvent?: (event: AuditEvent) => void | Promise<void>;
233
+ onWebhookError?: (error: Error, event: AuditEvent) => void;
234
+ logFile?: string;
235
+ dbPath?: string;
236
+ retryIntervalMs?: number;
237
+ maxRetryAttempts?: number;
238
+ syncIntervalMs?: number;
239
+ }
240
+ export declare class AuditLogger {
241
+ private events;
242
+ private maxEvents;
243
+ private enableConsoleLog;
244
+ private webhookUrl?;
245
+ private webhookRetries;
246
+ private webhookTimeoutMs;
247
+ private onEvent?;
248
+ private onWebhookError?;
249
+ private dbPath?;
250
+ private db?;
251
+ private initialized;
252
+ private initPromise?;
253
+ private failedWrites;
254
+ private retryIntervalMs;
255
+ private maxRetryAttempts;
256
+ private retryTimer?;
257
+ private syncIntervalMs;
258
+ private syncTimer?;
259
+ private lastSyncTime?;
260
+ constructor(options?: AuditLoggerOptions);
261
+ /**
262
+ * Initialize and setup SQLite database if configured
263
+ * Uses Promise-based locking to prevent race conditions in concurrent scenarios
264
+ */
265
+ initialize(): Promise<void>;
266
+ /**
267
+ * Internal initialization implementation
268
+ */
269
+ private doInitialize;
270
+ /**
271
+ * Start the retry timer for failed database writes
272
+ */
273
+ private startRetryTimer;
274
+ /**
275
+ * Start the periodic sync timer
276
+ */
277
+ private startSyncTimer;
278
+ /**
279
+ * Stop all timers (for cleanup/shutdown)
280
+ */
281
+ stopTimers(): void;
282
+ /**
283
+ * Process the retry queue for failed database writes
284
+ */
285
+ private processRetryQueue;
286
+ /**
287
+ * Check consistency between memory cache and database
288
+ * Returns sync status information
289
+ */
290
+ checkSync(): Promise<{
291
+ inSync: boolean;
292
+ memoryCount: number;
293
+ dbCount: number;
294
+ missingInDb: string[];
295
+ missingInMemory: string[];
296
+ pendingRetries: number;
297
+ }>;
298
+ /**
299
+ * Force synchronization between memory and database
300
+ * Reconciles any differences by:
301
+ * 1. Writing memory-only events to database
302
+ * 2. Loading database-only events to memory
303
+ * 3. Processing any pending retries
304
+ */
305
+ sync(): Promise<{
306
+ eventsSyncedToDb: number;
307
+ eventsSyncedToMemory: number;
308
+ retriesProcessed: number;
309
+ errors: string[];
310
+ }>;
311
+ /**
312
+ * Insert event into memory cache in sorted order by timestamp
313
+ */
314
+ private insertEventSorted;
315
+ /**
316
+ * Add event to memory cache (internal helper)
317
+ */
318
+ private addToMemoryCache;
319
+ /**
320
+ * Get retry queue status
321
+ */
322
+ getRetryQueueStatus(): {
323
+ pendingCount: number;
324
+ oldestAttempt: string | null;
325
+ events: {
326
+ eventId: string;
327
+ attempts: number;
328
+ lastError: string;
329
+ }[];
330
+ };
331
+ /**
332
+ * Initialize SQLite database
333
+ */
334
+ private initDatabase;
335
+ /**
336
+ * Reload events from database
337
+ */
338
+ reload(): Promise<void>;
339
+ /**
340
+ * Log an audit event
341
+ *
342
+ * Storage Strategy (Write-Through Caching):
343
+ * - If database is available: write to DB first, then add to memory on success
344
+ * - If DB write fails: queue for retry, do NOT add to memory (prevents drift)
345
+ * - If no database: add directly to memory (memory-only mode)
346
+ */
347
+ log(params: {
348
+ eventType: AuditEventType;
349
+ action: string;
350
+ outcome: 'success' | 'failure' | 'pending';
351
+ agentId?: string;
352
+ sessionId?: string;
353
+ userId?: string;
354
+ riskLevel?: RiskLevel;
355
+ details?: Record<string, unknown>;
356
+ metadata?: Record<string, unknown>;
357
+ correlationId?: string;
358
+ parentEventId?: string;
359
+ }): Promise<AuditEvent>;
360
+ /**
361
+ * Quick log helpers
362
+ */
363
+ logActionEvaluated(action: string, outcome: 'success' | 'failure', details?: Record<string, unknown>): Promise<AuditEvent>;
364
+ logActionApproved(action: string, details?: Record<string, unknown>): Promise<AuditEvent>;
365
+ logActionDenied(action: string, reason: string, riskLevel?: RiskLevel): Promise<AuditEvent>;
366
+ logApprovalRequested(action: string, requestId: string, reason: string): Promise<AuditEvent>;
367
+ logRateLimitHit(action: string, limitId: string, agentId?: string): Promise<AuditEvent>;
368
+ logSecurityAlert(action: string, alertType: string, severity: RiskLevel, details?: Record<string, unknown>): Promise<AuditEvent>;
369
+ logComplianceViolation(action: string, violation: string, framework?: string): Promise<AuditEvent>;
370
+ logRuleTriggered(action: string, ruleId: string, ruleName: string, outcome: 'success' | 'failure'): Promise<AuditEvent>;
371
+ logConfigChanged(action: string, changeType: string, details?: Record<string, unknown>): Promise<AuditEvent>;
372
+ /**
373
+ * Save event to database
374
+ * @returns true if save was successful, false otherwise
375
+ */
376
+ private saveToDatabase;
377
+ /**
378
+ * Load events from database
379
+ */
380
+ private loadFromDatabase;
381
+ /**
382
+ * Create a new QueryBuilder for fluent query construction
383
+ *
384
+ * Usage:
385
+ * ```typescript
386
+ * const events = await logger.query()
387
+ * .eventType('action_executed')
388
+ * .since(new Date('2024-01-01'))
389
+ * .limit(100)
390
+ * .execute();
391
+ * ```
392
+ */
393
+ query(): QueryBuilder;
394
+ /**
395
+ * Execute a query with filters (called by QueryBuilder)
396
+ */
397
+ executeQuery(filters: QueryFilter, pagination: PaginationOptions, orderByField: string, orderDirection: 'asc' | 'desc'): AuditEvent[];
398
+ /**
399
+ * Execute query with pagination metadata (called by QueryBuilder)
400
+ */
401
+ executeQueryPaginated(filters: QueryFilter, pagination: PaginationOptions, orderByField: string, orderDirection: 'asc' | 'desc'): Promise<PaginatedResult<AuditEvent>>;
402
+ /**
403
+ * Get count of events matching filters (called by QueryBuilder)
404
+ */
405
+ countQuery(filters: QueryFilter): number;
406
+ /**
407
+ * Execute aggregation query (called by QueryBuilder)
408
+ */
409
+ aggregateQuery(filters: QueryFilter, interval?: TimeSeriesInterval): AggregationResult;
410
+ /**
411
+ * Truncate timestamp to the specified interval for time series grouping
412
+ */
413
+ private truncateTimestamp;
414
+ /**
415
+ * Execute query against database
416
+ */
417
+ private executeDbQuery;
418
+ /**
419
+ * Build WHERE clause from filters with parameterized queries (SQL injection safe)
420
+ */
421
+ private buildWhereClause;
422
+ /**
423
+ * Convert database row to AuditEvent
424
+ */
425
+ private rowToEvent;
426
+ /**
427
+ * Execute query against memory cache
428
+ */
429
+ private executeMemoryQuery;
430
+ /**
431
+ * Filter events from memory cache
432
+ */
433
+ private filterMemoryEvents;
434
+ /**
435
+ * Query events (legacy method - consider using query() instead)
436
+ * @deprecated Use query() for more powerful filtering options
437
+ */
438
+ getEvents(filter?: {
439
+ eventType?: AuditEventType;
440
+ agentId?: string;
441
+ sessionId?: string;
442
+ userId?: string;
443
+ outcome?: 'success' | 'failure' | 'pending';
444
+ riskLevel?: RiskLevel;
445
+ since?: string;
446
+ until?: string;
447
+ limit?: number;
448
+ }): AuditEvent[];
449
+ /**
450
+ * Get event by ID
451
+ */
452
+ getEvent(eventId: string): AuditEvent | undefined;
453
+ /**
454
+ * Get events by correlation ID
455
+ */
456
+ getCorrelatedEvents(correlationId: string): AuditEvent[];
457
+ /**
458
+ * Get event count
459
+ */
460
+ getEventCount(): number;
461
+ /**
462
+ * Get summary statistics
463
+ * Uses shared calculateGroupedCounts utility for consistency
464
+ */
465
+ getStats(since?: string): {
466
+ total: number;
467
+ byType: Record<string, number>;
468
+ byOutcome: Record<string, number>;
469
+ byRiskLevel: Record<string, number>;
470
+ };
471
+ /**
472
+ * Export events as JSON
473
+ */
474
+ exportEvents(filter?: Parameters<typeof this.getEvents>[0]): string;
475
+ /**
476
+ * Clear all events from memory cache
477
+ * Note: This does NOT clear the database - use clearAll() for that
478
+ */
479
+ clear(): void;
480
+ /**
481
+ * Clear all events from both memory and database
482
+ */
483
+ clearAll(): void;
484
+ /**
485
+ * Get extended statistics including sync status
486
+ */
487
+ getExtendedStats(): {
488
+ total: number;
489
+ memoryCount: number;
490
+ pendingRetries: number;
491
+ lastSyncTime: string | null;
492
+ byType: Record<string, number>;
493
+ byOutcome: Record<string, number>;
494
+ byRiskLevel: Record<string, number>;
495
+ };
496
+ /**
497
+ * Log to console with formatting
498
+ */
499
+ private logToConsole;
500
+ /**
501
+ * Send event to webhook with retry logic
502
+ */
503
+ private sendWebhook;
504
+ }
505
+ export declare const auditLogger: AuditLogger;
506
+ //# sourceMappingURL=AuditLogger.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AuditLogger.d.ts","sourceRoot":"","sources":["../../src/engine/AuditLogger.ts"],"names":[],"mappings":"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"}