@pan-sec/notebooklm-mcp 1.4.0 → 1.6.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 (123) hide show
  1. package/README.md +61 -7
  2. package/SECURITY.md +40 -6
  3. package/dist/auth/mcp-auth.d.ts.map +1 -1
  4. package/dist/auth/mcp-auth.js +3 -6
  5. package/dist/auth/mcp-auth.js.map +1 -1
  6. package/dist/compliance/alert-manager.d.ts +120 -0
  7. package/dist/compliance/alert-manager.d.ts.map +1 -0
  8. package/dist/compliance/alert-manager.js +420 -0
  9. package/dist/compliance/alert-manager.js.map +1 -0
  10. package/dist/compliance/breach-detection.d.ts +134 -0
  11. package/dist/compliance/breach-detection.d.ts.map +1 -0
  12. package/dist/compliance/breach-detection.js +456 -0
  13. package/dist/compliance/breach-detection.js.map +1 -0
  14. package/dist/compliance/change-log.d.ts +113 -0
  15. package/dist/compliance/change-log.d.ts.map +1 -0
  16. package/dist/compliance/change-log.js +275 -0
  17. package/dist/compliance/change-log.js.map +1 -0
  18. package/dist/compliance/compliance-logger.d.ts +136 -0
  19. package/dist/compliance/compliance-logger.d.ts.map +1 -0
  20. package/dist/compliance/compliance-logger.js +425 -0
  21. package/dist/compliance/compliance-logger.js.map +1 -0
  22. package/dist/compliance/compliance-tools.d.ts +18 -0
  23. package/dist/compliance/compliance-tools.d.ts.map +1 -0
  24. package/dist/compliance/compliance-tools.js +673 -0
  25. package/dist/compliance/compliance-tools.js.map +1 -0
  26. package/dist/compliance/consent-manager.d.ts +130 -0
  27. package/dist/compliance/consent-manager.d.ts.map +1 -0
  28. package/dist/compliance/consent-manager.js +386 -0
  29. package/dist/compliance/consent-manager.js.map +1 -0
  30. package/dist/compliance/dashboard.d.ts +243 -0
  31. package/dist/compliance/dashboard.d.ts.map +1 -0
  32. package/dist/compliance/dashboard.js +519 -0
  33. package/dist/compliance/dashboard.js.map +1 -0
  34. package/dist/compliance/data-classification.d.ts +117 -0
  35. package/dist/compliance/data-classification.d.ts.map +1 -0
  36. package/dist/compliance/data-classification.js +469 -0
  37. package/dist/compliance/data-classification.js.map +1 -0
  38. package/dist/compliance/data-erasure.d.ts +110 -0
  39. package/dist/compliance/data-erasure.d.ts.map +1 -0
  40. package/dist/compliance/data-erasure.js +501 -0
  41. package/dist/compliance/data-erasure.js.map +1 -0
  42. package/dist/compliance/data-export.d.ts +85 -0
  43. package/dist/compliance/data-export.d.ts.map +1 -0
  44. package/dist/compliance/data-export.js +394 -0
  45. package/dist/compliance/data-export.js.map +1 -0
  46. package/dist/compliance/data-inventory.d.ts +136 -0
  47. package/dist/compliance/data-inventory.d.ts.map +1 -0
  48. package/dist/compliance/data-inventory.js +335 -0
  49. package/dist/compliance/data-inventory.js.map +1 -0
  50. package/dist/compliance/dsar-handler.d.ts +123 -0
  51. package/dist/compliance/dsar-handler.d.ts.map +1 -0
  52. package/dist/compliance/dsar-handler.js +371 -0
  53. package/dist/compliance/dsar-handler.js.map +1 -0
  54. package/dist/compliance/evidence-collector.d.ts +187 -0
  55. package/dist/compliance/evidence-collector.d.ts.map +1 -0
  56. package/dist/compliance/evidence-collector.js +656 -0
  57. package/dist/compliance/evidence-collector.js.map +1 -0
  58. package/dist/compliance/health-monitor.d.ts +111 -0
  59. package/dist/compliance/health-monitor.d.ts.map +1 -0
  60. package/dist/compliance/health-monitor.js +509 -0
  61. package/dist/compliance/health-monitor.js.map +1 -0
  62. package/dist/compliance/incident-manager.d.ts +131 -0
  63. package/dist/compliance/incident-manager.d.ts.map +1 -0
  64. package/dist/compliance/incident-manager.js +418 -0
  65. package/dist/compliance/incident-manager.js.map +1 -0
  66. package/dist/compliance/index.d.ts +32 -0
  67. package/dist/compliance/index.d.ts.map +1 -0
  68. package/dist/compliance/index.js +35 -0
  69. package/dist/compliance/index.js.map +1 -0
  70. package/dist/compliance/policy-docs.d.ts +108 -0
  71. package/dist/compliance/policy-docs.d.ts.map +1 -0
  72. package/dist/compliance/policy-docs.js +464 -0
  73. package/dist/compliance/policy-docs.js.map +1 -0
  74. package/dist/compliance/privacy-notice-text.d.ts +58 -0
  75. package/dist/compliance/privacy-notice-text.d.ts.map +1 -0
  76. package/dist/compliance/privacy-notice-text.js +161 -0
  77. package/dist/compliance/privacy-notice-text.js.map +1 -0
  78. package/dist/compliance/privacy-notice.d.ts +128 -0
  79. package/dist/compliance/privacy-notice.d.ts.map +1 -0
  80. package/dist/compliance/privacy-notice.js +250 -0
  81. package/dist/compliance/privacy-notice.js.map +1 -0
  82. package/dist/compliance/report-generator.d.ts +168 -0
  83. package/dist/compliance/report-generator.d.ts.map +1 -0
  84. package/dist/compliance/report-generator.js +830 -0
  85. package/dist/compliance/report-generator.js.map +1 -0
  86. package/dist/compliance/retention-engine.d.ts +130 -0
  87. package/dist/compliance/retention-engine.d.ts.map +1 -0
  88. package/dist/compliance/retention-engine.js +510 -0
  89. package/dist/compliance/retention-engine.js.map +1 -0
  90. package/dist/compliance/siem-exporter.d.ts +150 -0
  91. package/dist/compliance/siem-exporter.d.ts.map +1 -0
  92. package/dist/compliance/siem-exporter.js +509 -0
  93. package/dist/compliance/siem-exporter.js.map +1 -0
  94. package/dist/compliance/types.d.ts +601 -0
  95. package/dist/compliance/types.d.ts.map +1 -0
  96. package/dist/compliance/types.js +22 -0
  97. package/dist/compliance/types.js.map +1 -0
  98. package/dist/config.d.ts +4 -0
  99. package/dist/config.d.ts.map +1 -1
  100. package/dist/config.js +8 -1
  101. package/dist/config.js.map +1 -1
  102. package/dist/library/notebook-library.d.ts.map +1 -1
  103. package/dist/library/notebook-library.js +2 -1
  104. package/dist/library/notebook-library.js.map +1 -1
  105. package/dist/session/shared-context-manager.d.ts.map +1 -1
  106. package/dist/session/shared-context-manager.js +2 -1
  107. package/dist/session/shared-context-manager.js.map +1 -1
  108. package/dist/utils/audit-logger.d.ts +21 -1
  109. package/dist/utils/audit-logger.d.ts.map +1 -1
  110. package/dist/utils/audit-logger.js +53 -4
  111. package/dist/utils/audit-logger.js.map +1 -1
  112. package/dist/utils/crypto.d.ts.map +1 -1
  113. package/dist/utils/crypto.js +8 -15
  114. package/dist/utils/crypto.js.map +1 -1
  115. package/dist/utils/file-permissions.d.ts +85 -0
  116. package/dist/utils/file-permissions.d.ts.map +1 -0
  117. package/dist/utils/file-permissions.js +180 -0
  118. package/dist/utils/file-permissions.js.map +1 -0
  119. package/dist/utils/settings-manager.d.ts.map +1 -1
  120. package/dist/utils/settings-manager.js +6 -11
  121. package/dist/utils/settings-manager.js.map +1 -1
  122. package/docs/COMPLIANCE-SPEC.md +1452 -0
  123. package/package.json +30 -4
