@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,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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"}