@pan-sec/notebooklm-mcp 1.4.0 → 1.6.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +61 -7
- package/SECURITY.md +40 -6
- package/dist/auth/mcp-auth.d.ts.map +1 -1
- package/dist/auth/mcp-auth.js +3 -6
- package/dist/auth/mcp-auth.js.map +1 -1
- package/dist/compliance/alert-manager.d.ts +120 -0
- package/dist/compliance/alert-manager.d.ts.map +1 -0
- package/dist/compliance/alert-manager.js +420 -0
- package/dist/compliance/alert-manager.js.map +1 -0
- package/dist/compliance/breach-detection.d.ts +134 -0
- package/dist/compliance/breach-detection.d.ts.map +1 -0
- package/dist/compliance/breach-detection.js +456 -0
- package/dist/compliance/breach-detection.js.map +1 -0
- package/dist/compliance/change-log.d.ts +113 -0
- package/dist/compliance/change-log.d.ts.map +1 -0
- package/dist/compliance/change-log.js +275 -0
- package/dist/compliance/change-log.js.map +1 -0
- package/dist/compliance/compliance-logger.d.ts +136 -0
- package/dist/compliance/compliance-logger.d.ts.map +1 -0
- package/dist/compliance/compliance-logger.js +425 -0
- package/dist/compliance/compliance-logger.js.map +1 -0
- package/dist/compliance/compliance-tools.d.ts +18 -0
- package/dist/compliance/compliance-tools.d.ts.map +1 -0
- package/dist/compliance/compliance-tools.js +673 -0
- package/dist/compliance/compliance-tools.js.map +1 -0
- package/dist/compliance/consent-manager.d.ts +130 -0
- package/dist/compliance/consent-manager.d.ts.map +1 -0
- package/dist/compliance/consent-manager.js +386 -0
- package/dist/compliance/consent-manager.js.map +1 -0
- package/dist/compliance/dashboard.d.ts +243 -0
- package/dist/compliance/dashboard.d.ts.map +1 -0
- package/dist/compliance/dashboard.js +519 -0
- package/dist/compliance/dashboard.js.map +1 -0
- package/dist/compliance/data-classification.d.ts +117 -0
- package/dist/compliance/data-classification.d.ts.map +1 -0
- package/dist/compliance/data-classification.js +469 -0
- package/dist/compliance/data-classification.js.map +1 -0
- package/dist/compliance/data-erasure.d.ts +110 -0
- package/dist/compliance/data-erasure.d.ts.map +1 -0
- package/dist/compliance/data-erasure.js +501 -0
- package/dist/compliance/data-erasure.js.map +1 -0
- package/dist/compliance/data-export.d.ts +85 -0
- package/dist/compliance/data-export.d.ts.map +1 -0
- package/dist/compliance/data-export.js +394 -0
- package/dist/compliance/data-export.js.map +1 -0
- package/dist/compliance/data-inventory.d.ts +136 -0
- package/dist/compliance/data-inventory.d.ts.map +1 -0
- package/dist/compliance/data-inventory.js +335 -0
- package/dist/compliance/data-inventory.js.map +1 -0
- package/dist/compliance/dsar-handler.d.ts +123 -0
- package/dist/compliance/dsar-handler.d.ts.map +1 -0
- package/dist/compliance/dsar-handler.js +371 -0
- package/dist/compliance/dsar-handler.js.map +1 -0
- package/dist/compliance/evidence-collector.d.ts +187 -0
- package/dist/compliance/evidence-collector.d.ts.map +1 -0
- package/dist/compliance/evidence-collector.js +656 -0
- package/dist/compliance/evidence-collector.js.map +1 -0
- package/dist/compliance/health-monitor.d.ts +111 -0
- package/dist/compliance/health-monitor.d.ts.map +1 -0
- package/dist/compliance/health-monitor.js +509 -0
- package/dist/compliance/health-monitor.js.map +1 -0
- package/dist/compliance/incident-manager.d.ts +131 -0
- package/dist/compliance/incident-manager.d.ts.map +1 -0
- package/dist/compliance/incident-manager.js +418 -0
- package/dist/compliance/incident-manager.js.map +1 -0
- package/dist/compliance/index.d.ts +32 -0
- package/dist/compliance/index.d.ts.map +1 -0
- package/dist/compliance/index.js +35 -0
- package/dist/compliance/index.js.map +1 -0
- package/dist/compliance/policy-docs.d.ts +108 -0
- package/dist/compliance/policy-docs.d.ts.map +1 -0
- package/dist/compliance/policy-docs.js +464 -0
- package/dist/compliance/policy-docs.js.map +1 -0
- package/dist/compliance/privacy-notice-text.d.ts +58 -0
- package/dist/compliance/privacy-notice-text.d.ts.map +1 -0
- package/dist/compliance/privacy-notice-text.js +161 -0
- package/dist/compliance/privacy-notice-text.js.map +1 -0
- package/dist/compliance/privacy-notice.d.ts +128 -0
- package/dist/compliance/privacy-notice.d.ts.map +1 -0
- package/dist/compliance/privacy-notice.js +250 -0
- package/dist/compliance/privacy-notice.js.map +1 -0
- package/dist/compliance/report-generator.d.ts +168 -0
- package/dist/compliance/report-generator.d.ts.map +1 -0
- package/dist/compliance/report-generator.js +830 -0
- package/dist/compliance/report-generator.js.map +1 -0
- package/dist/compliance/retention-engine.d.ts +130 -0
- package/dist/compliance/retention-engine.d.ts.map +1 -0
- package/dist/compliance/retention-engine.js +510 -0
- package/dist/compliance/retention-engine.js.map +1 -0
- package/dist/compliance/siem-exporter.d.ts +150 -0
- package/dist/compliance/siem-exporter.d.ts.map +1 -0
- package/dist/compliance/siem-exporter.js +509 -0
- package/dist/compliance/siem-exporter.js.map +1 -0
- package/dist/compliance/types.d.ts +601 -0
- package/dist/compliance/types.d.ts.map +1 -0
- package/dist/compliance/types.js +22 -0
- package/dist/compliance/types.js.map +1 -0
- package/dist/config.d.ts +4 -0
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +8 -1
- package/dist/config.js.map +1 -1
- package/dist/library/notebook-library.d.ts.map +1 -1
- package/dist/library/notebook-library.js +2 -1
- package/dist/library/notebook-library.js.map +1 -1
- package/dist/session/shared-context-manager.d.ts.map +1 -1
- package/dist/session/shared-context-manager.js +2 -1
- package/dist/session/shared-context-manager.js.map +1 -1
- package/dist/utils/audit-logger.d.ts +21 -1
- package/dist/utils/audit-logger.d.ts.map +1 -1
- package/dist/utils/audit-logger.js +53 -4
- package/dist/utils/audit-logger.js.map +1 -1
- package/dist/utils/crypto.d.ts.map +1 -1
- package/dist/utils/crypto.js +8 -15
- package/dist/utils/crypto.js.map +1 -1
- package/dist/utils/file-permissions.d.ts +85 -0
- package/dist/utils/file-permissions.d.ts.map +1 -0
- package/dist/utils/file-permissions.js +180 -0
- package/dist/utils/file-permissions.js.map +1 -0
- package/dist/utils/settings-manager.d.ts.map +1 -1
- package/dist/utils/settings-manager.js +6 -11
- package/dist/utils/settings-manager.js.map +1 -1
- package/docs/COMPLIANCE-SPEC.md +1452 -0
- package/package.json +30 -4
|
@@ -0,0 +1,335 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Data Inventory
|
|
3
|
+
*
|
|
4
|
+
* Maintains a registry of all personal data stored by the application.
|
|
5
|
+
* Supports GDPR Article 30 (Records of Processing Activities).
|
|
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 { getDataClassifier } from "./data-classification.js";
|
|
15
|
+
import { getComplianceLogger } from "./compliance-logger.js";
|
|
16
|
+
import { DataClassification, } from "./types.js";
|
|
17
|
+
/**
|
|
18
|
+
* Generate a UUID v4
|
|
19
|
+
*/
|
|
20
|
+
function generateUUID() {
|
|
21
|
+
return crypto.randomUUID();
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* Data Inventory class
|
|
25
|
+
*/
|
|
26
|
+
export class DataInventory {
|
|
27
|
+
static instance;
|
|
28
|
+
inventoryFile;
|
|
29
|
+
entries = new Map();
|
|
30
|
+
loaded = false;
|
|
31
|
+
constructor() {
|
|
32
|
+
const config = getConfig();
|
|
33
|
+
this.inventoryFile = path.join(config.configDir, "data-inventory.json");
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* Get singleton instance
|
|
37
|
+
*/
|
|
38
|
+
static getInstance() {
|
|
39
|
+
if (!DataInventory.instance) {
|
|
40
|
+
DataInventory.instance = new DataInventory();
|
|
41
|
+
}
|
|
42
|
+
return DataInventory.instance;
|
|
43
|
+
}
|
|
44
|
+
/**
|
|
45
|
+
* Load inventory from storage
|
|
46
|
+
*/
|
|
47
|
+
async load() {
|
|
48
|
+
if (this.loaded)
|
|
49
|
+
return;
|
|
50
|
+
try {
|
|
51
|
+
if (fs.existsSync(this.inventoryFile)) {
|
|
52
|
+
const content = fs.readFileSync(this.inventoryFile, "utf-8");
|
|
53
|
+
const data = JSON.parse(content);
|
|
54
|
+
if (data.entries && Array.isArray(data.entries)) {
|
|
55
|
+
for (const entry of data.entries) {
|
|
56
|
+
this.entries.set(entry.id, entry);
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
catch {
|
|
62
|
+
// Start fresh if file is corrupted
|
|
63
|
+
this.entries = new Map();
|
|
64
|
+
}
|
|
65
|
+
// Auto-discover data on first load
|
|
66
|
+
await this.autoDiscover();
|
|
67
|
+
this.loaded = true;
|
|
68
|
+
}
|
|
69
|
+
/**
|
|
70
|
+
* Save inventory to storage
|
|
71
|
+
*/
|
|
72
|
+
async save() {
|
|
73
|
+
const dir = path.dirname(this.inventoryFile);
|
|
74
|
+
mkdirSecure(dir);
|
|
75
|
+
const data = {
|
|
76
|
+
version: "1.0.0",
|
|
77
|
+
generated_at: new Date().toISOString(),
|
|
78
|
+
entries: Array.from(this.entries.values()),
|
|
79
|
+
};
|
|
80
|
+
writeFileSecure(this.inventoryFile, JSON.stringify(data, null, 2));
|
|
81
|
+
}
|
|
82
|
+
/**
|
|
83
|
+
* Auto-discover data based on known data types and locations
|
|
84
|
+
*/
|
|
85
|
+
async autoDiscover() {
|
|
86
|
+
const config = getConfig();
|
|
87
|
+
const classifier = getDataClassifier();
|
|
88
|
+
// Known data locations
|
|
89
|
+
const dataLocations = [
|
|
90
|
+
{ dataType: "notebook_library", location: path.join(config.configDir, "library.json") },
|
|
91
|
+
{ dataType: "user_settings", location: path.join(config.configDir, "settings.json") },
|
|
92
|
+
{ dataType: "consent_records", location: path.join(config.configDir, "consent.json") },
|
|
93
|
+
{ dataType: "browser_cookies", location: path.join(config.dataDir, "browser_state") },
|
|
94
|
+
{ dataType: "session_state", location: path.join(config.dataDir, "sessions") },
|
|
95
|
+
{ dataType: "audit_logs", location: path.join(config.dataDir, "audit") },
|
|
96
|
+
{ dataType: "compliance_events", location: path.join(config.dataDir, "compliance") },
|
|
97
|
+
{ dataType: "encryption_keys", location: path.join(config.dataDir, "pq-keys.enc") },
|
|
98
|
+
{ dataType: "mcp_auth_token", location: path.join(config.configDir, "auth-token.hash") },
|
|
99
|
+
];
|
|
100
|
+
for (const { dataType, location } of dataLocations) {
|
|
101
|
+
// Check if we already have an entry for this data type
|
|
102
|
+
const existingEntry = Array.from(this.entries.values()).find(e => e.data_type === dataType);
|
|
103
|
+
if (!existingEntry) {
|
|
104
|
+
const entry = classifier.buildInventoryEntry(dataType, location);
|
|
105
|
+
if (entry) {
|
|
106
|
+
this.entries.set(entry.id, entry);
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
/**
|
|
112
|
+
* Register a new data type in the inventory
|
|
113
|
+
*/
|
|
114
|
+
async register(dataType, storageLocation, options = {}) {
|
|
115
|
+
await this.load();
|
|
116
|
+
const classifier = getDataClassifier();
|
|
117
|
+
const baseEntry = classifier.buildInventoryEntry(dataType, storageLocation);
|
|
118
|
+
const entry = {
|
|
119
|
+
id: generateUUID(),
|
|
120
|
+
data_type: dataType,
|
|
121
|
+
description: options.description || baseEntry?.description || `Data of type: ${dataType}`,
|
|
122
|
+
classification: options.classification || baseEntry?.classification || DataClassification.INTERNAL,
|
|
123
|
+
data_categories: options.dataCategories || baseEntry?.data_categories || [],
|
|
124
|
+
storage_location: storageLocation,
|
|
125
|
+
encrypted: options.encrypted ?? baseEntry?.encrypted ?? false,
|
|
126
|
+
retention_policy: baseEntry?.retention_policy || "30_days",
|
|
127
|
+
retention_days: options.retentionDays || baseEntry?.retention_days || 30,
|
|
128
|
+
legal_basis: options.legalBasis || baseEntry?.legal_basis || "legitimate_interest",
|
|
129
|
+
processing_purposes: baseEntry?.processing_purposes || ["service_provision"],
|
|
130
|
+
who_can_access: ["owner"],
|
|
131
|
+
exportable: options.exportable ?? baseEntry?.exportable ?? true,
|
|
132
|
+
erasable: options.erasable ?? baseEntry?.erasable ?? true,
|
|
133
|
+
last_updated: new Date().toISOString(),
|
|
134
|
+
};
|
|
135
|
+
this.entries.set(entry.id, entry);
|
|
136
|
+
await this.save();
|
|
137
|
+
// Log the registration
|
|
138
|
+
const logger = getComplianceLogger();
|
|
139
|
+
await logger.log("data_processing", "data_type_registered", { type: "system" }, "success", {
|
|
140
|
+
resource: { type: dataType },
|
|
141
|
+
details: { storage_location: storageLocation },
|
|
142
|
+
});
|
|
143
|
+
return entry;
|
|
144
|
+
}
|
|
145
|
+
/**
|
|
146
|
+
* Update an existing entry
|
|
147
|
+
*/
|
|
148
|
+
async update(entryId, updates) {
|
|
149
|
+
await this.load();
|
|
150
|
+
const entry = this.entries.get(entryId);
|
|
151
|
+
if (!entry)
|
|
152
|
+
return null;
|
|
153
|
+
const updatedEntry = {
|
|
154
|
+
...entry,
|
|
155
|
+
...updates,
|
|
156
|
+
last_updated: new Date().toISOString(),
|
|
157
|
+
};
|
|
158
|
+
this.entries.set(entryId, updatedEntry);
|
|
159
|
+
await this.save();
|
|
160
|
+
return updatedEntry;
|
|
161
|
+
}
|
|
162
|
+
/**
|
|
163
|
+
* Remove an entry from the inventory
|
|
164
|
+
*/
|
|
165
|
+
async remove(entryId) {
|
|
166
|
+
await this.load();
|
|
167
|
+
if (!this.entries.has(entryId)) {
|
|
168
|
+
return false;
|
|
169
|
+
}
|
|
170
|
+
this.entries.delete(entryId);
|
|
171
|
+
await this.save();
|
|
172
|
+
return true;
|
|
173
|
+
}
|
|
174
|
+
/**
|
|
175
|
+
* Get all inventory entries
|
|
176
|
+
*/
|
|
177
|
+
async getAll() {
|
|
178
|
+
await this.load();
|
|
179
|
+
return Array.from(this.entries.values());
|
|
180
|
+
}
|
|
181
|
+
/**
|
|
182
|
+
* Get entry by ID
|
|
183
|
+
*/
|
|
184
|
+
async getById(entryId) {
|
|
185
|
+
await this.load();
|
|
186
|
+
return this.entries.get(entryId) || null;
|
|
187
|
+
}
|
|
188
|
+
/**
|
|
189
|
+
* Get entries by data type
|
|
190
|
+
*/
|
|
191
|
+
async getByDataType(dataType) {
|
|
192
|
+
await this.load();
|
|
193
|
+
return Array.from(this.entries.values()).filter(e => e.data_type === dataType);
|
|
194
|
+
}
|
|
195
|
+
/**
|
|
196
|
+
* Get entries by classification
|
|
197
|
+
*/
|
|
198
|
+
async getByClassification(classification) {
|
|
199
|
+
await this.load();
|
|
200
|
+
return Array.from(this.entries.values()).filter(e => e.classification === classification);
|
|
201
|
+
}
|
|
202
|
+
/**
|
|
203
|
+
* Get entries by data category
|
|
204
|
+
*/
|
|
205
|
+
async getByCategory(category) {
|
|
206
|
+
await this.load();
|
|
207
|
+
return Array.from(this.entries.values()).filter(e => e.data_categories.includes(category));
|
|
208
|
+
}
|
|
209
|
+
/**
|
|
210
|
+
* Get exportable data entries (for GDPR data portability)
|
|
211
|
+
*/
|
|
212
|
+
async getExportable() {
|
|
213
|
+
await this.load();
|
|
214
|
+
return Array.from(this.entries.values()).filter(e => e.exportable);
|
|
215
|
+
}
|
|
216
|
+
/**
|
|
217
|
+
* Get erasable data entries (for GDPR right to erasure)
|
|
218
|
+
*/
|
|
219
|
+
async getErasable() {
|
|
220
|
+
await this.load();
|
|
221
|
+
return Array.from(this.entries.values()).filter(e => e.erasable);
|
|
222
|
+
}
|
|
223
|
+
/**
|
|
224
|
+
* Get personal data entries (for DSAR)
|
|
225
|
+
*/
|
|
226
|
+
async getPersonalData() {
|
|
227
|
+
await this.load();
|
|
228
|
+
return Array.from(this.entries.values()).filter(e => e.data_categories.includes("personal_data") ||
|
|
229
|
+
e.data_categories.includes("sensitive_data"));
|
|
230
|
+
}
|
|
231
|
+
/**
|
|
232
|
+
* Generate GDPR Article 30 Records of Processing Activities
|
|
233
|
+
*/
|
|
234
|
+
async generateROPA() {
|
|
235
|
+
await this.load();
|
|
236
|
+
const entries = Array.from(this.entries.values());
|
|
237
|
+
// Collect all unique purposes
|
|
238
|
+
const purposes = [...new Set(entries.flatMap(e => e.processing_purposes))];
|
|
239
|
+
// Collect all retention periods
|
|
240
|
+
const retentionPeriods = entries.map(e => ({
|
|
241
|
+
data_type: e.data_type,
|
|
242
|
+
period: typeof e.retention_days === "number"
|
|
243
|
+
? `${e.retention_days} days`
|
|
244
|
+
: e.retention_days,
|
|
245
|
+
}));
|
|
246
|
+
return {
|
|
247
|
+
controller: "Pantheon Security (local processing)",
|
|
248
|
+
purposes,
|
|
249
|
+
categories_of_data_subjects: ["Users of NotebookLM MCP Server"],
|
|
250
|
+
categories_of_personal_data: [
|
|
251
|
+
...new Set(entries.flatMap(e => e.data_categories)),
|
|
252
|
+
],
|
|
253
|
+
recipients: ["None - all data is processed locally"],
|
|
254
|
+
transfers_to_third_countries: ["None"],
|
|
255
|
+
retention_periods: retentionPeriods,
|
|
256
|
+
security_measures: [
|
|
257
|
+
"Post-quantum encryption (ML-KEM-768 + ChaCha20-Poly1305)",
|
|
258
|
+
"Certificate pinning for external connections",
|
|
259
|
+
"Memory scrubbing for sensitive data",
|
|
260
|
+
"Tamper-evident audit logging",
|
|
261
|
+
"Secure file permissions",
|
|
262
|
+
],
|
|
263
|
+
};
|
|
264
|
+
}
|
|
265
|
+
/**
|
|
266
|
+
* Get inventory summary
|
|
267
|
+
*/
|
|
268
|
+
async getSummary() {
|
|
269
|
+
await this.load();
|
|
270
|
+
const entries = Array.from(this.entries.values());
|
|
271
|
+
const byClassification = {
|
|
272
|
+
[DataClassification.PUBLIC]: 0,
|
|
273
|
+
[DataClassification.INTERNAL]: 0,
|
|
274
|
+
[DataClassification.CONFIDENTIAL]: 0,
|
|
275
|
+
[DataClassification.RESTRICTED]: 0,
|
|
276
|
+
[DataClassification.REGULATED]: 0,
|
|
277
|
+
};
|
|
278
|
+
for (const entry of entries) {
|
|
279
|
+
byClassification[entry.classification]++;
|
|
280
|
+
}
|
|
281
|
+
return {
|
|
282
|
+
total_entries: entries.length,
|
|
283
|
+
by_classification: byClassification,
|
|
284
|
+
exportable_count: entries.filter(e => e.exportable).length,
|
|
285
|
+
erasable_count: entries.filter(e => e.erasable).length,
|
|
286
|
+
personal_data_count: entries.filter(e => e.data_categories.includes("personal_data")).length,
|
|
287
|
+
encrypted_count: entries.filter(e => e.encrypted).length,
|
|
288
|
+
};
|
|
289
|
+
}
|
|
290
|
+
/**
|
|
291
|
+
* Export inventory for compliance reporting
|
|
292
|
+
*/
|
|
293
|
+
async export() {
|
|
294
|
+
await this.load();
|
|
295
|
+
const data = {
|
|
296
|
+
export_date: new Date().toISOString(),
|
|
297
|
+
version: "1.0.0",
|
|
298
|
+
summary: await this.getSummary(),
|
|
299
|
+
ropa: await this.generateROPA(),
|
|
300
|
+
entries: Array.from(this.entries.values()),
|
|
301
|
+
};
|
|
302
|
+
return JSON.stringify(data, null, 2);
|
|
303
|
+
}
|
|
304
|
+
}
|
|
305
|
+
// ============================================
|
|
306
|
+
// SINGLETON ACCESS
|
|
307
|
+
// ============================================
|
|
308
|
+
/**
|
|
309
|
+
* Get the data inventory instance
|
|
310
|
+
*/
|
|
311
|
+
export function getDataInventory() {
|
|
312
|
+
return DataInventory.getInstance();
|
|
313
|
+
}
|
|
314
|
+
// ============================================
|
|
315
|
+
// CONVENIENCE EXPORTS
|
|
316
|
+
// ============================================
|
|
317
|
+
/**
|
|
318
|
+
* Get all data inventory entries
|
|
319
|
+
*/
|
|
320
|
+
export async function getAllDataInventory() {
|
|
321
|
+
return getDataInventory().getAll();
|
|
322
|
+
}
|
|
323
|
+
/**
|
|
324
|
+
* Get exportable data entries
|
|
325
|
+
*/
|
|
326
|
+
export async function getExportableData() {
|
|
327
|
+
return getDataInventory().getExportable();
|
|
328
|
+
}
|
|
329
|
+
/**
|
|
330
|
+
* Get erasable data entries
|
|
331
|
+
*/
|
|
332
|
+
export async function getErasableData() {
|
|
333
|
+
return getDataInventory().getErasable();
|
|
334
|
+
}
|
|
335
|
+
//# sourceMappingURL=data-inventory.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"data-inventory.js","sourceRoot":"","sources":["../../src/compliance/data-inventory.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,123 @@
|
|
|
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 type { DSARResponse } from "./types.js";
|
|
10
|
+
/**
|
|
11
|
+
* DSAR request record
|
|
12
|
+
*/
|
|
13
|
+
interface DSARRequest {
|
|
14
|
+
request_id: string;
|
|
15
|
+
submitted_at: string;
|
|
16
|
+
type: "access" | "portability" | "erasure" | "rectification" | "restriction" | "objection";
|
|
17
|
+
status: "pending" | "processing" | "completed" | "rejected";
|
|
18
|
+
completed_at?: string;
|
|
19
|
+
response?: DSARResponse;
|
|
20
|
+
notes?: string;
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* DSAR Handler class
|
|
24
|
+
*/
|
|
25
|
+
export declare class DSARHandler {
|
|
26
|
+
private static instance;
|
|
27
|
+
private requestsFile;
|
|
28
|
+
private requests;
|
|
29
|
+
private loaded;
|
|
30
|
+
private constructor();
|
|
31
|
+
/**
|
|
32
|
+
* Get singleton instance
|
|
33
|
+
*/
|
|
34
|
+
static getInstance(): DSARHandler;
|
|
35
|
+
/**
|
|
36
|
+
* Load requests from storage
|
|
37
|
+
*/
|
|
38
|
+
private load;
|
|
39
|
+
/**
|
|
40
|
+
* Save requests to storage
|
|
41
|
+
*/
|
|
42
|
+
private save;
|
|
43
|
+
/**
|
|
44
|
+
* Submit a new DSAR
|
|
45
|
+
*/
|
|
46
|
+
submitRequest(type?: DSARRequest["type"]): Promise<DSARRequest>;
|
|
47
|
+
/**
|
|
48
|
+
* Process a DSAR and generate response
|
|
49
|
+
*/
|
|
50
|
+
processRequest(requestId: string): Promise<DSARResponse | null>;
|
|
51
|
+
/**
|
|
52
|
+
* Generate DSAR response
|
|
53
|
+
*/
|
|
54
|
+
private generateResponse;
|
|
55
|
+
/**
|
|
56
|
+
* Get a sample of actual data for DSAR (without sensitive content)
|
|
57
|
+
*/
|
|
58
|
+
private getDataSample;
|
|
59
|
+
/**
|
|
60
|
+
* Format retention period for human readability
|
|
61
|
+
*/
|
|
62
|
+
private formatRetention;
|
|
63
|
+
/**
|
|
64
|
+
* Get request by ID
|
|
65
|
+
*/
|
|
66
|
+
getRequest(requestId: string): Promise<DSARRequest | null>;
|
|
67
|
+
/**
|
|
68
|
+
* Get all requests
|
|
69
|
+
*/
|
|
70
|
+
getAllRequests(): Promise<DSARRequest[]>;
|
|
71
|
+
/**
|
|
72
|
+
* Get pending requests
|
|
73
|
+
*/
|
|
74
|
+
getPendingRequests(): Promise<DSARRequest[]>;
|
|
75
|
+
/**
|
|
76
|
+
* Submit and process a DSAR immediately (for automated systems)
|
|
77
|
+
*/
|
|
78
|
+
submitAndProcess(type?: DSARRequest["type"]): Promise<DSARResponse>;
|
|
79
|
+
/**
|
|
80
|
+
* Get summary response (without full personal data)
|
|
81
|
+
*/
|
|
82
|
+
getSummaryResponse(): Promise<{
|
|
83
|
+
data_categories: string[];
|
|
84
|
+
processing_purposes: string[];
|
|
85
|
+
legal_bases: string[];
|
|
86
|
+
available_rights: string[];
|
|
87
|
+
data_recipients: string[];
|
|
88
|
+
exportable_data_types: string[];
|
|
89
|
+
erasable_data_types: string[];
|
|
90
|
+
}>;
|
|
91
|
+
/**
|
|
92
|
+
* Get DSAR statistics
|
|
93
|
+
*/
|
|
94
|
+
getStatistics(): Promise<{
|
|
95
|
+
total_requests: number;
|
|
96
|
+
pending_requests: number;
|
|
97
|
+
completed_requests: number;
|
|
98
|
+
by_type: Record<string, number>;
|
|
99
|
+
average_processing_time_hours?: number;
|
|
100
|
+
}>;
|
|
101
|
+
}
|
|
102
|
+
/**
|
|
103
|
+
* Get the DSAR handler instance
|
|
104
|
+
*/
|
|
105
|
+
export declare function getDSARHandler(): DSARHandler;
|
|
106
|
+
/**
|
|
107
|
+
* Submit a new DSAR
|
|
108
|
+
*/
|
|
109
|
+
export declare function submitDSAR(type?: DSARRequest["type"]): Promise<DSARRequest>;
|
|
110
|
+
/**
|
|
111
|
+
* Process a DSAR
|
|
112
|
+
*/
|
|
113
|
+
export declare function processDSAR(requestId: string): Promise<DSARResponse | null>;
|
|
114
|
+
/**
|
|
115
|
+
* Submit and process a DSAR immediately
|
|
116
|
+
*/
|
|
117
|
+
export declare function handleDSAR(type?: DSARRequest["type"]): Promise<DSARResponse>;
|
|
118
|
+
/**
|
|
119
|
+
* Get DSAR summary response
|
|
120
|
+
*/
|
|
121
|
+
export declare function getDSARSummary(): Promise<ReturnType<DSARHandler["getSummaryResponse"]>>;
|
|
122
|
+
export {};
|
|
123
|
+
//# sourceMappingURL=dsar-handler.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dsar-handler.d.ts","sourceRoot":"","sources":["../../src/compliance/dsar-handler.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AASH,OAAO,KAAK,EAAE,YAAY,EAAsB,MAAM,YAAY,CAAC;AASnE;;GAEG;AACH,UAAU,WAAW;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,MAAM,CAAC;IACrB,IAAI,EAAE,QAAQ,GAAG,aAAa,GAAG,SAAS,GAAG,eAAe,GAAG,aAAa,GAAG,WAAW,CAAC;IAC3F,MAAM,EAAE,SAAS,GAAG,YAAY,GAAG,WAAW,GAAG,UAAU,CAAC;IAC5D,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,EAAE,YAAY,CAAC;IACxB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED;;GAEG;AACH,qBAAa,WAAW;IACtB,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAc;IACrC,OAAO,CAAC,YAAY,CAAS;IAC7B,OAAO,CAAC,QAAQ,CAAqB;IACrC,OAAO,CAAC,MAAM,CAAkB;IAEhC,OAAO;IAKP;;OAEG;WACW,WAAW,IAAI,WAAW;IAOxC;;OAEG;YACW,IAAI;IAgBlB;;OAEG;YACW,IAAI;IAalB;;OAEG;IACU,aAAa,CACxB,IAAI,GAAE,WAAW,CAAC,MAAM,CAAY,GACnC,OAAO,CAAC,WAAW,CAAC;IA6BvB;;OAEG;IACU,cAAc,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,GAAG,IAAI,CAAC;IAqC5E;;OAEG;YACW,gBAAgB;IA0D9B;;OAEG;YACW,aAAa;IAgE3B;;OAEG;IACH,OAAO,CAAC,eAAe;IAkBvB;;OAEG;IACU,UAAU,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC;IAKvE;;OAEG;IACU,cAAc,IAAI,OAAO,CAAC,WAAW,EAAE,CAAC;IAKrD;;OAEG;IACU,kBAAkB,IAAI,OAAO,CAAC,WAAW,EAAE,CAAC;IAKzD;;OAEG;IACU,gBAAgB,CAC3B,IAAI,GAAE,WAAW,CAAC,MAAM,CAAY,GACnC,OAAO,CAAC,YAAY,CAAC;IAWxB;;OAEG;IACU,kBAAkB,IAAI,OAAO,CAAC;QACzC,eAAe,EAAE,MAAM,EAAE,CAAC;QAC1B,mBAAmB,EAAE,MAAM,EAAE,CAAC;QAC9B,WAAW,EAAE,MAAM,EAAE,CAAC;QACtB,gBAAgB,EAAE,MAAM,EAAE,CAAC;QAC3B,eAAe,EAAE,MAAM,EAAE,CAAC;QAC1B,qBAAqB,EAAE,MAAM,EAAE,CAAC;QAChC,mBAAmB,EAAE,MAAM,EAAE,CAAC;KAC/B,CAAC;IAsBF;;OAEG;IACU,aAAa,IAAI,OAAO,CAAC;QACpC,cAAc,EAAE,MAAM,CAAC;QACvB,gBAAgB,EAAE,MAAM,CAAC;QACzB,kBAAkB,EAAE,MAAM,CAAC;QAC3B,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QAChC,6BAA6B,CAAC,EAAE,MAAM,CAAC;KACxC,CAAC;CA4BH;AAMD;;GAEG;AACH,wBAAgB,cAAc,IAAI,WAAW,CAE5C;AAMD;;GAEG;AACH,wBAAsB,UAAU,CAC9B,IAAI,GAAE,WAAW,CAAC,MAAM,CAAY,GACnC,OAAO,CAAC,WAAW,CAAC,CAEtB;AAED;;GAEG;AACH,wBAAsB,WAAW,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,GAAG,IAAI,CAAC,CAEjF;AAED;;GAEG;AACH,wBAAsB,UAAU,CAC9B,IAAI,GAAE,WAAW,CAAC,MAAM,CAAY,GACnC,OAAO,CAAC,YAAY,CAAC,CAEvB;AAED;;GAEG;AACH,wBAAsB,cAAc,IAAI,OAAO,CAAC,UAAU,CAAC,WAAW,CAAC,oBAAoB,CAAC,CAAC,CAAC,CAE7F"}
|