@pan-sec/notebooklm-mcp 1.4.0 → 1.7.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 (230) 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/events/event-emitter.d.ts +45 -0
  103. package/dist/events/event-emitter.d.ts.map +1 -0
  104. package/dist/events/event-emitter.js +100 -0
  105. package/dist/events/event-emitter.js.map +1 -0
  106. package/dist/events/event-types.d.ts +124 -0
  107. package/dist/events/event-types.d.ts.map +1 -0
  108. package/dist/events/event-types.js +18 -0
  109. package/dist/events/event-types.js.map +1 -0
  110. package/dist/index.js +59 -2
  111. package/dist/index.js.map +1 -1
  112. package/dist/library/notebook-library.d.ts +25 -2
  113. package/dist/library/notebook-library.d.ts.map +1 -1
  114. package/dist/library/notebook-library.js +144 -3
  115. package/dist/library/notebook-library.js.map +1 -1
  116. package/dist/library/types.d.ts +15 -0
  117. package/dist/library/types.d.ts.map +1 -1
  118. package/dist/notebook-creation/audio-manager.d.ts +56 -0
  119. package/dist/notebook-creation/audio-manager.d.ts.map +1 -0
  120. package/dist/notebook-creation/audio-manager.js +335 -0
  121. package/dist/notebook-creation/audio-manager.js.map +1 -0
  122. package/dist/notebook-creation/discover-creation-flow.d.ts +8 -0
  123. package/dist/notebook-creation/discover-creation-flow.d.ts.map +1 -0
  124. package/dist/notebook-creation/discover-creation-flow.js +177 -0
  125. package/dist/notebook-creation/discover-creation-flow.js.map +1 -0
  126. package/dist/notebook-creation/discover-quota.d.ts +8 -0
  127. package/dist/notebook-creation/discover-quota.d.ts.map +1 -0
  128. package/dist/notebook-creation/discover-quota.js +195 -0
  129. package/dist/notebook-creation/discover-quota.js.map +1 -0
  130. package/dist/notebook-creation/discover-source-dialog.d.ts +8 -0
  131. package/dist/notebook-creation/discover-source-dialog.d.ts.map +1 -0
  132. package/dist/notebook-creation/discover-source-dialog.js +134 -0
  133. package/dist/notebook-creation/discover-source-dialog.js.map +1 -0
  134. package/dist/notebook-creation/discover-sources.d.ts +8 -0
  135. package/dist/notebook-creation/discover-sources.d.ts.map +1 -0
  136. package/dist/notebook-creation/discover-sources.js +273 -0
  137. package/dist/notebook-creation/discover-sources.js.map +1 -0
  138. package/dist/notebook-creation/discover-text-input.d.ts +7 -0
  139. package/dist/notebook-creation/discover-text-input.d.ts.map +1 -0
  140. package/dist/notebook-creation/discover-text-input.js +135 -0
  141. package/dist/notebook-creation/discover-text-input.js.map +1 -0
  142. package/dist/notebook-creation/index.d.ts +12 -0
  143. package/dist/notebook-creation/index.d.ts.map +1 -0
  144. package/dist/notebook-creation/index.js +12 -0
  145. package/dist/notebook-creation/index.js.map +1 -0
  146. package/dist/notebook-creation/notebook-creator.d.ts +95 -0
  147. package/dist/notebook-creation/notebook-creator.d.ts.map +1 -0
  148. package/dist/notebook-creation/notebook-creator.js +689 -0
  149. package/dist/notebook-creation/notebook-creator.js.map +1 -0
  150. package/dist/notebook-creation/notebook-sync.d.ts +93 -0
  151. package/dist/notebook-creation/notebook-sync.d.ts.map +1 -0
  152. package/dist/notebook-creation/notebook-sync.js +370 -0
  153. package/dist/notebook-creation/notebook-sync.js.map +1 -0
  154. package/dist/notebook-creation/run-discovery.d.ts +11 -0
  155. package/dist/notebook-creation/run-discovery.d.ts.map +1 -0
  156. package/dist/notebook-creation/run-discovery.js +151 -0
  157. package/dist/notebook-creation/run-discovery.js.map +1 -0
  158. package/dist/notebook-creation/selector-discovery.d.ts +65 -0
  159. package/dist/notebook-creation/selector-discovery.d.ts.map +1 -0
  160. package/dist/notebook-creation/selector-discovery.js +421 -0
  161. package/dist/notebook-creation/selector-discovery.js.map +1 -0
  162. package/dist/notebook-creation/selectors.d.ts +150 -0
  163. package/dist/notebook-creation/selectors.d.ts.map +1 -0
  164. package/dist/notebook-creation/selectors.js +225 -0
  165. package/dist/notebook-creation/selectors.js.map +1 -0
  166. package/dist/notebook-creation/source-manager.d.ts +73 -0
  167. package/dist/notebook-creation/source-manager.d.ts.map +1 -0
  168. package/dist/notebook-creation/source-manager.js +486 -0
  169. package/dist/notebook-creation/source-manager.js.map +1 -0
  170. package/dist/notebook-creation/test-create.d.ts +8 -0
  171. package/dist/notebook-creation/test-create.d.ts.map +1 -0
  172. package/dist/notebook-creation/test-create.js +72 -0
  173. package/dist/notebook-creation/test-create.js.map +1 -0
  174. package/dist/notebook-creation/types.d.ts +173 -0
  175. package/dist/notebook-creation/types.d.ts.map +1 -0
  176. package/dist/notebook-creation/types.js +5 -0
  177. package/dist/notebook-creation/types.js.map +1 -0
  178. package/dist/quota/index.d.ts +8 -0
  179. package/dist/quota/index.d.ts.map +1 -0
  180. package/dist/quota/index.js +8 -0
  181. package/dist/quota/index.js.map +1 -0
  182. package/dist/quota/quota-manager.d.ts +125 -0
  183. package/dist/quota/quota-manager.d.ts.map +1 -0
  184. package/dist/quota/quota-manager.js +330 -0
  185. package/dist/quota/quota-manager.js.map +1 -0
  186. package/dist/session/session-manager.d.ts +5 -0
  187. package/dist/session/session-manager.d.ts.map +1 -1
  188. package/dist/session/session-manager.js +6 -0
  189. package/dist/session/session-manager.js.map +1 -1
  190. package/dist/session/shared-context-manager.d.ts.map +1 -1
  191. package/dist/session/shared-context-manager.js +2 -1
  192. package/dist/session/shared-context-manager.js.map +1 -1
  193. package/dist/tools/definitions/notebook-management.d.ts.map +1 -1
  194. package/dist/tools/definitions/notebook-management.js +525 -0
  195. package/dist/tools/definitions/notebook-management.js.map +1 -1
  196. package/dist/tools/definitions/system.d.ts.map +1 -1
  197. package/dist/tools/definitions/system.js +158 -0
  198. package/dist/tools/definitions/system.js.map +1 -1
  199. package/dist/tools/handlers.d.ts +225 -0
  200. package/dist/tools/handlers.d.ts.map +1 -1
  201. package/dist/tools/handlers.js +911 -0
  202. package/dist/tools/handlers.js.map +1 -1
  203. package/dist/utils/audit-logger.d.ts +21 -1
  204. package/dist/utils/audit-logger.d.ts.map +1 -1
  205. package/dist/utils/audit-logger.js +53 -4
  206. package/dist/utils/audit-logger.js.map +1 -1
  207. package/dist/utils/crypto.d.ts.map +1 -1
  208. package/dist/utils/crypto.js +8 -15
  209. package/dist/utils/crypto.js.map +1 -1
  210. package/dist/utils/file-permissions.d.ts +85 -0
  211. package/dist/utils/file-permissions.d.ts.map +1 -0
  212. package/dist/utils/file-permissions.js +180 -0
  213. package/dist/utils/file-permissions.js.map +1 -0
  214. package/dist/utils/settings-manager.d.ts.map +1 -1
  215. package/dist/utils/settings-manager.js +6 -11
  216. package/dist/utils/settings-manager.js.map +1 -1
  217. package/dist/webhooks/index.d.ts +8 -0
  218. package/dist/webhooks/index.d.ts.map +1 -0
  219. package/dist/webhooks/index.js +8 -0
  220. package/dist/webhooks/index.js.map +1 -0
  221. package/dist/webhooks/types.d.ts +57 -0
  222. package/dist/webhooks/types.d.ts.map +1 -0
  223. package/dist/webhooks/types.js +5 -0
  224. package/dist/webhooks/types.js.map +1 -0
  225. package/dist/webhooks/webhook-dispatcher.d.ts +120 -0
  226. package/dist/webhooks/webhook-dispatcher.d.ts.map +1 -0
  227. package/dist/webhooks/webhook-dispatcher.js +519 -0
  228. package/dist/webhooks/webhook-dispatcher.js.map +1 -0
  229. package/docs/COMPLIANCE-SPEC.md +1452 -0
  230. 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"}