@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,656 @@
1
+ /**
2
+ * Evidence Collector
3
+ *
4
+ * Collects and packages evidence for compliance audits.
5
+ * Creates audit-ready evidence packages with integrity verification.
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 { getConfig } from "../config.js";
13
+ import { mkdirSecure, writeFileSecure } from "../utils/file-permissions.js";
14
+ import { getComplianceLogger } from "./compliance-logger.js";
15
+ import { getConsentManager } from "./consent-manager.js";
16
+ import { getDataInventory } from "./data-inventory.js";
17
+ import { getDSARHandler } from "./dsar-handler.js";
18
+ import { getIncidentManager } from "./incident-manager.js";
19
+ import { getChangeLog } from "./change-log.js";
20
+ import { getPolicyDocManager } from "./policy-docs.js";
21
+ import { getReportGenerator } from "./report-generator.js";
22
+ import { getComplianceDashboard } from "./dashboard.js";
23
+ /**
24
+ * Evidence Collector class
25
+ */
26
+ export class EvidenceCollector {
27
+ static instance;
28
+ evidenceDir;
29
+ constructor() {
30
+ const config = getConfig();
31
+ this.evidenceDir = path.join(config.dataDir, "evidence");
32
+ mkdirSecure(this.evidenceDir);
33
+ }
34
+ /**
35
+ * Get singleton instance
36
+ */
37
+ static getInstance() {
38
+ if (!EvidenceCollector.instance) {
39
+ EvidenceCollector.instance = new EvidenceCollector();
40
+ }
41
+ return EvidenceCollector.instance;
42
+ }
43
+ /**
44
+ * Collect evidence package
45
+ */
46
+ async collectEvidence(options = {}) {
47
+ const packageId = crypto.randomUUID();
48
+ const from = options.from || new Date(Date.now() - 30 * 24 * 60 * 60 * 1000);
49
+ const to = options.to || new Date();
50
+ const types = options.types || this.getDefaultTypes();
51
+ const regulations = options.regulations || ["GDPR", "SOC2", "CSSF"];
52
+ const purpose = options.purpose || "Compliance Audit";
53
+ const items = [];
54
+ // Collect each type of evidence
55
+ for (const type of types) {
56
+ try {
57
+ const evidence = await this.collectEvidenceType(type, from, to, options.includeRawData);
58
+ if (evidence) {
59
+ items.push(evidence);
60
+ }
61
+ }
62
+ catch (error) {
63
+ // Log but continue collecting other evidence
64
+ console.error(`Failed to collect ${type} evidence:`, error);
65
+ }
66
+ }
67
+ // Calculate package checksum
68
+ const packageData = JSON.stringify(items);
69
+ const packageChecksum = crypto.createHash("sha256").update(packageData).digest("hex");
70
+ // Calculate total size
71
+ const totalSize = items.reduce((sum, item) => sum + item.size_bytes, 0);
72
+ const evidencePackage = {
73
+ package_id: packageId,
74
+ created_at: new Date().toISOString(),
75
+ created_by: "evidence-collector",
76
+ purpose,
77
+ period: {
78
+ from: from.toISOString(),
79
+ to: to.toISOString(),
80
+ },
81
+ regulations,
82
+ items,
83
+ manifest: {
84
+ total_items: items.length,
85
+ total_size_bytes: totalSize,
86
+ types_included: items.map(i => i.type),
87
+ package_checksum: packageChecksum,
88
+ },
89
+ chain_of_custody: [
90
+ {
91
+ timestamp: new Date().toISOString(),
92
+ action: "created",
93
+ actor: "evidence-collector",
94
+ details: `Evidence package created for ${purpose}`,
95
+ },
96
+ ],
97
+ };
98
+ return evidencePackage;
99
+ }
100
+ /**
101
+ * Get default evidence types
102
+ */
103
+ getDefaultTypes() {
104
+ return [
105
+ "audit_logs",
106
+ "consent_records",
107
+ "data_inventory",
108
+ "dsar_records",
109
+ "incident_records",
110
+ "change_records",
111
+ "policy_documents",
112
+ "compliance_reports",
113
+ "configuration",
114
+ "integrity_proofs",
115
+ ];
116
+ }
117
+ /**
118
+ * Collect specific evidence type
119
+ */
120
+ async collectEvidenceType(type, from, to, includeRawData) {
121
+ const id = crypto.randomUUID();
122
+ const collectedAt = new Date().toISOString();
123
+ switch (type) {
124
+ case "audit_logs":
125
+ return this.collectAuditLogs(id, collectedAt, from, to, includeRawData);
126
+ case "consent_records":
127
+ return this.collectConsentRecords(id, collectedAt);
128
+ case "data_inventory":
129
+ return this.collectDataInventory(id, collectedAt);
130
+ case "dsar_records":
131
+ return this.collectDSARRecords(id, collectedAt, from, to);
132
+ case "incident_records":
133
+ return this.collectIncidentRecords(id, collectedAt, from, to);
134
+ case "change_records":
135
+ return this.collectChangeRecords(id, collectedAt, from, to);
136
+ case "policy_documents":
137
+ return this.collectPolicyDocuments(id, collectedAt);
138
+ case "compliance_reports":
139
+ return this.collectComplianceReports(id, collectedAt, from, to);
140
+ case "configuration":
141
+ return this.collectConfiguration(id, collectedAt);
142
+ case "integrity_proofs":
143
+ return this.collectIntegrityProofs(id, collectedAt);
144
+ default:
145
+ return null;
146
+ }
147
+ }
148
+ /**
149
+ * Collect audit logs
150
+ */
151
+ async collectAuditLogs(id, collectedAt, from, to, includeRawData) {
152
+ const logger = getComplianceLogger();
153
+ const stats = await logger.getStats();
154
+ const events = await logger.getEvents(undefined, from, to, 10000);
155
+ const integrity = await logger.verifyIntegrity();
156
+ const data = {
157
+ statistics: stats,
158
+ integrity_verification: integrity,
159
+ events_count: events.length,
160
+ events: includeRawData ? events : events.slice(0, 100), // Sample if not including all
161
+ sample_note: includeRawData ? undefined : "Limited to first 100 events. Set includeRawData=true for full data.",
162
+ };
163
+ const dataStr = JSON.stringify(data);
164
+ return {
165
+ id,
166
+ type: "audit_logs",
167
+ title: "Compliance Audit Logs",
168
+ description: "Hash-chained audit log entries with integrity verification",
169
+ collected_at: collectedAt,
170
+ source: "compliance-logger",
171
+ checksum: crypto.createHash("sha256").update(dataStr).digest("hex"),
172
+ size_bytes: Buffer.byteLength(dataStr),
173
+ data,
174
+ };
175
+ }
176
+ /**
177
+ * Collect consent records
178
+ */
179
+ async collectConsentRecords(id, collectedAt) {
180
+ const consentManager = getConsentManager();
181
+ const consents = await consentManager.getActiveConsents();
182
+ const validation = await consentManager.validateConsents();
183
+ const data = {
184
+ total_consents: consents.length,
185
+ validation_result: validation,
186
+ consents: consents.map((c) => ({
187
+ purpose: c.purposes.join(", "),
188
+ legal_basis: c.legal_basis,
189
+ granted_at: c.granted_at,
190
+ expires_at: c.expires_at,
191
+ is_valid: c.is_valid,
192
+ revoked: c.revoked,
193
+ })),
194
+ };
195
+ const dataStr = JSON.stringify(data);
196
+ return {
197
+ id,
198
+ type: "consent_records",
199
+ title: "GDPR Consent Records",
200
+ description: "Records of data processing consent with legal basis",
201
+ collected_at: collectedAt,
202
+ source: "consent-manager",
203
+ checksum: crypto.createHash("sha256").update(dataStr).digest("hex"),
204
+ size_bytes: Buffer.byteLength(dataStr),
205
+ data,
206
+ };
207
+ }
208
+ /**
209
+ * Collect data inventory
210
+ */
211
+ async collectDataInventory(id, collectedAt) {
212
+ const inventory = getDataInventory();
213
+ const items = await inventory.getAll();
214
+ const exportable = await inventory.getExportable();
215
+ const erasable = await inventory.getErasable();
216
+ const data = {
217
+ total_categories: items.length,
218
+ exportable_categories: exportable.length,
219
+ erasable_categories: erasable.length,
220
+ inventory: items,
221
+ };
222
+ const dataStr = JSON.stringify(data);
223
+ return {
224
+ id,
225
+ type: "data_inventory",
226
+ title: "GDPR Article 30 Data Inventory",
227
+ description: "Records of processing activities",
228
+ collected_at: collectedAt,
229
+ source: "data-inventory",
230
+ checksum: crypto.createHash("sha256").update(dataStr).digest("hex"),
231
+ size_bytes: Buffer.byteLength(dataStr),
232
+ data,
233
+ };
234
+ }
235
+ /**
236
+ * Collect DSAR records
237
+ */
238
+ async collectDSARRecords(id, collectedAt, from, to) {
239
+ const dsarHandler = getDSARHandler();
240
+ const summary = await dsarHandler.getStatistics();
241
+ const requests = await dsarHandler.getAllRequests();
242
+ // Filter requests by date range
243
+ const filteredRequests = requests.filter((r) => {
244
+ const date = new Date(r.submitted_at);
245
+ return date >= from && date <= to;
246
+ });
247
+ const data = {
248
+ summary,
249
+ requests: filteredRequests.map((r) => ({
250
+ id: r.request_id,
251
+ type: r.type,
252
+ status: r.status,
253
+ submitted_at: r.submitted_at,
254
+ completed_at: r.completed_at,
255
+ })),
256
+ };
257
+ const dataStr = JSON.stringify(data);
258
+ return {
259
+ id,
260
+ type: "dsar_records",
261
+ title: "Data Subject Access Requests",
262
+ description: "DSAR processing records and response times",
263
+ collected_at: collectedAt,
264
+ source: "dsar-handler",
265
+ checksum: crypto.createHash("sha256").update(dataStr).digest("hex"),
266
+ size_bytes: Buffer.byteLength(dataStr),
267
+ data,
268
+ };
269
+ }
270
+ /**
271
+ * Collect incident records
272
+ */
273
+ async collectIncidentRecords(id, collectedAt, from, to) {
274
+ const incidentManager = getIncidentManager();
275
+ const statistics = await incidentManager.getStatistics();
276
+ const allIncidents = await incidentManager.getAllIncidents();
277
+ // Filter incidents by date range
278
+ const incidents = allIncidents.filter((i) => {
279
+ const date = new Date(i.detected_at);
280
+ return date >= from && date <= to;
281
+ });
282
+ const data = {
283
+ statistics,
284
+ incidents: incidents.map((i) => ({
285
+ id: i.id,
286
+ type: i.type,
287
+ severity: i.severity,
288
+ title: i.title,
289
+ status: i.status,
290
+ detected_at: i.detected_at,
291
+ resolved_at: i.resolved_at,
292
+ actions_taken: i.actions_taken.length,
293
+ })),
294
+ };
295
+ const dataStr = JSON.stringify(data);
296
+ return {
297
+ id,
298
+ type: "incident_records",
299
+ title: "Security Incident Records",
300
+ description: "Security incident tracking and response records",
301
+ collected_at: collectedAt,
302
+ source: "incident-manager",
303
+ checksum: crypto.createHash("sha256").update(dataStr).digest("hex"),
304
+ size_bytes: Buffer.byteLength(dataStr),
305
+ data,
306
+ };
307
+ }
308
+ /**
309
+ * Collect change records
310
+ */
311
+ async collectChangeRecords(id, collectedAt, from, to) {
312
+ const changeLog = getChangeLog();
313
+ const statistics = await changeLog.getStatistics(from, to);
314
+ const changes = await changeLog.getChangesInRange(from, to, 1000);
315
+ const data = {
316
+ statistics,
317
+ changes: changes.map(c => ({
318
+ id: c.id,
319
+ timestamp: c.timestamp,
320
+ component: c.component,
321
+ setting: c.setting,
322
+ changed_by: c.changed_by,
323
+ method: c.method,
324
+ impact: c.impact,
325
+ requires_approval: c.requires_approval,
326
+ approved_by: c.approved_by,
327
+ })),
328
+ };
329
+ const dataStr = JSON.stringify(data);
330
+ return {
331
+ id,
332
+ type: "change_records",
333
+ title: "Configuration Change Records",
334
+ description: "SOC2 change management audit trail",
335
+ collected_at: collectedAt,
336
+ source: "change-log",
337
+ checksum: crypto.createHash("sha256").update(dataStr).digest("hex"),
338
+ size_bytes: Buffer.byteLength(dataStr),
339
+ data,
340
+ };
341
+ }
342
+ /**
343
+ * Collect policy documents
344
+ */
345
+ async collectPolicyDocuments(id, collectedAt) {
346
+ const policyManager = getPolicyDocManager();
347
+ const policies = await policyManager.getAllPolicies();
348
+ const summary = await policyManager.getPolicySummary();
349
+ const data = {
350
+ summary,
351
+ policies: policies.map(p => ({
352
+ id: p.id,
353
+ type: p.type,
354
+ title: p.title,
355
+ version: p.version,
356
+ effective_date: p.effective_date,
357
+ regulations: p.regulations,
358
+ enforced: p.enforced,
359
+ last_reviewed: p.last_reviewed,
360
+ next_review: p.next_review,
361
+ approved_by: p.approved_by,
362
+ })),
363
+ };
364
+ const dataStr = JSON.stringify(data);
365
+ return {
366
+ id,
367
+ type: "policy_documents",
368
+ title: "Compliance Policy Documents",
369
+ description: "Documented security and privacy policies",
370
+ collected_at: collectedAt,
371
+ source: "policy-docs",
372
+ checksum: crypto.createHash("sha256").update(dataStr).digest("hex"),
373
+ size_bytes: Buffer.byteLength(dataStr),
374
+ data,
375
+ };
376
+ }
377
+ /**
378
+ * Collect compliance reports
379
+ */
380
+ async collectComplianceReports(id, collectedAt, from, to) {
381
+ const reportGenerator = getReportGenerator();
382
+ const dashboard = getComplianceDashboard();
383
+ const dashboardData = await dashboard.generateDashboard();
384
+ const score = await dashboard.getComplianceScore();
385
+ const existingReports = reportGenerator.listGeneratedReports();
386
+ const data = {
387
+ current_dashboard: dashboardData,
388
+ compliance_score: score,
389
+ generated_reports: existingReports.filter(r => {
390
+ const reportDate = new Date(r.generated);
391
+ return reportDate >= from && reportDate <= to;
392
+ }),
393
+ };
394
+ const dataStr = JSON.stringify(data);
395
+ return {
396
+ id,
397
+ type: "compliance_reports",
398
+ title: "Compliance Reports and Dashboards",
399
+ description: "Generated compliance reports and current status",
400
+ collected_at: collectedAt,
401
+ source: "report-generator",
402
+ checksum: crypto.createHash("sha256").update(dataStr).digest("hex"),
403
+ size_bytes: Buffer.byteLength(dataStr),
404
+ data,
405
+ };
406
+ }
407
+ /**
408
+ * Collect configuration evidence
409
+ */
410
+ async collectConfiguration(id, collectedAt) {
411
+ const config = getConfig();
412
+ // Collect non-sensitive configuration
413
+ const data = {
414
+ environment: {
415
+ node_version: process.version,
416
+ platform: process.platform,
417
+ arch: process.arch,
418
+ },
419
+ security_settings: {
420
+ encryption_enabled: process.env.NLMCP_ENCRYPTION_ENABLED !== "false",
421
+ auth_enabled: process.env.NLMCP_AUTH_ENABLED === "true",
422
+ cert_pinning_enabled: process.env.NLMCP_CERT_PINNING !== "false",
423
+ audit_enabled: process.env.NLMCP_AUDIT_ENABLED !== "false",
424
+ compliance_logging_enabled: process.env.NLMCP_COMPLIANCE_LOGGING !== "false",
425
+ },
426
+ data_directories: {
427
+ config_dir_exists: fs.existsSync(config.configDir),
428
+ data_dir_exists: fs.existsSync(config.dataDir),
429
+ },
430
+ compliance_features: {
431
+ gdpr_enabled: true,
432
+ soc2_enabled: true,
433
+ cssf_enabled: true,
434
+ siem_enabled: process.env.NLMCP_SIEM_ENABLED === "true",
435
+ health_monitoring_enabled: process.env.NLMCP_HEALTH_MONITORING !== "false",
436
+ },
437
+ };
438
+ const dataStr = JSON.stringify(data);
439
+ return {
440
+ id,
441
+ type: "configuration",
442
+ title: "System Configuration",
443
+ description: "Security and compliance configuration settings",
444
+ collected_at: collectedAt,
445
+ source: "system-config",
446
+ checksum: crypto.createHash("sha256").update(dataStr).digest("hex"),
447
+ size_bytes: Buffer.byteLength(dataStr),
448
+ data,
449
+ };
450
+ }
451
+ /**
452
+ * Collect integrity proofs
453
+ */
454
+ async collectIntegrityProofs(id, collectedAt) {
455
+ const logger = getComplianceLogger();
456
+ const integrity = await logger.verifyIntegrity();
457
+ const data = {
458
+ audit_log_integrity: integrity,
459
+ verification_timestamp: collectedAt,
460
+ verification_method: "SHA-256 hash chain verification",
461
+ tamper_evident: true,
462
+ };
463
+ const dataStr = JSON.stringify(data);
464
+ return {
465
+ id,
466
+ type: "integrity_proofs",
467
+ title: "Integrity Verification Proofs",
468
+ description: "Cryptographic proofs of audit log integrity",
469
+ collected_at: collectedAt,
470
+ source: "integrity-verifier",
471
+ checksum: crypto.createHash("sha256").update(dataStr).digest("hex"),
472
+ size_bytes: Buffer.byteLength(dataStr),
473
+ data,
474
+ };
475
+ }
476
+ /**
477
+ * Save evidence package to disk
478
+ */
479
+ async savePackage(evidencePackage, outputDir) {
480
+ const dir = outputDir || this.evidenceDir;
481
+ mkdirSecure(dir);
482
+ const fileName = `evidence-${evidencePackage.package_id}.json`;
483
+ const filePath = path.join(dir, fileName);
484
+ // Add chain of custody entry
485
+ evidencePackage.chain_of_custody.push({
486
+ timestamp: new Date().toISOString(),
487
+ action: "saved_to_disk",
488
+ actor: "evidence-collector",
489
+ details: `Saved to ${filePath}`,
490
+ });
491
+ writeFileSecure(filePath, JSON.stringify(evidencePackage, null, 2));
492
+ return filePath;
493
+ }
494
+ /**
495
+ * Load evidence package from disk
496
+ */
497
+ async loadPackage(packageId) {
498
+ const fileName = `evidence-${packageId}.json`;
499
+ const filePath = path.join(this.evidenceDir, fileName);
500
+ if (!fs.existsSync(filePath)) {
501
+ return null;
502
+ }
503
+ const content = fs.readFileSync(filePath, "utf-8");
504
+ const evidencePackage = JSON.parse(content);
505
+ // Add chain of custody entry
506
+ evidencePackage.chain_of_custody.push({
507
+ timestamp: new Date().toISOString(),
508
+ action: "loaded_from_disk",
509
+ actor: "evidence-collector",
510
+ });
511
+ return evidencePackage;
512
+ }
513
+ /**
514
+ * Verify evidence package integrity
515
+ */
516
+ verifyPackageIntegrity(evidencePackage) {
517
+ const errors = [];
518
+ // Verify each item checksum
519
+ for (const item of evidencePackage.items) {
520
+ const dataStr = JSON.stringify(item.data);
521
+ const calculatedChecksum = crypto.createHash("sha256").update(dataStr).digest("hex");
522
+ if (calculatedChecksum !== item.checksum) {
523
+ errors.push(`Item ${item.id} (${item.type}): checksum mismatch`);
524
+ }
525
+ }
526
+ // Verify package checksum
527
+ const packageData = JSON.stringify(evidencePackage.items);
528
+ const calculatedPackageChecksum = crypto.createHash("sha256").update(packageData).digest("hex");
529
+ if (calculatedPackageChecksum !== evidencePackage.manifest.package_checksum) {
530
+ errors.push("Package manifest: checksum mismatch");
531
+ }
532
+ return {
533
+ valid: errors.length === 0,
534
+ errors,
535
+ };
536
+ }
537
+ /**
538
+ * List saved evidence packages
539
+ */
540
+ listPackages() {
541
+ const packages = [];
542
+ try {
543
+ const files = fs.readdirSync(this.evidenceDir).filter(f => f.startsWith("evidence-") && f.endsWith(".json"));
544
+ for (const file of files) {
545
+ try {
546
+ const filePath = path.join(this.evidenceDir, file);
547
+ const content = fs.readFileSync(filePath, "utf-8");
548
+ const pkg = JSON.parse(content);
549
+ packages.push({
550
+ package_id: pkg.package_id,
551
+ created_at: pkg.created_at,
552
+ purpose: pkg.purpose,
553
+ item_count: pkg.manifest.total_items,
554
+ });
555
+ }
556
+ catch {
557
+ // Skip malformed packages
558
+ }
559
+ }
560
+ }
561
+ catch {
562
+ // Ignore errors
563
+ }
564
+ return packages.sort((a, b) => b.created_at.localeCompare(a.created_at));
565
+ }
566
+ /**
567
+ * Create evidence package for specific regulation
568
+ */
569
+ async collectRegulationEvidence(regulation, options = {}) {
570
+ let types;
571
+ switch (regulation) {
572
+ case "GDPR":
573
+ types = [
574
+ "consent_records",
575
+ "data_inventory",
576
+ "dsar_records",
577
+ "policy_documents",
578
+ "audit_logs",
579
+ "integrity_proofs",
580
+ ];
581
+ break;
582
+ case "SOC2":
583
+ types = [
584
+ "audit_logs",
585
+ "change_records",
586
+ "incident_records",
587
+ "policy_documents",
588
+ "configuration",
589
+ "integrity_proofs",
590
+ ];
591
+ break;
592
+ case "CSSF":
593
+ types = [
594
+ "audit_logs",
595
+ "incident_records",
596
+ "policy_documents",
597
+ "change_records",
598
+ "compliance_reports",
599
+ "integrity_proofs",
600
+ ];
601
+ break;
602
+ }
603
+ return this.collectEvidence({
604
+ ...options,
605
+ types,
606
+ regulations: [regulation],
607
+ purpose: `${regulation} Compliance Audit`,
608
+ });
609
+ }
610
+ }
611
+ // ============================================
612
+ // SINGLETON ACCESS
613
+ // ============================================
614
+ /**
615
+ * Get the evidence collector instance
616
+ */
617
+ export function getEvidenceCollector() {
618
+ return EvidenceCollector.getInstance();
619
+ }
620
+ // ============================================
621
+ // CONVENIENCE EXPORTS
622
+ // ============================================
623
+ /**
624
+ * Collect evidence package
625
+ */
626
+ export async function collectEvidence(options) {
627
+ return getEvidenceCollector().collectEvidence(options);
628
+ }
629
+ /**
630
+ * Collect and save evidence package
631
+ */
632
+ export async function collectAndSaveEvidence(options) {
633
+ const collector = getEvidenceCollector();
634
+ const pkg = await collector.collectEvidence(options);
635
+ const filePath = await collector.savePackage(pkg);
636
+ return { package: pkg, filePath };
637
+ }
638
+ /**
639
+ * Collect regulation-specific evidence
640
+ */
641
+ export async function collectRegulationEvidence(regulation, options) {
642
+ return getEvidenceCollector().collectRegulationEvidence(regulation, options);
643
+ }
644
+ /**
645
+ * Verify evidence package integrity
646
+ */
647
+ export function verifyEvidence(evidencePackage) {
648
+ return getEvidenceCollector().verifyPackageIntegrity(evidencePackage);
649
+ }
650
+ /**
651
+ * List saved evidence packages
652
+ */
653
+ export function listEvidencePackages() {
654
+ return getEvidenceCollector().listPackages();
655
+ }
656
+ //# sourceMappingURL=evidence-collector.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"evidence-collector.js","sourceRoot":"","sources":["../../src/compliance/evidence-collector.ts"],"names":[],"mappings":"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"}