@@ -0,0 +1,509 @@
1
+ /**
2
+ * SIEM Exporter
3
+ *
4
+ * Exports logs to external Security Information and Event Management systems.
5
+ * Supports CEF, LEEF, Syslog, Splunk HEC, and JSON formats.
6
+ *
7
+ * Added by Pantheon Security for enterprise compliance support.
8
+ */
9
+ import https from "https";
10
+ import dgram from "dgram";
11
+ import path from "path";
12
+ import fs from "fs";
13
+ import { getConfig } from "../config.js";
14
+ import { mkdirSecure, appendFileSecure } from "../utils/file-permissions.js";
15
+ /**
16
+ * Get SIEM configuration from environment
17
+ */
18
+ function getSIEMConfig() {
19
+ return {
20
+ enabled: process.env.NLMCP_SIEM_ENABLED === "true",
21
+ format: process.env.NLMCP_SIEM_FORMAT || "cef",
22
+ endpoint: process.env.NLMCP_SIEM_ENDPOINT,
23
+ syslog_host: process.env.NLMCP_SIEM_SYSLOG_HOST,
24
+ syslog_port: parseInt(process.env.NLMCP_SIEM_SYSLOG_PORT || "514", 10),
25
+ api_key: process.env.NLMCP_SIEM_API_KEY,
26
+ min_severity: process.env.NLMCP_SIEM_MIN_SEVERITY || "warning",
27
+ event_types: process.env.NLMCP_SIEM_EVENT_TYPES?.split(",") || [],
28
+ batch_size: parseInt(process.env.NLMCP_SIEM_BATCH_SIZE || "100", 10),
29
+ flush_interval_ms: parseInt(process.env.NLMCP_SIEM_FLUSH_INTERVAL_MS || "5000", 10),
30
+ retry_attempts: parseInt(process.env.NLMCP_SIEM_RETRY_ATTEMPTS || "3", 10),
31
+ queue_max_size: parseInt(process.env.NLMCP_SIEM_QUEUE_MAX_SIZE || "10000", 10),
32
+ };
33
+ }
34
+ /**
35
+ * Severity to numeric level mapping
36
+ */
37
+ const SEVERITY_LEVELS = {
38
+ info: 0,
39
+ warning: 1,
40
+ error: 2,
41
+ critical: 3,
42
+ };
43
+ /**
44
+ * Severity to CEF level mapping (0-10)
45
+ */
46
+ const CEF_SEVERITY = {
47
+ info: 3,
48
+ warning: 5,
49
+ error: 7,
50
+ critical: 10,
51
+ };
52
+ /**
53
+ * Severity to syslog priority mapping
54
+ */
55
+ const SYSLOG_SEVERITY = {
56
+ info: 6, // Informational
57
+ warning: 4, // Warning
58
+ error: 3, // Error
59
+ critical: 2, // Critical
60
+ };
61
+ /**
62
+ * SIEM Exporter class
63
+ */
64
+ export class SIEMExporter {
65
+ static instance;
66
+ config;
67
+ eventQueue = [];
68
+ flushTimer = null;
69
+ isExporting = false;
70
+ failedDir;
71
+ constructor() {
72
+ this.config = getSIEMConfig();
73
+ const config = getConfig();
74
+ this.failedDir = path.join(config.dataDir, "siem_failed");
75
+ if (this.config.enabled) {
76
+ mkdirSecure(this.failedDir);
77
+ this.startFlushTimer();
78
+ }
79
+ }
80
+ /**
81
+ * Get singleton instance
82
+ */
83
+ static getInstance() {
84
+ if (!SIEMExporter.instance) {
85
+ SIEMExporter.instance = new SIEMExporter();
86
+ }
87
+ return SIEMExporter.instance;
88
+ }
89
+ /**
90
+ * Start the flush timer
91
+ */
92
+ startFlushTimer() {
93
+ if (this.flushTimer) {
94
+ clearInterval(this.flushTimer);
95
+ }
96
+ this.flushTimer = setInterval(() => {
97
+ this.flush().catch(() => {
98
+ // Ignore flush errors
99
+ });
100
+ }, this.config.flush_interval_ms);
101
+ }
102
+ /**
103
+ * Stop the flush timer
104
+ */
105
+ stop() {
106
+ if (this.flushTimer) {
107
+ clearInterval(this.flushTimer);
108
+ this.flushTimer = null;
109
+ }
110
+ }
111
+ /**
112
+ * Check if event meets minimum severity
113
+ */
114
+ meetsMinimumSeverity(severity) {
115
+ return SEVERITY_LEVELS[severity] >= SEVERITY_LEVELS[this.config.min_severity];
116
+ }
117
+ /**
118
+ * Check if event type is allowed
119
+ */
120
+ isEventTypeAllowed(eventType) {
121
+ if (this.config.event_types.length === 0) {
122
+ return true; // All types allowed if no filter
123
+ }
124
+ return this.config.event_types.includes(eventType);
125
+ }
126
+ /**
127
+ * Queue an event for export
128
+ */
129
+ async queueEvent(event) {
130
+ if (!this.config.enabled) {
131
+ return false;
132
+ }
133
+ // Check filters
134
+ if (!this.meetsMinimumSeverity(event.severity)) {
135
+ return false;
136
+ }
137
+ if (!this.isEventTypeAllowed(event.event_type)) {
138
+ return false;
139
+ }
140
+ // Check queue size
141
+ if (this.eventQueue.length >= this.config.queue_max_size) {
142
+ // Drop oldest event
143
+ this.eventQueue.shift();
144
+ }
145
+ this.eventQueue.push(event);
146
+ // Flush if batch size reached
147
+ if (this.eventQueue.length >= this.config.batch_size) {
148
+ await this.flush();
149
+ }
150
+ return true;
151
+ }
152
+ /**
153
+ * Flush queued events
154
+ */
155
+ async flush() {
156
+ if (!this.config.enabled || this.isExporting || this.eventQueue.length === 0) {
157
+ return { sent: 0, failed: 0 };
158
+ }
159
+ this.isExporting = true;
160
+ let sent = 0;
161
+ let failed = 0;
162
+ try {
163
+ const batch = this.eventQueue.splice(0, this.config.batch_size);
164
+ for (const event of batch) {
165
+ const success = await this.exportEvent(event);
166
+ if (success) {
167
+ sent++;
168
+ }
169
+ else {
170
+ failed++;
171
+ // Save to failed directory
172
+ await this.saveFailedEvent(event);
173
+ }
174
+ }
175
+ }
176
+ finally {
177
+ this.isExporting = false;
178
+ }
179
+ return { sent, failed };
180
+ }
181
+ /**
182
+ * Export a single event
183
+ */
184
+ async exportEvent(event) {
185
+ switch (this.config.format) {
186
+ case "cef":
187
+ return this.exportCEF(event);
188
+ case "leef":
189
+ return this.exportLEEF(event);
190
+ case "syslog":
191
+ return this.exportSyslog(event);
192
+ case "splunk_hec":
193
+ return this.exportSplunkHEC(event);
194
+ case "json":
195
+ default:
196
+ return this.exportJSON(event);
197
+ }
198
+ }
199
+ /**
200
+ * Format event as CEF (Common Event Format)
201
+ */
202
+ formatCEF(event) {
203
+ const cefSeverity = CEF_SEVERITY[event.severity];
204
+ // CEF:Version|Device Vendor|Device Product|Device Version|Signature ID|Name|Severity|Extension
205
+ const cef = [
206
+ "CEF:0",
207
+ "Pantheon Security",
208
+ "NotebookLM MCP",
209
+ "1.5.1",
210
+ event.event_type,
211
+ event.event_name,
212
+ cefSeverity.toString(),
213
+ ].join("|");
214
+ // Add extension fields
215
+ const extensions = [];
216
+ extensions.push(`msg=${this.escapeExtension(event.message)}`);
217
+ extensions.push(`src=${event.source}`);
218
+ extensions.push(`rt=${new Date(event.timestamp).getTime()}`);
219
+ if (event.details) {
220
+ for (const [key, value] of Object.entries(event.details)) {
221
+ extensions.push(`${key}=${this.escapeExtension(String(value))}`);
222
+ }
223
+ }
224
+ return `${cef} ${extensions.join(" ")}`;
225
+ }
226
+ /**
227
+ * Export event as CEF
228
+ */
229
+ async exportCEF(event) {
230
+ const cefMessage = this.formatCEF(event);
231
+ return this.sendToEndpoint(cefMessage);
232
+ }
233
+ /**
234
+ * Format event as LEEF (Log Event Extended Format)
235
+ */
236
+ formatLEEF(event) {
237
+ // LEEF:Version|Vendor|Product|Version|EventID|attributes
238
+ const leef = [
239
+ "LEEF:2.0",
240
+ "Pantheon Security",
241
+ "NotebookLM MCP",
242
+ "1.5.1",
243
+ event.event_type,
244
+ ].join("|");
245
+ // Add attributes
246
+ const attributes = [];
247
+ attributes.push(`cat=${event.event_name}`);
248
+ attributes.push(`sev=${SYSLOG_SEVERITY[event.severity]}`);
249
+ attributes.push(`msg=${event.message}`);
250
+ attributes.push(`src=${event.source}`);
251
+ attributes.push(`devTime=${event.timestamp}`);
252
+ if (event.details) {
253
+ for (const [key, value] of Object.entries(event.details)) {
254
+ attributes.push(`${key}=${String(value)}`);
255
+ }
256
+ }
257
+ return `${leef}\t${attributes.join("\t")}`;
258
+ }
259
+ /**
260
+ * Export event as LEEF
261
+ */
262
+ async exportLEEF(event) {
263
+ const leefMessage = this.formatLEEF(event);
264
+ return this.sendToEndpoint(leefMessage);
265
+ }
266
+ /**
267
+ * Format event as RFC 5424 syslog
268
+ */
269
+ formatSyslog(event) {
270
+ const priority = (16 * 8) + SYSLOG_SEVERITY[event.severity]; // Local0 facility
271
+ const timestamp = new Date(event.timestamp).toISOString();
272
+ const hostname = "notebooklm-mcp";
273
+ const appName = "nlmcp";
274
+ const procId = process.pid.toString();
275
+ const msgId = event.event_type;
276
+ // RFC 5424 format
277
+ return `<${priority}>1 ${timestamp} ${hostname} ${appName} ${procId} ${msgId} - ${event.message}`;
278
+ }
279
+ /**
280
+ * Export event as syslog
281
+ */
282
+ async exportSyslog(event) {
283
+ if (!this.config.syslog_host) {
284
+ return false;
285
+ }
286
+ const syslogMessage = this.formatSyslog(event);
287
+ return new Promise((resolve) => {
288
+ const client = dgram.createSocket("udp4");
289
+ const buffer = Buffer.from(syslogMessage);
290
+ client.send(buffer, 0, buffer.length, this.config.syslog_port || 514, this.config.syslog_host, (err) => {
291
+ client.close();
292
+ resolve(!err);
293
+ });
294
+ // Timeout
295
+ setTimeout(() => {
296
+ try {
297
+ client.close();
298
+ }
299
+ catch {
300
+ // Ignore
301
+ }
302
+ resolve(false);
303
+ }, 5000);
304
+ });
305
+ }
306
+ /**
307
+ * Export event to Splunk HEC
308
+ */
309
+ async exportSplunkHEC(event) {
310
+ if (!this.config.endpoint) {
311
+ return false;
312
+ }
313
+ const splunkEvent = {
314
+ time: new Date(event.timestamp).getTime() / 1000,
315
+ host: "notebooklm-mcp",
316
+ source: event.source,
317
+ sourcetype: "notebooklm:security",
318
+ event: {
319
+ event_type: event.event_type,
320
+ event_name: event.event_name,
321
+ severity: event.severity,
322
+ message: event.message,
323
+ ...event.details,
324
+ },
325
+ };
326
+ return this.sendToEndpoint(JSON.stringify(splunkEvent));
327
+ }
328
+ /**
329
+ * Export event as JSON
330
+ */
331
+ async exportJSON(event) {
332
+ return this.sendToEndpoint(JSON.stringify(event));
333
+ }
334
+ /**
335
+ * Send message to configured endpoint
336
+ */
337
+ async sendToEndpoint(message) {
338
+ if (!this.config.endpoint) {
339
+ return false;
340
+ }
341
+ for (let attempt = 0; attempt < this.config.retry_attempts; attempt++) {
342
+ try {
343
+ const success = await this.httpPost(this.config.endpoint, message);
344
+ if (success) {
345
+ return true;
346
+ }
347
+ }
348
+ catch {
349
+ // Retry
350
+ }
351
+ // Wait before retry
352
+ if (attempt < this.config.retry_attempts - 1) {
353
+ await new Promise(resolve => setTimeout(resolve, 1000 * (attempt + 1)));
354
+ }
355
+ }
356
+ return false;
357
+ }
358
+ /**
359
+ * HTTP POST request
360
+ */
361
+ async httpPost(endpoint, body) {
362
+ return new Promise((resolve) => {
363
+ try {
364
+ const url = new URL(endpoint);
365
+ const headers = {
366
+ "Content-Type": "application/json",
367
+ "Content-Length": Buffer.byteLength(body).toString(),
368
+ };
369
+ if (this.config.api_key) {
370
+ headers["Authorization"] = `Bearer ${this.config.api_key}`;
371
+ }
372
+ const req = https.request({
373
+ hostname: url.hostname,
374
+ port: url.port || 443,
375
+ path: url.pathname + url.search,
376
+ method: "POST",
377
+ headers,
378
+ timeout: 10000,
379
+ }, (res) => {
380
+ resolve(res.statusCode !== undefined && res.statusCode >= 200 && res.statusCode < 300);
381
+ });
382
+ req.on("error", () => resolve(false));
383
+ req.on("timeout", () => {
384
+ req.destroy();
385
+ resolve(false);
386
+ });
387
+ req.write(body);
388
+ req.end();
389
+ }
390
+ catch {
391
+ resolve(false);
392
+ }
393
+ });
394
+ }
395
+ /**
396
+ * Escape CEF extension value
397
+ */
398
+ escapeExtension(value) {
399
+ return value
400
+ .replace(/\\/g, "\\\\")
401
+ .replace(/=/g, "\\=")
402
+ .replace(/\n/g, "\\n")
403
+ .replace(/\r/g, "\\r");
404
+ }
405
+ /**
406
+ * Save failed event for later retry
407
+ */
408
+ async saveFailedEvent(event) {
409
+ try {
410
+ const fileName = `failed-${new Date().toISOString().split("T")[0]}.jsonl`;
411
+ const filePath = path.join(this.failedDir, fileName);
412
+ appendFileSecure(filePath, JSON.stringify(event) + "\n");
413
+ }
414
+ catch {
415
+ // Ignore save errors
416
+ }
417
+ }
418
+ /**
419
+ * Retry failed events
420
+ */
421
+ async retryFailed() {
422
+ let sent = 0;
423
+ let failed = 0;
424
+ try {
425
+ if (!fs.existsSync(this.failedDir)) {
426
+ return { sent, failed };
427
+ }
428
+ const files = fs.readdirSync(this.failedDir).filter(f => f.endsWith(".jsonl"));
429
+ for (const file of files) {
430
+ const filePath = path.join(this.failedDir, file);
431
+ const content = fs.readFileSync(filePath, "utf-8");
432
+ const lines = content.trim().split("\n").filter(l => l);
433
+ const remainingEvents = [];
434
+ for (const line of lines) {
435
+ try {
436
+ const event = JSON.parse(line);
437
+ const success = await this.exportEvent(event);
438
+ if (success) {
439
+ sent++;
440
+ }
441
+ else {
442
+ failed++;
443
+ remainingEvents.push(event);
444
+ }
445
+ }
446
+ catch {
447
+ // Skip malformed events
448
+ }
449
+ }
450
+ // Update file with remaining events
451
+ if (remainingEvents.length === 0) {
452
+ fs.unlinkSync(filePath);
453
+ }
454
+ else {
455
+ fs.writeFileSync(filePath, remainingEvents.map(e => JSON.stringify(e)).join("\n") + "\n");
456
+ }
457
+ }
458
+ }
459
+ catch {
460
+ // Ignore retry errors
461
+ }
462
+ return { sent, failed };
463
+ }
464
+ /**
465
+ * Get exporter statistics
466
+ */
467
+ getStats() {
468
+ return {
469
+ enabled: this.config.enabled,
470
+ format: this.config.format,
471
+ queue_size: this.eventQueue.length,
472
+ endpoint_configured: !!this.config.endpoint,
473
+ syslog_configured: !!this.config.syslog_host,
474
+ };
475
+ }
476
+ }
477
+ // ============================================
478
+ // SINGLETON ACCESS
479
+ // ============================================
480
+ /**
481
+ * Get the SIEM exporter instance
482
+ */
483
+ export function getSIEMExporter() {
484
+ return SIEMExporter.getInstance();
485
+ }
486
+ // ============================================
487
+ // CONVENIENCE EXPORTS
488
+ // ============================================
489
+ /**
490
+ * Queue an event for SIEM export
491
+ */
492
+ export async function exportToSIEM(eventType, eventName, severity, message, source, details) {
493
+ return getSIEMExporter().queueEvent({
494
+ timestamp: new Date().toISOString(),
495
+ event_type: eventType,
496
+ event_name: eventName,
497
+ severity,
498
+ source,
499
+ message,
500
+ details: details || {},
501
+ });
502
+ }
503
+ /**
504
+ * Flush SIEM event queue
505
+ */
506
+ export async function flushSIEM() {
507
+ return getSIEMExporter().flush();
508
+ }
509
+ //# sourceMappingURL=siem-exporter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"siem-exporter.js","sourceRoot":"","sources":["../../src/compliance/siem-exporter.ts"],"names":[],"mappings":"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"}