@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,394 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Data Export Tool
|
|
3
|
+
*
|
|
4
|
+
* Exports all user data in machine-readable format.
|
|
5
|
+
* Implements GDPR Article 20 (Right to Data Portability).
|
|
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 { getComplianceLogger } from "./compliance-logger.js";
|
|
14
|
+
import { getConsentManager } from "./consent-manager.js";
|
|
15
|
+
/**
|
|
16
|
+
* Compute SHA-256 checksum
|
|
17
|
+
*/
|
|
18
|
+
function computeChecksum(data) {
|
|
19
|
+
return crypto.createHash("sha256").update(data).digest("hex");
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* Default export options
|
|
23
|
+
*/
|
|
24
|
+
const DEFAULT_OPTIONS = {
|
|
25
|
+
include_notebooks: true,
|
|
26
|
+
include_settings: true,
|
|
27
|
+
include_sessions: false, // Sessions are transient
|
|
28
|
+
include_audit_logs: true,
|
|
29
|
+
include_compliance_events: true,
|
|
30
|
+
encrypt_export: false,
|
|
31
|
+
format: "json_pretty",
|
|
32
|
+
};
|
|
33
|
+
/**
|
|
34
|
+
* Data Exporter class
|
|
35
|
+
*/
|
|
36
|
+
export class DataExporter {
|
|
37
|
+
static instance;
|
|
38
|
+
constructor() { }
|
|
39
|
+
/**
|
|
40
|
+
* Get singleton instance
|
|
41
|
+
*/
|
|
42
|
+
static getInstance() {
|
|
43
|
+
if (!DataExporter.instance) {
|
|
44
|
+
DataExporter.instance = new DataExporter();
|
|
45
|
+
}
|
|
46
|
+
return DataExporter.instance;
|
|
47
|
+
}
|
|
48
|
+
/**
|
|
49
|
+
* Export all user data
|
|
50
|
+
*/
|
|
51
|
+
async exportAll(options = {}) {
|
|
52
|
+
const opts = { ...DEFAULT_OPTIONS, ...options };
|
|
53
|
+
const config = getConfig();
|
|
54
|
+
// Log the export request
|
|
55
|
+
const logger = getComplianceLogger();
|
|
56
|
+
await logger.logDataExport({ type: "user" }, Object.keys(opts).filter(k => opts[k] === true), true, { format: opts.format });
|
|
57
|
+
// Collect all data
|
|
58
|
+
const data = {
|
|
59
|
+
consent_records: await this.exportConsents(),
|
|
60
|
+
notebook_library: opts.include_notebooks ? await this.exportNotebooks(config) : [],
|
|
61
|
+
user_settings: opts.include_settings ? await this.exportSettings(config) : null,
|
|
62
|
+
session_history: opts.include_sessions ? await this.exportSessions(config) : undefined,
|
|
63
|
+
activity_log: opts.include_audit_logs ? await this.exportAuditLogs(config, opts) : [],
|
|
64
|
+
compliance_events: opts.include_compliance_events ? await this.exportComplianceEvents(config, opts) : [],
|
|
65
|
+
};
|
|
66
|
+
// Build inventory summary
|
|
67
|
+
const inventory = await this.buildInventorySummary(data);
|
|
68
|
+
// Create export package
|
|
69
|
+
const exportData = {
|
|
70
|
+
export_metadata: {
|
|
71
|
+
version: "1.0.0",
|
|
72
|
+
exported_at: new Date().toISOString(),
|
|
73
|
+
format: "json",
|
|
74
|
+
encryption: opts.encrypt_export ? "password" : "none",
|
|
75
|
+
checksum: "", // Will be computed
|
|
76
|
+
},
|
|
77
|
+
data,
|
|
78
|
+
data_inventory: inventory,
|
|
79
|
+
};
|
|
80
|
+
// Compute checksum
|
|
81
|
+
const dataString = JSON.stringify(exportData.data);
|
|
82
|
+
exportData.export_metadata.checksum = computeChecksum(dataString);
|
|
83
|
+
return exportData;
|
|
84
|
+
}
|
|
85
|
+
/**
|
|
86
|
+
* Export consent records
|
|
87
|
+
*/
|
|
88
|
+
async exportConsents() {
|
|
89
|
+
const consentManager = getConsentManager();
|
|
90
|
+
return consentManager.getConsentHistory();
|
|
91
|
+
}
|
|
92
|
+
/**
|
|
93
|
+
* Export notebook library
|
|
94
|
+
*/
|
|
95
|
+
async exportNotebooks(config) {
|
|
96
|
+
const libraryPath = path.join(config.configDir, "library.json");
|
|
97
|
+
try {
|
|
98
|
+
if (fs.existsSync(libraryPath)) {
|
|
99
|
+
const content = fs.readFileSync(libraryPath, "utf-8");
|
|
100
|
+
const data = JSON.parse(content);
|
|
101
|
+
return data.notebooks || [];
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
catch {
|
|
105
|
+
// Return empty if file doesn't exist or is corrupted
|
|
106
|
+
}
|
|
107
|
+
return [];
|
|
108
|
+
}
|
|
109
|
+
/**
|
|
110
|
+
* Export user settings
|
|
111
|
+
*/
|
|
112
|
+
async exportSettings(config) {
|
|
113
|
+
const settingsPath = path.join(config.configDir, "settings.json");
|
|
114
|
+
try {
|
|
115
|
+
if (fs.existsSync(settingsPath)) {
|
|
116
|
+
const content = fs.readFileSync(settingsPath, "utf-8");
|
|
117
|
+
return JSON.parse(content);
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
catch {
|
|
121
|
+
// Return null if file doesn't exist or is corrupted
|
|
122
|
+
}
|
|
123
|
+
return null;
|
|
124
|
+
}
|
|
125
|
+
/**
|
|
126
|
+
* Export session history (if retained)
|
|
127
|
+
*/
|
|
128
|
+
async exportSessions(config) {
|
|
129
|
+
const sessionsDir = path.join(config.dataDir, "sessions");
|
|
130
|
+
const sessions = [];
|
|
131
|
+
try {
|
|
132
|
+
if (fs.existsSync(sessionsDir)) {
|
|
133
|
+
const files = fs.readdirSync(sessionsDir);
|
|
134
|
+
for (const file of files.slice(0, 100)) { // Limit to 100 sessions
|
|
135
|
+
try {
|
|
136
|
+
const filePath = path.join(sessionsDir, file);
|
|
137
|
+
const content = fs.readFileSync(filePath, "utf-8");
|
|
138
|
+
const session = JSON.parse(content);
|
|
139
|
+
// Redact sensitive session data
|
|
140
|
+
sessions.push({
|
|
141
|
+
id: session.id,
|
|
142
|
+
created_at: session.created_at,
|
|
143
|
+
last_activity: session.last_activity,
|
|
144
|
+
notebook_id: session.notebook_id,
|
|
145
|
+
// Don't include actual browser state
|
|
146
|
+
});
|
|
147
|
+
}
|
|
148
|
+
catch {
|
|
149
|
+
// Skip corrupted files
|
|
150
|
+
}
|
|
151
|
+
}
|
|
152
|
+
}
|
|
153
|
+
}
|
|
154
|
+
catch {
|
|
155
|
+
// Return empty if directory doesn't exist
|
|
156
|
+
}
|
|
157
|
+
return sessions;
|
|
158
|
+
}
|
|
159
|
+
/**
|
|
160
|
+
* Export audit logs
|
|
161
|
+
*/
|
|
162
|
+
async exportAuditLogs(config, options) {
|
|
163
|
+
const auditDir = path.join(config.dataDir, "audit");
|
|
164
|
+
const events = [];
|
|
165
|
+
try {
|
|
166
|
+
if (fs.existsSync(auditDir)) {
|
|
167
|
+
const files = fs.readdirSync(auditDir)
|
|
168
|
+
.filter(f => f.endsWith(".jsonl"))
|
|
169
|
+
.sort()
|
|
170
|
+
.reverse();
|
|
171
|
+
for (const file of files) {
|
|
172
|
+
const filePath = path.join(auditDir, file);
|
|
173
|
+
// Check date filter
|
|
174
|
+
if (options.from_date || options.to_date) {
|
|
175
|
+
const dateMatch = file.match(/audit-(\d{4}-\d{2}-\d{2})\.jsonl/);
|
|
176
|
+
if (dateMatch) {
|
|
177
|
+
const fileDate = new Date(dateMatch[1]);
|
|
178
|
+
if (options.from_date && fileDate < new Date(options.from_date))
|
|
179
|
+
continue;
|
|
180
|
+
if (options.to_date && fileDate > new Date(options.to_date))
|
|
181
|
+
continue;
|
|
182
|
+
}
|
|
183
|
+
}
|
|
184
|
+
try {
|
|
185
|
+
const content = fs.readFileSync(filePath, "utf-8");
|
|
186
|
+
const lines = content.trim().split("\n").filter(l => l);
|
|
187
|
+
for (const line of lines) {
|
|
188
|
+
try {
|
|
189
|
+
const event = JSON.parse(line);
|
|
190
|
+
events.push(event);
|
|
191
|
+
if (events.length >= 10000)
|
|
192
|
+
break; // Limit total events
|
|
193
|
+
}
|
|
194
|
+
catch {
|
|
195
|
+
// Skip malformed lines
|
|
196
|
+
}
|
|
197
|
+
}
|
|
198
|
+
}
|
|
199
|
+
catch {
|
|
200
|
+
// Skip files we can't read
|
|
201
|
+
}
|
|
202
|
+
if (events.length >= 10000)
|
|
203
|
+
break;
|
|
204
|
+
}
|
|
205
|
+
}
|
|
206
|
+
}
|
|
207
|
+
catch {
|
|
208
|
+
// Return empty if directory doesn't exist
|
|
209
|
+
}
|
|
210
|
+
return events;
|
|
211
|
+
}
|
|
212
|
+
/**
|
|
213
|
+
* Export compliance events
|
|
214
|
+
*/
|
|
215
|
+
async exportComplianceEvents(config, options) {
|
|
216
|
+
const complianceDir = path.join(config.dataDir, "compliance");
|
|
217
|
+
const events = [];
|
|
218
|
+
try {
|
|
219
|
+
if (fs.existsSync(complianceDir)) {
|
|
220
|
+
const files = fs.readdirSync(complianceDir)
|
|
221
|
+
.filter(f => f.endsWith(".jsonl"))
|
|
222
|
+
.sort()
|
|
223
|
+
.reverse();
|
|
224
|
+
for (const file of files) {
|
|
225
|
+
const filePath = path.join(complianceDir, file);
|
|
226
|
+
// Check date filter
|
|
227
|
+
if (options.from_date || options.to_date) {
|
|
228
|
+
const dateMatch = file.match(/events-(\d{4}-\d{2})\.jsonl/);
|
|
229
|
+
if (dateMatch) {
|
|
230
|
+
const fileDate = new Date(dateMatch[1] + "-01");
|
|
231
|
+
if (options.from_date && fileDate < new Date(options.from_date))
|
|
232
|
+
continue;
|
|
233
|
+
if (options.to_date) {
|
|
234
|
+
const toDate = new Date(options.to_date);
|
|
235
|
+
if (fileDate > toDate)
|
|
236
|
+
continue;
|
|
237
|
+
}
|
|
238
|
+
}
|
|
239
|
+
}
|
|
240
|
+
try {
|
|
241
|
+
const content = fs.readFileSync(filePath, "utf-8");
|
|
242
|
+
const lines = content.trim().split("\n").filter(l => l);
|
|
243
|
+
for (const line of lines) {
|
|
244
|
+
try {
|
|
245
|
+
const event = JSON.parse(line);
|
|
246
|
+
events.push(event);
|
|
247
|
+
if (events.length >= 10000)
|
|
248
|
+
break;
|
|
249
|
+
}
|
|
250
|
+
catch {
|
|
251
|
+
// Skip malformed lines
|
|
252
|
+
}
|
|
253
|
+
}
|
|
254
|
+
}
|
|
255
|
+
catch {
|
|
256
|
+
// Skip files we can't read
|
|
257
|
+
}
|
|
258
|
+
if (events.length >= 10000)
|
|
259
|
+
break;
|
|
260
|
+
}
|
|
261
|
+
}
|
|
262
|
+
}
|
|
263
|
+
catch {
|
|
264
|
+
// Return empty if directory doesn't exist
|
|
265
|
+
}
|
|
266
|
+
return events;
|
|
267
|
+
}
|
|
268
|
+
/**
|
|
269
|
+
* Build inventory summary from exported data
|
|
270
|
+
*/
|
|
271
|
+
async buildInventorySummary(data) {
|
|
272
|
+
const inventory = [];
|
|
273
|
+
// Consent records
|
|
274
|
+
if (data.consent_records.length > 0) {
|
|
275
|
+
const dates = data.consent_records.map(c => new Date(c.granted_at));
|
|
276
|
+
inventory.push({
|
|
277
|
+
category: "consent_records",
|
|
278
|
+
count: data.consent_records.length,
|
|
279
|
+
date_range: {
|
|
280
|
+
from: new Date(Math.min(...dates.map(d => d.getTime()))).toISOString(),
|
|
281
|
+
to: new Date(Math.max(...dates.map(d => d.getTime()))).toISOString(),
|
|
282
|
+
},
|
|
283
|
+
});
|
|
284
|
+
}
|
|
285
|
+
// Notebooks
|
|
286
|
+
if (Array.isArray(data.notebook_library) && data.notebook_library.length > 0) {
|
|
287
|
+
inventory.push({
|
|
288
|
+
category: "notebook_library",
|
|
289
|
+
count: data.notebook_library.length,
|
|
290
|
+
date_range: { from: "", to: "" },
|
|
291
|
+
});
|
|
292
|
+
}
|
|
293
|
+
// Settings
|
|
294
|
+
if (data.user_settings) {
|
|
295
|
+
inventory.push({
|
|
296
|
+
category: "user_settings",
|
|
297
|
+
count: 1,
|
|
298
|
+
date_range: { from: "", to: "" },
|
|
299
|
+
});
|
|
300
|
+
}
|
|
301
|
+
// Activity log
|
|
302
|
+
if (data.activity_log.length > 0) {
|
|
303
|
+
const timestamps = data.activity_log
|
|
304
|
+
.map(e => e.timestamp)
|
|
305
|
+
.filter(t => t)
|
|
306
|
+
.map(t => new Date(t));
|
|
307
|
+
if (timestamps.length > 0) {
|
|
308
|
+
inventory.push({
|
|
309
|
+
category: "activity_log",
|
|
310
|
+
count: data.activity_log.length,
|
|
311
|
+
date_range: {
|
|
312
|
+
from: new Date(Math.min(...timestamps.map(d => d.getTime()))).toISOString(),
|
|
313
|
+
to: new Date(Math.max(...timestamps.map(d => d.getTime()))).toISOString(),
|
|
314
|
+
},
|
|
315
|
+
});
|
|
316
|
+
}
|
|
317
|
+
}
|
|
318
|
+
// Compliance events
|
|
319
|
+
if (data.compliance_events.length > 0) {
|
|
320
|
+
const timestamps = data.compliance_events
|
|
321
|
+
.map(e => e.timestamp)
|
|
322
|
+
.filter(t => t)
|
|
323
|
+
.map(t => new Date(t));
|
|
324
|
+
if (timestamps.length > 0) {
|
|
325
|
+
inventory.push({
|
|
326
|
+
category: "compliance_events",
|
|
327
|
+
count: data.compliance_events.length,
|
|
328
|
+
date_range: {
|
|
329
|
+
from: new Date(Math.min(...timestamps.map(d => d.getTime()))).toISOString(),
|
|
330
|
+
to: new Date(Math.max(...timestamps.map(d => d.getTime()))).toISOString(),
|
|
331
|
+
},
|
|
332
|
+
});
|
|
333
|
+
}
|
|
334
|
+
}
|
|
335
|
+
return inventory;
|
|
336
|
+
}
|
|
337
|
+
/**
|
|
338
|
+
* Export to file
|
|
339
|
+
*/
|
|
340
|
+
async exportToFile(outputPath, options = {}) {
|
|
341
|
+
const exportData = await this.exportAll(options);
|
|
342
|
+
const format = options.format || "json_pretty";
|
|
343
|
+
const content = format === "json_pretty"
|
|
344
|
+
? JSON.stringify(exportData, null, 2)
|
|
345
|
+
: JSON.stringify(exportData);
|
|
346
|
+
fs.writeFileSync(outputPath, content, "utf-8");
|
|
347
|
+
return {
|
|
348
|
+
success: true,
|
|
349
|
+
path: outputPath,
|
|
350
|
+
checksum: exportData.export_metadata.checksum,
|
|
351
|
+
};
|
|
352
|
+
}
|
|
353
|
+
/**
|
|
354
|
+
* Export to string
|
|
355
|
+
*/
|
|
356
|
+
async exportToString(options = {}) {
|
|
357
|
+
const exportData = await this.exportAll(options);
|
|
358
|
+
const format = options.format || "json_pretty";
|
|
359
|
+
return format === "json_pretty"
|
|
360
|
+
? JSON.stringify(exportData, null, 2)
|
|
361
|
+
: JSON.stringify(exportData);
|
|
362
|
+
}
|
|
363
|
+
}
|
|
364
|
+
// ============================================
|
|
365
|
+
// SINGLETON ACCESS
|
|
366
|
+
// ============================================
|
|
367
|
+
/**
|
|
368
|
+
* Get the data exporter instance
|
|
369
|
+
*/
|
|
370
|
+
export function getDataExporter() {
|
|
371
|
+
return DataExporter.getInstance();
|
|
372
|
+
}
|
|
373
|
+
// ============================================
|
|
374
|
+
// CONVENIENCE EXPORTS
|
|
375
|
+
// ============================================
|
|
376
|
+
/**
|
|
377
|
+
* Export all user data
|
|
378
|
+
*/
|
|
379
|
+
export async function exportUserData(options = {}) {
|
|
380
|
+
return getDataExporter().exportAll(options);
|
|
381
|
+
}
|
|
382
|
+
/**
|
|
383
|
+
* Export user data to file
|
|
384
|
+
*/
|
|
385
|
+
export async function exportUserDataToFile(outputPath, options = {}) {
|
|
386
|
+
return getDataExporter().exportToFile(outputPath, options);
|
|
387
|
+
}
|
|
388
|
+
/**
|
|
389
|
+
* Export user data to string
|
|
390
|
+
*/
|
|
391
|
+
export async function exportUserDataToString(options = {}) {
|
|
392
|
+
return getDataExporter().exportToString(options);
|
|
393
|
+
}
|
|
394
|
+
//# sourceMappingURL=data-export.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"data-export.js","sourceRoot":"","sources":["../../src/compliance/data-export.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,136 @@
|
|
|
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 { DataClassification, type DataInventoryEntry, type DataCategory, type LegalBasis } from "./types.js";
|
|
10
|
+
/**
|
|
11
|
+
* Data Inventory class
|
|
12
|
+
*/
|
|
13
|
+
export declare class DataInventory {
|
|
14
|
+
private static instance;
|
|
15
|
+
private inventoryFile;
|
|
16
|
+
private entries;
|
|
17
|
+
private loaded;
|
|
18
|
+
private constructor();
|
|
19
|
+
/**
|
|
20
|
+
* Get singleton instance
|
|
21
|
+
*/
|
|
22
|
+
static getInstance(): DataInventory;
|
|
23
|
+
/**
|
|
24
|
+
* Load inventory from storage
|
|
25
|
+
*/
|
|
26
|
+
private load;
|
|
27
|
+
/**
|
|
28
|
+
* Save inventory to storage
|
|
29
|
+
*/
|
|
30
|
+
private save;
|
|
31
|
+
/**
|
|
32
|
+
* Auto-discover data based on known data types and locations
|
|
33
|
+
*/
|
|
34
|
+
private autoDiscover;
|
|
35
|
+
/**
|
|
36
|
+
* Register a new data type in the inventory
|
|
37
|
+
*/
|
|
38
|
+
register(dataType: string, storageLocation: string, options?: {
|
|
39
|
+
description?: string;
|
|
40
|
+
classification?: DataClassification;
|
|
41
|
+
dataCategories?: DataCategory[];
|
|
42
|
+
legalBasis?: LegalBasis;
|
|
43
|
+
retentionDays?: number | "indefinite";
|
|
44
|
+
encrypted?: boolean;
|
|
45
|
+
exportable?: boolean;
|
|
46
|
+
erasable?: boolean;
|
|
47
|
+
}): Promise<DataInventoryEntry>;
|
|
48
|
+
/**
|
|
49
|
+
* Update an existing entry
|
|
50
|
+
*/
|
|
51
|
+
update(entryId: string, updates: Partial<Omit<DataInventoryEntry, "id" | "data_type">>): Promise<DataInventoryEntry | null>;
|
|
52
|
+
/**
|
|
53
|
+
* Remove an entry from the inventory
|
|
54
|
+
*/
|
|
55
|
+
remove(entryId: string): Promise<boolean>;
|
|
56
|
+
/**
|
|
57
|
+
* Get all inventory entries
|
|
58
|
+
*/
|
|
59
|
+
getAll(): Promise<DataInventoryEntry[]>;
|
|
60
|
+
/**
|
|
61
|
+
* Get entry by ID
|
|
62
|
+
*/
|
|
63
|
+
getById(entryId: string): Promise<DataInventoryEntry | null>;
|
|
64
|
+
/**
|
|
65
|
+
* Get entries by data type
|
|
66
|
+
*/
|
|
67
|
+
getByDataType(dataType: string): Promise<DataInventoryEntry[]>;
|
|
68
|
+
/**
|
|
69
|
+
* Get entries by classification
|
|
70
|
+
*/
|
|
71
|
+
getByClassification(classification: DataClassification): Promise<DataInventoryEntry[]>;
|
|
72
|
+
/**
|
|
73
|
+
* Get entries by data category
|
|
74
|
+
*/
|
|
75
|
+
getByCategory(category: DataCategory): Promise<DataInventoryEntry[]>;
|
|
76
|
+
/**
|
|
77
|
+
* Get exportable data entries (for GDPR data portability)
|
|
78
|
+
*/
|
|
79
|
+
getExportable(): Promise<DataInventoryEntry[]>;
|
|
80
|
+
/**
|
|
81
|
+
* Get erasable data entries (for GDPR right to erasure)
|
|
82
|
+
*/
|
|
83
|
+
getErasable(): Promise<DataInventoryEntry[]>;
|
|
84
|
+
/**
|
|
85
|
+
* Get personal data entries (for DSAR)
|
|
86
|
+
*/
|
|
87
|
+
getPersonalData(): Promise<DataInventoryEntry[]>;
|
|
88
|
+
/**
|
|
89
|
+
* Generate GDPR Article 30 Records of Processing Activities
|
|
90
|
+
*/
|
|
91
|
+
generateROPA(): Promise<{
|
|
92
|
+
controller: string;
|
|
93
|
+
purposes: string[];
|
|
94
|
+
categories_of_data_subjects: string[];
|
|
95
|
+
categories_of_personal_data: string[];
|
|
96
|
+
recipients: string[];
|
|
97
|
+
transfers_to_third_countries: string[];
|
|
98
|
+
retention_periods: {
|
|
99
|
+
data_type: string;
|
|
100
|
+
period: string;
|
|
101
|
+
}[];
|
|
102
|
+
security_measures: string[];
|
|
103
|
+
}>;
|
|
104
|
+
/**
|
|
105
|
+
* Get inventory summary
|
|
106
|
+
*/
|
|
107
|
+
getSummary(): Promise<{
|
|
108
|
+
total_entries: number;
|
|
109
|
+
by_classification: Record<DataClassification, number>;
|
|
110
|
+
exportable_count: number;
|
|
111
|
+
erasable_count: number;
|
|
112
|
+
personal_data_count: number;
|
|
113
|
+
encrypted_count: number;
|
|
114
|
+
}>;
|
|
115
|
+
/**
|
|
116
|
+
* Export inventory for compliance reporting
|
|
117
|
+
*/
|
|
118
|
+
export(): Promise<string>;
|
|
119
|
+
}
|
|
120
|
+
/**
|
|
121
|
+
* Get the data inventory instance
|
|
122
|
+
*/
|
|
123
|
+
export declare function getDataInventory(): DataInventory;
|
|
124
|
+
/**
|
|
125
|
+
* Get all data inventory entries
|
|
126
|
+
*/
|
|
127
|
+
export declare function getAllDataInventory(): Promise<DataInventoryEntry[]>;
|
|
128
|
+
/**
|
|
129
|
+
* Get exportable data entries
|
|
130
|
+
*/
|
|
131
|
+
export declare function getExportableData(): Promise<DataInventoryEntry[]>;
|
|
132
|
+
/**
|
|
133
|
+
* Get erasable data entries
|
|
134
|
+
*/
|
|
135
|
+
export declare function getErasableData(): Promise<DataInventoryEntry[]>;
|
|
136
|
+
//# sourceMappingURL=data-inventory.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"data-inventory.d.ts","sourceRoot":"","sources":["../../src/compliance/data-inventory.ts"],"names":[],"mappings":"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"}
|