@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.
- package/README.md +61 -7
- package/SECURITY.md +40 -6
- package/dist/auth/mcp-auth.d.ts.map +1 -1
- package/dist/auth/mcp-auth.js +3 -6
- package/dist/auth/mcp-auth.js.map +1 -1
- package/dist/compliance/alert-manager.d.ts +120 -0
- package/dist/compliance/alert-manager.d.ts.map +1 -0
- package/dist/compliance/alert-manager.js +420 -0
- package/dist/compliance/alert-manager.js.map +1 -0
- package/dist/compliance/breach-detection.d.ts +134 -0
- package/dist/compliance/breach-detection.d.ts.map +1 -0
- package/dist/compliance/breach-detection.js +456 -0
- package/dist/compliance/breach-detection.js.map +1 -0
- package/dist/compliance/change-log.d.ts +113 -0
- package/dist/compliance/change-log.d.ts.map +1 -0
- package/dist/compliance/change-log.js +275 -0
- package/dist/compliance/change-log.js.map +1 -0
- package/dist/compliance/compliance-logger.d.ts +136 -0
- package/dist/compliance/compliance-logger.d.ts.map +1 -0
- package/dist/compliance/compliance-logger.js +425 -0
- package/dist/compliance/compliance-logger.js.map +1 -0
- package/dist/compliance/compliance-tools.d.ts +18 -0
- package/dist/compliance/compliance-tools.d.ts.map +1 -0
- package/dist/compliance/compliance-tools.js +673 -0
- package/dist/compliance/compliance-tools.js.map +1 -0
- package/dist/compliance/consent-manager.d.ts +130 -0
- package/dist/compliance/consent-manager.d.ts.map +1 -0
- package/dist/compliance/consent-manager.js +386 -0
- package/dist/compliance/consent-manager.js.map +1 -0
- package/dist/compliance/dashboard.d.ts +243 -0
- package/dist/compliance/dashboard.d.ts.map +1 -0
- package/dist/compliance/dashboard.js +519 -0
- package/dist/compliance/dashboard.js.map +1 -0
- package/dist/compliance/data-classification.d.ts +117 -0
- package/dist/compliance/data-classification.d.ts.map +1 -0
- package/dist/compliance/data-classification.js +469 -0
- package/dist/compliance/data-classification.js.map +1 -0
- package/dist/compliance/data-erasure.d.ts +110 -0
- package/dist/compliance/data-erasure.d.ts.map +1 -0
- package/dist/compliance/data-erasure.js +501 -0
- package/dist/compliance/data-erasure.js.map +1 -0
- package/dist/compliance/data-export.d.ts +85 -0
- package/dist/compliance/data-export.d.ts.map +1 -0
- package/dist/compliance/data-export.js +394 -0
- package/dist/compliance/data-export.js.map +1 -0
- package/dist/compliance/data-inventory.d.ts +136 -0
- package/dist/compliance/data-inventory.d.ts.map +1 -0
- package/dist/compliance/data-inventory.js +335 -0
- package/dist/compliance/data-inventory.js.map +1 -0
- package/dist/compliance/dsar-handler.d.ts +123 -0
- package/dist/compliance/dsar-handler.d.ts.map +1 -0
- package/dist/compliance/dsar-handler.js +371 -0
- package/dist/compliance/dsar-handler.js.map +1 -0
- package/dist/compliance/evidence-collector.d.ts +187 -0
- package/dist/compliance/evidence-collector.d.ts.map +1 -0
- package/dist/compliance/evidence-collector.js +656 -0
- package/dist/compliance/evidence-collector.js.map +1 -0
- package/dist/compliance/health-monitor.d.ts +111 -0
- package/dist/compliance/health-monitor.d.ts.map +1 -0
- package/dist/compliance/health-monitor.js +509 -0
- package/dist/compliance/health-monitor.js.map +1 -0
- package/dist/compliance/incident-manager.d.ts +131 -0
- package/dist/compliance/incident-manager.d.ts.map +1 -0
- package/dist/compliance/incident-manager.js +418 -0
- package/dist/compliance/incident-manager.js.map +1 -0
- package/dist/compliance/index.d.ts +32 -0
- package/dist/compliance/index.d.ts.map +1 -0
- package/dist/compliance/index.js +35 -0
- package/dist/compliance/index.js.map +1 -0
- package/dist/compliance/policy-docs.d.ts +108 -0
- package/dist/compliance/policy-docs.d.ts.map +1 -0
- package/dist/compliance/policy-docs.js +464 -0
- package/dist/compliance/policy-docs.js.map +1 -0
- package/dist/compliance/privacy-notice-text.d.ts +58 -0
- package/dist/compliance/privacy-notice-text.d.ts.map +1 -0
- package/dist/compliance/privacy-notice-text.js +161 -0
- package/dist/compliance/privacy-notice-text.js.map +1 -0
- package/dist/compliance/privacy-notice.d.ts +128 -0
- package/dist/compliance/privacy-notice.d.ts.map +1 -0
- package/dist/compliance/privacy-notice.js +250 -0
- package/dist/compliance/privacy-notice.js.map +1 -0
- package/dist/compliance/report-generator.d.ts +168 -0
- package/dist/compliance/report-generator.d.ts.map +1 -0
- package/dist/compliance/report-generator.js +830 -0
- package/dist/compliance/report-generator.js.map +1 -0
- package/dist/compliance/retention-engine.d.ts +130 -0
- package/dist/compliance/retention-engine.d.ts.map +1 -0
- package/dist/compliance/retention-engine.js +510 -0
- package/dist/compliance/retention-engine.js.map +1 -0
- package/dist/compliance/siem-exporter.d.ts +150 -0
- package/dist/compliance/siem-exporter.d.ts.map +1 -0
- package/dist/compliance/siem-exporter.js +509 -0
- package/dist/compliance/siem-exporter.js.map +1 -0
- package/dist/compliance/types.d.ts +601 -0
- package/dist/compliance/types.d.ts.map +1 -0
- package/dist/compliance/types.js +22 -0
- package/dist/compliance/types.js.map +1 -0
- package/dist/config.d.ts +4 -0
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +8 -1
- package/dist/config.js.map +1 -1
- package/dist/library/notebook-library.d.ts.map +1 -1
- package/dist/library/notebook-library.js +2 -1
- package/dist/library/notebook-library.js.map +1 -1
- package/dist/session/shared-context-manager.d.ts.map +1 -1
- package/dist/session/shared-context-manager.js +2 -1
- package/dist/session/shared-context-manager.js.map +1 -1
- package/dist/utils/audit-logger.d.ts +21 -1
- package/dist/utils/audit-logger.d.ts.map +1 -1
- package/dist/utils/audit-logger.js +53 -4
- package/dist/utils/audit-logger.js.map +1 -1
- package/dist/utils/crypto.d.ts.map +1 -1
- package/dist/utils/crypto.js +8 -15
- package/dist/utils/crypto.js.map +1 -1
- package/dist/utils/file-permissions.d.ts +85 -0
- package/dist/utils/file-permissions.d.ts.map +1 -0
- package/dist/utils/file-permissions.js +180 -0
- package/dist/utils/file-permissions.js.map +1 -0
- package/dist/utils/settings-manager.d.ts.map +1 -1
- package/dist/utils/settings-manager.js +6 -11
- package/dist/utils/settings-manager.js.map +1 -1
- package/docs/COMPLIANCE-SPEC.md +1452 -0
- package/package.json +30 -4
|
@@ -0,0 +1,425 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Compliance Logger
|
|
3
|
+
*
|
|
4
|
+
* Structured logging for compliance events, separate from operational audit logs.
|
|
5
|
+
* Implements hash-chaining for tamper detection and supports 7-year retention (CSSF).
|
|
6
|
+
*
|
|
7
|
+
* Added by Pantheon Security for enterprise compliance support.
|
|
8
|
+
*/
|
|
9
|
+
import crypto from "crypto";
|
|
10
|
+
import path from "path";
|
|
11
|
+
import fs from "fs";
|
|
12
|
+
import { mkdirSecure, appendFileSecure } from "../utils/file-permissions.js";
|
|
13
|
+
import { getConfig } from "../config.js";
|
|
14
|
+
/**
|
|
15
|
+
* Generate a UUID v4
|
|
16
|
+
*/
|
|
17
|
+
function generateUUID() {
|
|
18
|
+
return crypto.randomUUID();
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* Compute SHA-256 hash
|
|
22
|
+
*/
|
|
23
|
+
function computeHash(data) {
|
|
24
|
+
return crypto.createHash("sha256").update(data).digest("hex");
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* Mask IP address (zero last octet for privacy)
|
|
28
|
+
*/
|
|
29
|
+
function maskIP(ip) {
|
|
30
|
+
if (!ip)
|
|
31
|
+
return "";
|
|
32
|
+
// IPv4
|
|
33
|
+
if (ip.includes(".")) {
|
|
34
|
+
const parts = ip.split(".");
|
|
35
|
+
if (parts.length === 4) {
|
|
36
|
+
parts[3] = "0";
|
|
37
|
+
return parts.join(".");
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
// IPv6 - mask last segment
|
|
41
|
+
if (ip.includes(":")) {
|
|
42
|
+
const parts = ip.split(":");
|
|
43
|
+
if (parts.length > 0) {
|
|
44
|
+
parts[parts.length - 1] = "0";
|
|
45
|
+
return parts.join(":");
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
return ip;
|
|
49
|
+
}
|
|
50
|
+
/**
|
|
51
|
+
* Compliance Logger class
|
|
52
|
+
*/
|
|
53
|
+
export class ComplianceLogger {
|
|
54
|
+
static instance;
|
|
55
|
+
complianceDir;
|
|
56
|
+
enabled;
|
|
57
|
+
retentionYears;
|
|
58
|
+
lastHash = "0".repeat(64); // Genesis hash
|
|
59
|
+
constructor() {
|
|
60
|
+
const config = getConfig();
|
|
61
|
+
const envEnabled = process.env.NLMCP_COMPLIANCE_ENABLED;
|
|
62
|
+
this.enabled = envEnabled !== undefined
|
|
63
|
+
? envEnabled.toLowerCase() === "true"
|
|
64
|
+
: true; // Enabled by default
|
|
65
|
+
this.complianceDir = process.env.NLMCP_COMPLIANCE_DIR ||
|
|
66
|
+
path.join(config.dataDir, "compliance");
|
|
67
|
+
this.retentionYears = parseInt(process.env.NLMCP_COMPLIANCE_RETENTION_YEARS || "7", 10);
|
|
68
|
+
if (this.enabled) {
|
|
69
|
+
this.ensureComplianceDir();
|
|
70
|
+
this.loadLastHash();
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
/**
|
|
74
|
+
* Get singleton instance
|
|
75
|
+
*/
|
|
76
|
+
static getInstance() {
|
|
77
|
+
if (!ComplianceLogger.instance) {
|
|
78
|
+
ComplianceLogger.instance = new ComplianceLogger();
|
|
79
|
+
}
|
|
80
|
+
return ComplianceLogger.instance;
|
|
81
|
+
}
|
|
82
|
+
/**
|
|
83
|
+
* Ensure compliance directory exists
|
|
84
|
+
*/
|
|
85
|
+
ensureComplianceDir() {
|
|
86
|
+
mkdirSecure(this.complianceDir);
|
|
87
|
+
}
|
|
88
|
+
/**
|
|
89
|
+
* Get the current log file path (monthly rotation)
|
|
90
|
+
*/
|
|
91
|
+
getLogFilePath() {
|
|
92
|
+
const now = new Date();
|
|
93
|
+
const year = now.getFullYear();
|
|
94
|
+
const month = String(now.getMonth() + 1).padStart(2, "0");
|
|
95
|
+
return path.join(this.complianceDir, `events-${year}-${month}.jsonl`);
|
|
96
|
+
}
|
|
97
|
+
/**
|
|
98
|
+
* Load the last hash from the current log file
|
|
99
|
+
*/
|
|
100
|
+
loadLastHash() {
|
|
101
|
+
try {
|
|
102
|
+
const logPath = this.getLogFilePath();
|
|
103
|
+
if (fs.existsSync(logPath)) {
|
|
104
|
+
const content = fs.readFileSync(logPath, "utf-8");
|
|
105
|
+
const lines = content.trim().split("\n").filter(line => line);
|
|
106
|
+
if (lines.length > 0) {
|
|
107
|
+
const lastLine = lines[lines.length - 1];
|
|
108
|
+
const lastEvent = JSON.parse(lastLine);
|
|
109
|
+
this.lastHash = lastEvent.hash;
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
catch {
|
|
114
|
+
// If we can't read the hash, start fresh
|
|
115
|
+
this.lastHash = "0".repeat(64);
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
/**
|
|
119
|
+
* Create a compliance event
|
|
120
|
+
*/
|
|
121
|
+
createEvent(category, eventType, actor, outcome, options = {}) {
|
|
122
|
+
const timestamp = new Date().toISOString();
|
|
123
|
+
const event = {
|
|
124
|
+
id: generateUUID(),
|
|
125
|
+
timestamp,
|
|
126
|
+
category,
|
|
127
|
+
event_type: eventType,
|
|
128
|
+
actor: {
|
|
129
|
+
type: actor.type || "system",
|
|
130
|
+
id: actor.id,
|
|
131
|
+
ip: actor.ip ? maskIP(actor.ip) : undefined,
|
|
132
|
+
},
|
|
133
|
+
resource: options.resource,
|
|
134
|
+
details: options.details,
|
|
135
|
+
legal_basis: options.legalBasis,
|
|
136
|
+
data_categories: options.dataCategories,
|
|
137
|
+
retention_days: options.retentionDays || this.retentionYears * 365,
|
|
138
|
+
outcome,
|
|
139
|
+
failure_reason: options.failureReason,
|
|
140
|
+
hash: "", // Will be computed
|
|
141
|
+
previous_hash: this.lastHash,
|
|
142
|
+
};
|
|
143
|
+
// Compute hash (exclude hash field itself)
|
|
144
|
+
const hashInput = JSON.stringify({
|
|
145
|
+
...event,
|
|
146
|
+
hash: undefined,
|
|
147
|
+
});
|
|
148
|
+
event.hash = computeHash(hashInput);
|
|
149
|
+
this.lastHash = event.hash;
|
|
150
|
+
return event;
|
|
151
|
+
}
|
|
152
|
+
/**
|
|
153
|
+
* Write event to log file
|
|
154
|
+
*/
|
|
155
|
+
async writeEvent(event) {
|
|
156
|
+
if (!this.enabled)
|
|
157
|
+
return;
|
|
158
|
+
const logPath = this.getLogFilePath();
|
|
159
|
+
const line = JSON.stringify(event) + "\n";
|
|
160
|
+
appendFileSecure(logPath, line);
|
|
161
|
+
}
|
|
162
|
+
/**
|
|
163
|
+
* Log a compliance event
|
|
164
|
+
*/
|
|
165
|
+
async log(category, eventType, actor, outcome, options = {}) {
|
|
166
|
+
const event = this.createEvent(category, eventType, actor, outcome, options);
|
|
167
|
+
await this.writeEvent(event);
|
|
168
|
+
return event;
|
|
169
|
+
}
|
|
170
|
+
// ============================================
|
|
171
|
+
// CONVENIENCE METHODS
|
|
172
|
+
// ============================================
|
|
173
|
+
/**
|
|
174
|
+
* Log consent event
|
|
175
|
+
*/
|
|
176
|
+
async logConsent(action, actor, purposes, success, details) {
|
|
177
|
+
return this.log("consent", `consent_${action}`, actor, success ? "success" : "failure", {
|
|
178
|
+
details: { ...details, purposes },
|
|
179
|
+
legalBasis: "consent",
|
|
180
|
+
});
|
|
181
|
+
}
|
|
182
|
+
/**
|
|
183
|
+
* Log data access event
|
|
184
|
+
*/
|
|
185
|
+
async logDataAccess(action, actor, dataType, success, details) {
|
|
186
|
+
return this.log("data_access", `data_${action}`, actor, success ? "success" : "failure", {
|
|
187
|
+
resource: { type: dataType },
|
|
188
|
+
details,
|
|
189
|
+
});
|
|
190
|
+
}
|
|
191
|
+
/**
|
|
192
|
+
* Log data export event (GDPR Article 20)
|
|
193
|
+
*/
|
|
194
|
+
async logDataExport(actor, dataTypes, success, details) {
|
|
195
|
+
return this.log("data_export", "data_portability_export", actor, success ? "success" : "failure", {
|
|
196
|
+
details: { ...details, data_types: dataTypes },
|
|
197
|
+
legalBasis: "consent",
|
|
198
|
+
});
|
|
199
|
+
}
|
|
200
|
+
/**
|
|
201
|
+
* Log data deletion event (GDPR Article 17)
|
|
202
|
+
*/
|
|
203
|
+
async logDataDeletion(actor, dataType, itemCount, success, details) {
|
|
204
|
+
return this.log("data_deletion", "erasure_completed", actor, success ? "success" : "failure", {
|
|
205
|
+
resource: { type: dataType },
|
|
206
|
+
details: { ...details, items_deleted: itemCount },
|
|
207
|
+
});
|
|
208
|
+
}
|
|
209
|
+
/**
|
|
210
|
+
* Log security incident
|
|
211
|
+
*/
|
|
212
|
+
async logSecurityIncident(incidentType, severity, details) {
|
|
213
|
+
return this.log("security_incident", incidentType, { type: "system" }, "success", {
|
|
214
|
+
details: { ...details, severity },
|
|
215
|
+
});
|
|
216
|
+
}
|
|
217
|
+
/**
|
|
218
|
+
* Log policy change
|
|
219
|
+
*/
|
|
220
|
+
async logPolicyChange(setting, oldValue, newValue, changedBy) {
|
|
221
|
+
return this.log("policy_change", "configuration_changed", { type: changedBy }, "success", {
|
|
222
|
+
resource: { type: "configuration", id: setting },
|
|
223
|
+
details: { old_value: oldValue, new_value: newValue },
|
|
224
|
+
});
|
|
225
|
+
}
|
|
226
|
+
/**
|
|
227
|
+
* Log access control event
|
|
228
|
+
*/
|
|
229
|
+
async logAccessControl(action, actor, success, details) {
|
|
230
|
+
return this.log("access_control", action, actor, success ? "success" : "failure", { details });
|
|
231
|
+
}
|
|
232
|
+
/**
|
|
233
|
+
* Log retention event
|
|
234
|
+
*/
|
|
235
|
+
async logRetention(action, dataType, itemCount, details) {
|
|
236
|
+
return this.log("retention", `retention_${action}`, { type: "system" }, "success", {
|
|
237
|
+
resource: { type: dataType },
|
|
238
|
+
details: { ...details, items_affected: itemCount },
|
|
239
|
+
});
|
|
240
|
+
}
|
|
241
|
+
/**
|
|
242
|
+
* Log breach notification
|
|
243
|
+
*/
|
|
244
|
+
async logBreach(breachType, severity, notificationSent, details) {
|
|
245
|
+
return this.log("breach", breachType, { type: "system" }, "success", {
|
|
246
|
+
details: {
|
|
247
|
+
...details,
|
|
248
|
+
severity,
|
|
249
|
+
notification_sent: notificationSent,
|
|
250
|
+
},
|
|
251
|
+
});
|
|
252
|
+
}
|
|
253
|
+
// ============================================
|
|
254
|
+
// RETRIEVAL METHODS
|
|
255
|
+
// ============================================
|
|
256
|
+
/**
|
|
257
|
+
* Get events by category
|
|
258
|
+
*/
|
|
259
|
+
async getEvents(category, from, to, limit = 100) {
|
|
260
|
+
if (!this.enabled)
|
|
261
|
+
return [];
|
|
262
|
+
const events = [];
|
|
263
|
+
const files = this.getLogFiles();
|
|
264
|
+
for (const file of files) {
|
|
265
|
+
try {
|
|
266
|
+
const content = fs.readFileSync(file, "utf-8");
|
|
267
|
+
const lines = content.trim().split("\n").filter(line => line);
|
|
268
|
+
for (const line of lines) {
|
|
269
|
+
const event = JSON.parse(line);
|
|
270
|
+
// Filter by category
|
|
271
|
+
if (category && event.category !== category)
|
|
272
|
+
continue;
|
|
273
|
+
// Filter by date range
|
|
274
|
+
const eventDate = new Date(event.timestamp);
|
|
275
|
+
if (from && eventDate < from)
|
|
276
|
+
continue;
|
|
277
|
+
if (to && eventDate > to)
|
|
278
|
+
continue;
|
|
279
|
+
events.push(event);
|
|
280
|
+
if (events.length >= limit)
|
|
281
|
+
break;
|
|
282
|
+
}
|
|
283
|
+
if (events.length >= limit)
|
|
284
|
+
break;
|
|
285
|
+
}
|
|
286
|
+
catch {
|
|
287
|
+
// Skip corrupted files
|
|
288
|
+
}
|
|
289
|
+
}
|
|
290
|
+
return events;
|
|
291
|
+
}
|
|
292
|
+
/**
|
|
293
|
+
* Get log files sorted by date (newest first)
|
|
294
|
+
*/
|
|
295
|
+
getLogFiles() {
|
|
296
|
+
if (!fs.existsSync(this.complianceDir))
|
|
297
|
+
return [];
|
|
298
|
+
const files = fs.readdirSync(this.complianceDir)
|
|
299
|
+
.filter(f => f.startsWith("events-") && f.endsWith(".jsonl"))
|
|
300
|
+
.map(f => path.join(this.complianceDir, f))
|
|
301
|
+
.sort()
|
|
302
|
+
.reverse();
|
|
303
|
+
return files;
|
|
304
|
+
}
|
|
305
|
+
/**
|
|
306
|
+
* Verify hash chain integrity
|
|
307
|
+
*/
|
|
308
|
+
async verifyIntegrity() {
|
|
309
|
+
if (!this.enabled) {
|
|
310
|
+
return { valid: true, totalEvents: 0, validEvents: 0 };
|
|
311
|
+
}
|
|
312
|
+
let totalEvents = 0;
|
|
313
|
+
let validEvents = 0;
|
|
314
|
+
let expectedHash = "0".repeat(64);
|
|
315
|
+
let lastValidEventId;
|
|
316
|
+
let firstInvalidEventId;
|
|
317
|
+
const files = this.getLogFiles().reverse(); // Oldest first
|
|
318
|
+
for (const file of files) {
|
|
319
|
+
try {
|
|
320
|
+
const content = fs.readFileSync(file, "utf-8");
|
|
321
|
+
const lines = content.trim().split("\n").filter(line => line);
|
|
322
|
+
for (const line of lines) {
|
|
323
|
+
totalEvents++;
|
|
324
|
+
const event = JSON.parse(line);
|
|
325
|
+
// Verify previous hash link
|
|
326
|
+
if (event.previous_hash !== expectedHash) {
|
|
327
|
+
if (!firstInvalidEventId) {
|
|
328
|
+
firstInvalidEventId = event.id;
|
|
329
|
+
}
|
|
330
|
+
continue;
|
|
331
|
+
}
|
|
332
|
+
// Verify event hash
|
|
333
|
+
const hashInput = JSON.stringify({
|
|
334
|
+
...event,
|
|
335
|
+
hash: undefined,
|
|
336
|
+
});
|
|
337
|
+
const computedHash = computeHash(hashInput);
|
|
338
|
+
if (computedHash !== event.hash) {
|
|
339
|
+
if (!firstInvalidEventId) {
|
|
340
|
+
firstInvalidEventId = event.id;
|
|
341
|
+
}
|
|
342
|
+
continue;
|
|
343
|
+
}
|
|
344
|
+
validEvents++;
|
|
345
|
+
lastValidEventId = event.id;
|
|
346
|
+
expectedHash = event.hash;
|
|
347
|
+
}
|
|
348
|
+
}
|
|
349
|
+
catch {
|
|
350
|
+
// Skip corrupted files
|
|
351
|
+
}
|
|
352
|
+
}
|
|
353
|
+
return {
|
|
354
|
+
valid: validEvents === totalEvents,
|
|
355
|
+
lastValidEvent: lastValidEventId,
|
|
356
|
+
firstInvalidEvent: firstInvalidEventId,
|
|
357
|
+
totalEvents,
|
|
358
|
+
validEvents,
|
|
359
|
+
};
|
|
360
|
+
}
|
|
361
|
+
/**
|
|
362
|
+
* Get compliance log statistics
|
|
363
|
+
*/
|
|
364
|
+
async getStats() {
|
|
365
|
+
const stats = {
|
|
366
|
+
enabled: this.enabled,
|
|
367
|
+
retentionYears: this.retentionYears,
|
|
368
|
+
complianceDir: this.complianceDir,
|
|
369
|
+
logFileCount: 0,
|
|
370
|
+
totalEvents: 0,
|
|
371
|
+
eventsByCategory: {
|
|
372
|
+
consent: 0,
|
|
373
|
+
data_access: 0,
|
|
374
|
+
data_export: 0,
|
|
375
|
+
data_deletion: 0,
|
|
376
|
+
data_processing: 0,
|
|
377
|
+
security_incident: 0,
|
|
378
|
+
policy_change: 0,
|
|
379
|
+
access_control: 0,
|
|
380
|
+
retention: 0,
|
|
381
|
+
breach: 0,
|
|
382
|
+
},
|
|
383
|
+
};
|
|
384
|
+
if (!this.enabled)
|
|
385
|
+
return stats;
|
|
386
|
+
const files = this.getLogFiles();
|
|
387
|
+
stats.logFileCount = files.length;
|
|
388
|
+
for (const file of files) {
|
|
389
|
+
try {
|
|
390
|
+
const content = fs.readFileSync(file, "utf-8");
|
|
391
|
+
const lines = content.trim().split("\n").filter(line => line);
|
|
392
|
+
for (const line of lines) {
|
|
393
|
+
stats.totalEvents++;
|
|
394
|
+
const event = JSON.parse(line);
|
|
395
|
+
if (event.category in stats.eventsByCategory) {
|
|
396
|
+
stats.eventsByCategory[event.category]++;
|
|
397
|
+
}
|
|
398
|
+
}
|
|
399
|
+
}
|
|
400
|
+
catch {
|
|
401
|
+
// Skip corrupted files
|
|
402
|
+
}
|
|
403
|
+
}
|
|
404
|
+
return stats;
|
|
405
|
+
}
|
|
406
|
+
}
|
|
407
|
+
// ============================================
|
|
408
|
+
// SINGLETON ACCESS
|
|
409
|
+
// ============================================
|
|
410
|
+
/**
|
|
411
|
+
* Get the compliance logger instance
|
|
412
|
+
*/
|
|
413
|
+
export function getComplianceLogger() {
|
|
414
|
+
return ComplianceLogger.getInstance();
|
|
415
|
+
}
|
|
416
|
+
// ============================================
|
|
417
|
+
// CONVENIENCE EXPORTS
|
|
418
|
+
// ============================================
|
|
419
|
+
/**
|
|
420
|
+
* Log a compliance event (convenience function)
|
|
421
|
+
*/
|
|
422
|
+
export async function logComplianceEvent(category, eventType, actor, outcome, options) {
|
|
423
|
+
return getComplianceLogger().log(category, eventType, actor, outcome, options);
|
|
424
|
+
}
|
|
425
|
+
//# sourceMappingURL=compliance-logger.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"compliance-logger.js","sourceRoot":"","sources":["../../src/compliance/compliance-logger.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Compliance MCP Tools
|
|
3
|
+
*
|
|
4
|
+
* Exposes compliance features as MCP tools for Claude integration.
|
|
5
|
+
* Provides structured access to compliance dashboard, reports, and evidence.
|
|
6
|
+
*
|
|
7
|
+
* Added by Pantheon Security for enterprise compliance support.
|
|
8
|
+
*/
|
|
9
|
+
import type { Tool, TextContent } from "@modelcontextprotocol/sdk/types.js";
|
|
10
|
+
/**
|
|
11
|
+
* Tool definitions for compliance features
|
|
12
|
+
*/
|
|
13
|
+
export declare function getComplianceTools(): Tool[];
|
|
14
|
+
/**
|
|
15
|
+
* Handle compliance tool calls
|
|
16
|
+
*/
|
|
17
|
+
export declare function handleComplianceToolCall(toolName: string, args: Record<string, unknown>): Promise<TextContent[]>;
|
|
18
|
+
//# sourceMappingURL=compliance-tools.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"compliance-tools.d.ts","sourceRoot":"","sources":["../../src/compliance/compliance-tools.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,IAAI,EAAE,WAAW,EAAE,MAAM,oCAAoC,CAAC;AAc5E;;GAEG;AACH,wBAAgB,kBAAkB,IAAI,IAAI,EAAE,CAuU3C;AAED;;GAEG;AACH,wBAAsB,wBAAwB,CAC5C,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC5B,OAAO,CAAC,WAAW,EAAE,CAAC,CAkExB"}
|