@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,371 @@
1
+ /**
2
+ * Data Subject Access Request (DSAR) Handler
3
+ *
4
+ * Handles Data Subject Access Requests as required by GDPR Article 15.
5
+ * Provides users with information about their personal data processing.
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 { getDataInventory } from "./data-inventory.js";
16
+ /**
17
+ * Generate a UUID v4
18
+ */
19
+ function generateUUID() {
20
+ return crypto.randomUUID();
21
+ }
22
+ /**
23
+ * DSAR Handler class
24
+ */
25
+ export class DSARHandler {
26
+ static instance;
27
+ requestsFile;
28
+ requests = [];
29
+ loaded = false;
30
+ constructor() {
31
+ const config = getConfig();
32
+ this.requestsFile = path.join(config.dataDir, "compliance", "dsar-requests.json");
33
+ }
34
+ /**
35
+ * Get singleton instance
36
+ */
37
+ static getInstance() {
38
+ if (!DSARHandler.instance) {
39
+ DSARHandler.instance = new DSARHandler();
40
+ }
41
+ return DSARHandler.instance;
42
+ }
43
+ /**
44
+ * Load requests from storage
45
+ */
46
+ async load() {
47
+ if (this.loaded)
48
+ return;
49
+ try {
50
+ if (fs.existsSync(this.requestsFile)) {
51
+ const content = fs.readFileSync(this.requestsFile, "utf-8");
52
+ const data = JSON.parse(content);
53
+ this.requests = data.requests || [];
54
+ }
55
+ }
56
+ catch {
57
+ this.requests = [];
58
+ }
59
+ this.loaded = true;
60
+ }
61
+ /**
62
+ * Save requests to storage
63
+ */
64
+ async save() {
65
+ const dir = path.dirname(this.requestsFile);
66
+ mkdirSecure(dir);
67
+ const data = {
68
+ version: "1.0.0",
69
+ last_updated: new Date().toISOString(),
70
+ requests: this.requests,
71
+ };
72
+ writeFileSecure(this.requestsFile, JSON.stringify(data, null, 2));
73
+ }
74
+ /**
75
+ * Submit a new DSAR
76
+ */
77
+ async submitRequest(type = "access") {
78
+ await this.load();
79
+ const request = {
80
+ request_id: generateUUID(),
81
+ submitted_at: new Date().toISOString(),
82
+ type,
83
+ status: "pending",
84
+ };
85
+ this.requests.push(request);
86
+ await this.save();
87
+ // Log the request
88
+ const logger = getComplianceLogger();
89
+ await logger.logDataAccess("request", { type: "user" }, "dsar", true, {
90
+ request_id: request.request_id,
91
+ request_type: type,
92
+ });
93
+ return request;
94
+ }
95
+ /**
96
+ * Process a DSAR and generate response
97
+ */
98
+ async processRequest(requestId) {
99
+ await this.load();
100
+ const request = this.requests.find(r => r.request_id === requestId);
101
+ if (!request) {
102
+ return null;
103
+ }
104
+ request.status = "processing";
105
+ await this.save();
106
+ // Generate response based on request type
107
+ const response = await this.generateResponse(request);
108
+ // Update request
109
+ request.status = "completed";
110
+ request.completed_at = new Date().toISOString();
111
+ request.response = response;
112
+ await this.save();
113
+ // Log completion
114
+ const logger = getComplianceLogger();
115
+ await logger.logDataAccess("view", { type: "user" }, "dsar_response", true, {
116
+ request_id: requestId,
117
+ request_type: request.type,
118
+ data_categories: response.personal_data.length,
119
+ });
120
+ return response;
121
+ }
122
+ /**
123
+ * Generate DSAR response
124
+ */
125
+ async generateResponse(request) {
126
+ const inventory = getDataInventory();
127
+ // Get personal data from inventory
128
+ const personalDataEntries = await inventory.getPersonalData();
129
+ const allEntries = await inventory.getAll();
130
+ // Build personal data section
131
+ const personalData = [];
132
+ for (const entry of personalDataEntries) {
133
+ personalData.push({
134
+ category: entry.data_type,
135
+ data: await this.getDataSample(entry),
136
+ source: "User interaction with NotebookLM MCP Server",
137
+ retention_period: this.formatRetention(entry.retention_days),
138
+ });
139
+ }
140
+ // Get processing purposes from all entries
141
+ const processingPurposes = [
142
+ ...new Set(allEntries.flatMap(e => e.processing_purposes)),
143
+ ];
144
+ // Get legal bases
145
+ const legalBases = [...new Set(allEntries.map(e => e.legal_basis))];
146
+ // Available rights
147
+ const availableRights = [
148
+ "Right of access (GDPR Article 15)",
149
+ "Right to rectification (GDPR Article 16)",
150
+ "Right to erasure (GDPR Article 17)",
151
+ "Right to restriction (GDPR Article 18)",
152
+ "Right to data portability (GDPR Article 20)",
153
+ "Right to object (GDPR Article 21)",
154
+ ];
155
+ const response = {
156
+ request_id: request.request_id,
157
+ submitted_at: request.submitted_at,
158
+ completed_at: new Date().toISOString(),
159
+ subject_verified: true, // Local-only, so user is inherently verified
160
+ personal_data: personalData,
161
+ processing_purposes: processingPurposes,
162
+ legal_bases: legalBases,
163
+ data_recipients: ["None - all data is processed locally"],
164
+ available_rights: availableRights,
165
+ format: "json",
166
+ encrypted: false,
167
+ };
168
+ return response;
169
+ }
170
+ /**
171
+ * Get a sample of actual data for DSAR (without sensitive content)
172
+ */
173
+ async getDataSample(entry) {
174
+ // For sensitive data types, just return metadata
175
+ if (entry.data_categories.includes("credentials") ||
176
+ entry.data_categories.includes("sensitive_data")) {
177
+ return {
178
+ type: entry.data_type,
179
+ classification: entry.classification,
180
+ note: "Sensitive data not included in DSAR export for security reasons",
181
+ exportable: entry.exportable,
182
+ };
183
+ }
184
+ // For other types, try to get actual data
185
+ try {
186
+ if (fs.existsSync(entry.storage_location)) {
187
+ const stats = fs.statSync(entry.storage_location);
188
+ if (stats.isFile()) {
189
+ // For small files, include content summary
190
+ if (stats.size < 10000) {
191
+ const content = fs.readFileSync(entry.storage_location, "utf-8");
192
+ try {
193
+ const data = JSON.parse(content);
194
+ return {
195
+ type: entry.data_type,
196
+ record_count: Array.isArray(data) ? data.length : 1,
197
+ last_modified: stats.mtime.toISOString(),
198
+ };
199
+ }
200
+ catch {
201
+ return {
202
+ type: entry.data_type,
203
+ size_bytes: stats.size,
204
+ last_modified: stats.mtime.toISOString(),
205
+ };
206
+ }
207
+ }
208
+ else {
209
+ return {
210
+ type: entry.data_type,
211
+ size_bytes: stats.size,
212
+ last_modified: stats.mtime.toISOString(),
213
+ };
214
+ }
215
+ }
216
+ else if (stats.isDirectory()) {
217
+ const files = fs.readdirSync(entry.storage_location);
218
+ return {
219
+ type: entry.data_type,
220
+ file_count: files.length,
221
+ last_modified: stats.mtime.toISOString(),
222
+ };
223
+ }
224
+ }
225
+ }
226
+ catch {
227
+ // Data might not be accessible
228
+ }
229
+ return {
230
+ type: entry.data_type,
231
+ classification: entry.classification,
232
+ note: "Data location not accessible",
233
+ };
234
+ }
235
+ /**
236
+ * Format retention period for human readability
237
+ */
238
+ formatRetention(days) {
239
+ if (days === "indefinite") {
240
+ return "Retained until user deletion";
241
+ }
242
+ if (days >= 365) {
243
+ const years = Math.round(days / 365);
244
+ return `${years} year${years > 1 ? "s" : ""}`;
245
+ }
246
+ if (days >= 30) {
247
+ const months = Math.round(days / 30);
248
+ return `${months} month${months > 1 ? "s" : ""}`;
249
+ }
250
+ return `${days} day${days > 1 ? "s" : ""}`;
251
+ }
252
+ /**
253
+ * Get request by ID
254
+ */
255
+ async getRequest(requestId) {
256
+ await this.load();
257
+ return this.requests.find(r => r.request_id === requestId) || null;
258
+ }
259
+ /**
260
+ * Get all requests
261
+ */
262
+ async getAllRequests() {
263
+ await this.load();
264
+ return [...this.requests];
265
+ }
266
+ /**
267
+ * Get pending requests
268
+ */
269
+ async getPendingRequests() {
270
+ await this.load();
271
+ return this.requests.filter(r => r.status === "pending" || r.status === "processing");
272
+ }
273
+ /**
274
+ * Submit and process a DSAR immediately (for automated systems)
275
+ */
276
+ async submitAndProcess(type = "access") {
277
+ const request = await this.submitRequest(type);
278
+ const response = await this.processRequest(request.request_id);
279
+ if (!response) {
280
+ throw new Error("Failed to process DSAR request");
281
+ }
282
+ return response;
283
+ }
284
+ /**
285
+ * Get summary response (without full personal data)
286
+ */
287
+ async getSummaryResponse() {
288
+ const inventory = getDataInventory();
289
+ const entries = await inventory.getAll();
290
+ return {
291
+ data_categories: [...new Set(entries.flatMap(e => e.data_categories))],
292
+ processing_purposes: [...new Set(entries.flatMap(e => e.processing_purposes))],
293
+ legal_bases: [...new Set(entries.map(e => e.legal_basis))],
294
+ available_rights: [
295
+ "Access (Article 15)",
296
+ "Rectification (Article 16)",
297
+ "Erasure (Article 17)",
298
+ "Restriction (Article 18)",
299
+ "Portability (Article 20)",
300
+ "Objection (Article 21)",
301
+ ],
302
+ data_recipients: ["None - local processing only"],
303
+ exportable_data_types: entries.filter(e => e.exportable).map(e => e.data_type),
304
+ erasable_data_types: entries.filter(e => e.erasable).map(e => e.data_type),
305
+ };
306
+ }
307
+ /**
308
+ * Get DSAR statistics
309
+ */
310
+ async getStatistics() {
311
+ await this.load();
312
+ const byType = {};
313
+ let totalProcessingTime = 0;
314
+ let processedCount = 0;
315
+ for (const request of this.requests) {
316
+ byType[request.type] = (byType[request.type] || 0) + 1;
317
+ if (request.completed_at && request.submitted_at) {
318
+ const submitted = new Date(request.submitted_at);
319
+ const completed = new Date(request.completed_at);
320
+ totalProcessingTime += (completed.getTime() - submitted.getTime()) / (1000 * 60 * 60);
321
+ processedCount++;
322
+ }
323
+ }
324
+ return {
325
+ total_requests: this.requests.length,
326
+ pending_requests: this.requests.filter(r => r.status === "pending" || r.status === "processing").length,
327
+ completed_requests: this.requests.filter(r => r.status === "completed").length,
328
+ by_type: byType,
329
+ average_processing_time_hours: processedCount > 0
330
+ ? Math.round((totalProcessingTime / processedCount) * 100) / 100
331
+ : undefined,
332
+ };
333
+ }
334
+ }
335
+ // ============================================
336
+ // SINGLETON ACCESS
337
+ // ============================================
338
+ /**
339
+ * Get the DSAR handler instance
340
+ */
341
+ export function getDSARHandler() {
342
+ return DSARHandler.getInstance();
343
+ }
344
+ // ============================================
345
+ // CONVENIENCE EXPORTS
346
+ // ============================================
347
+ /**
348
+ * Submit a new DSAR
349
+ */
350
+ export async function submitDSAR(type = "access") {
351
+ return getDSARHandler().submitRequest(type);
352
+ }
353
+ /**
354
+ * Process a DSAR
355
+ */
356
+ export async function processDSAR(requestId) {
357
+ return getDSARHandler().processRequest(requestId);
358
+ }
359
+ /**
360
+ * Submit and process a DSAR immediately
361
+ */
362
+ export async function handleDSAR(type = "access") {
363
+ return getDSARHandler().submitAndProcess(type);
364
+ }
365
+ /**
366
+ * Get DSAR summary response
367
+ */
368
+ export async function getDSARSummary() {
369
+ return getDSARHandler().getSummaryResponse();
370
+ }
371
+ //# sourceMappingURL=dsar-handler.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dsar-handler.js","sourceRoot":"","sources":["../../src/compliance/dsar-handler.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,187 @@
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
+ /**
10
+ * Evidence types
11
+ */
12
+ export type EvidenceType = "audit_logs" | "consent_records" | "data_inventory" | "dsar_records" | "incident_records" | "change_records" | "policy_documents" | "compliance_reports" | "configuration" | "integrity_proofs";
13
+ /**
14
+ * Evidence item
15
+ */
16
+ export interface EvidenceItem {
17
+ id: string;
18
+ type: EvidenceType;
19
+ title: string;
20
+ description: string;
21
+ collected_at: string;
22
+ source: string;
23
+ checksum: string;
24
+ size_bytes: number;
25
+ data: unknown;
26
+ }
27
+ /**
28
+ * Evidence package
29
+ */
30
+ export interface EvidencePackage {
31
+ package_id: string;
32
+ created_at: string;
33
+ created_by: string;
34
+ purpose: string;
35
+ period: {
36
+ from: string;
37
+ to: string;
38
+ };
39
+ regulations: string[];
40
+ items: EvidenceItem[];
41
+ manifest: {
42
+ total_items: number;
43
+ total_size_bytes: number;
44
+ types_included: EvidenceType[];
45
+ package_checksum: string;
46
+ };
47
+ chain_of_custody: Array<{
48
+ timestamp: string;
49
+ action: string;
50
+ actor: string;
51
+ details?: string;
52
+ }>;
53
+ }
54
+ /**
55
+ * Collection options
56
+ */
57
+ export interface CollectionOptions {
58
+ from?: Date;
59
+ to?: Date;
60
+ types?: EvidenceType[];
61
+ regulations?: string[];
62
+ purpose?: string;
63
+ includeRawData?: boolean;
64
+ }
65
+ /**
66
+ * Evidence Collector class
67
+ */
68
+ export declare class EvidenceCollector {
69
+ private static instance;
70
+ private evidenceDir;
71
+ private constructor();
72
+ /**
73
+ * Get singleton instance
74
+ */
75
+ static getInstance(): EvidenceCollector;
76
+ /**
77
+ * Collect evidence package
78
+ */
79
+ collectEvidence(options?: CollectionOptions): Promise<EvidencePackage>;
80
+ /**
81
+ * Get default evidence types
82
+ */
83
+ private getDefaultTypes;
84
+ /**
85
+ * Collect specific evidence type
86
+ */
87
+ private collectEvidenceType;
88
+ /**
89
+ * Collect audit logs
90
+ */
91
+ private collectAuditLogs;
92
+ /**
93
+ * Collect consent records
94
+ */
95
+ private collectConsentRecords;
96
+ /**
97
+ * Collect data inventory
98
+ */
99
+ private collectDataInventory;
100
+ /**
101
+ * Collect DSAR records
102
+ */
103
+ private collectDSARRecords;
104
+ /**
105
+ * Collect incident records
106
+ */
107
+ private collectIncidentRecords;
108
+ /**
109
+ * Collect change records
110
+ */
111
+ private collectChangeRecords;
112
+ /**
113
+ * Collect policy documents
114
+ */
115
+ private collectPolicyDocuments;
116
+ /**
117
+ * Collect compliance reports
118
+ */
119
+ private collectComplianceReports;
120
+ /**
121
+ * Collect configuration evidence
122
+ */
123
+ private collectConfiguration;
124
+ /**
125
+ * Collect integrity proofs
126
+ */
127
+ private collectIntegrityProofs;
128
+ /**
129
+ * Save evidence package to disk
130
+ */
131
+ savePackage(evidencePackage: EvidencePackage, outputDir?: string): Promise<string>;
132
+ /**
133
+ * Load evidence package from disk
134
+ */
135
+ loadPackage(packageId: string): Promise<EvidencePackage | null>;
136
+ /**
137
+ * Verify evidence package integrity
138
+ */
139
+ verifyPackageIntegrity(evidencePackage: EvidencePackage): {
140
+ valid: boolean;
141
+ errors: string[];
142
+ };
143
+ /**
144
+ * List saved evidence packages
145
+ */
146
+ listPackages(): Array<{
147
+ package_id: string;
148
+ created_at: string;
149
+ purpose: string;
150
+ item_count: number;
151
+ }>;
152
+ /**
153
+ * Create evidence package for specific regulation
154
+ */
155
+ collectRegulationEvidence(regulation: "GDPR" | "SOC2" | "CSSF", options?: Omit<CollectionOptions, "regulations" | "types">): Promise<EvidencePackage>;
156
+ }
157
+ /**
158
+ * Get the evidence collector instance
159
+ */
160
+ export declare function getEvidenceCollector(): EvidenceCollector;
161
+ /**
162
+ * Collect evidence package
163
+ */
164
+ export declare function collectEvidence(options?: CollectionOptions): Promise<EvidencePackage>;
165
+ /**
166
+ * Collect and save evidence package
167
+ */
168
+ export declare function collectAndSaveEvidence(options?: CollectionOptions): Promise<{
169
+ package: EvidencePackage;
170
+ filePath: string;
171
+ }>;
172
+ /**
173
+ * Collect regulation-specific evidence
174
+ */
175
+ export declare function collectRegulationEvidence(regulation: "GDPR" | "SOC2" | "CSSF", options?: Omit<CollectionOptions, "regulations" | "types">): Promise<EvidencePackage>;
176
+ /**
177
+ * Verify evidence package integrity
178
+ */
179
+ export declare function verifyEvidence(evidencePackage: EvidencePackage): {
180
+ valid: boolean;
181
+ errors: string[];
182
+ };
183
+ /**
184
+ * List saved evidence packages
185
+ */
186
+ export declare function listEvidencePackages(): ReturnType<EvidenceCollector["listPackages"]>;
187
+ //# sourceMappingURL=evidence-collector.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"evidence-collector.d.ts","sourceRoot":"","sources":["../../src/compliance/evidence-collector.ts"],"names":[],"mappings":"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"}