@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,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"}