@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.
- 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/events/event-emitter.d.ts +45 -0
- package/dist/events/event-emitter.d.ts.map +1 -0
- package/dist/events/event-emitter.js +100 -0
- package/dist/events/event-emitter.js.map +1 -0
- package/dist/events/event-types.d.ts +124 -0
- package/dist/events/event-types.d.ts.map +1 -0
- package/dist/events/event-types.js +18 -0
- package/dist/events/event-types.js.map +1 -0
- package/dist/index.js +59 -2
- package/dist/index.js.map +1 -1
- package/dist/library/notebook-library.d.ts +25 -2
- package/dist/library/notebook-library.d.ts.map +1 -1
- package/dist/library/notebook-library.js +144 -3
- package/dist/library/notebook-library.js.map +1 -1
- package/dist/library/types.d.ts +15 -0
- package/dist/library/types.d.ts.map +1 -1
- package/dist/notebook-creation/audio-manager.d.ts +56 -0
- package/dist/notebook-creation/audio-manager.d.ts.map +1 -0
- package/dist/notebook-creation/audio-manager.js +335 -0
- package/dist/notebook-creation/audio-manager.js.map +1 -0
- package/dist/notebook-creation/discover-creation-flow.d.ts +8 -0
- package/dist/notebook-creation/discover-creation-flow.d.ts.map +1 -0
- package/dist/notebook-creation/discover-creation-flow.js +177 -0
- package/dist/notebook-creation/discover-creation-flow.js.map +1 -0
- package/dist/notebook-creation/discover-quota.d.ts +8 -0
- package/dist/notebook-creation/discover-quota.d.ts.map +1 -0
- package/dist/notebook-creation/discover-quota.js +195 -0
- package/dist/notebook-creation/discover-quota.js.map +1 -0
- package/dist/notebook-creation/discover-source-dialog.d.ts +8 -0
- package/dist/notebook-creation/discover-source-dialog.d.ts.map +1 -0
- package/dist/notebook-creation/discover-source-dialog.js +134 -0
- package/dist/notebook-creation/discover-source-dialog.js.map +1 -0
- package/dist/notebook-creation/discover-sources.d.ts +8 -0
- package/dist/notebook-creation/discover-sources.d.ts.map +1 -0
- package/dist/notebook-creation/discover-sources.js +273 -0
- package/dist/notebook-creation/discover-sources.js.map +1 -0
- package/dist/notebook-creation/discover-text-input.d.ts +7 -0
- package/dist/notebook-creation/discover-text-input.d.ts.map +1 -0
- package/dist/notebook-creation/discover-text-input.js +135 -0
- package/dist/notebook-creation/discover-text-input.js.map +1 -0
- package/dist/notebook-creation/index.d.ts +12 -0
- package/dist/notebook-creation/index.d.ts.map +1 -0
- package/dist/notebook-creation/index.js +12 -0
- package/dist/notebook-creation/index.js.map +1 -0
- package/dist/notebook-creation/notebook-creator.d.ts +95 -0
- package/dist/notebook-creation/notebook-creator.d.ts.map +1 -0
- package/dist/notebook-creation/notebook-creator.js +689 -0
- package/dist/notebook-creation/notebook-creator.js.map +1 -0
- package/dist/notebook-creation/notebook-sync.d.ts +93 -0
- package/dist/notebook-creation/notebook-sync.d.ts.map +1 -0
- package/dist/notebook-creation/notebook-sync.js +370 -0
- package/dist/notebook-creation/notebook-sync.js.map +1 -0
- package/dist/notebook-creation/run-discovery.d.ts +11 -0
- package/dist/notebook-creation/run-discovery.d.ts.map +1 -0
- package/dist/notebook-creation/run-discovery.js +151 -0
- package/dist/notebook-creation/run-discovery.js.map +1 -0
- package/dist/notebook-creation/selector-discovery.d.ts +65 -0
- package/dist/notebook-creation/selector-discovery.d.ts.map +1 -0
- package/dist/notebook-creation/selector-discovery.js +421 -0
- package/dist/notebook-creation/selector-discovery.js.map +1 -0
- package/dist/notebook-creation/selectors.d.ts +150 -0
- package/dist/notebook-creation/selectors.d.ts.map +1 -0
- package/dist/notebook-creation/selectors.js +225 -0
- package/dist/notebook-creation/selectors.js.map +1 -0
- package/dist/notebook-creation/source-manager.d.ts +73 -0
- package/dist/notebook-creation/source-manager.d.ts.map +1 -0
- package/dist/notebook-creation/source-manager.js +486 -0
- package/dist/notebook-creation/source-manager.js.map +1 -0
- package/dist/notebook-creation/test-create.d.ts +8 -0
- package/dist/notebook-creation/test-create.d.ts.map +1 -0
- package/dist/notebook-creation/test-create.js +72 -0
- package/dist/notebook-creation/test-create.js.map +1 -0
- package/dist/notebook-creation/types.d.ts +173 -0
- package/dist/notebook-creation/types.d.ts.map +1 -0
- package/dist/notebook-creation/types.js +5 -0
- package/dist/notebook-creation/types.js.map +1 -0
- package/dist/quota/index.d.ts +8 -0
- package/dist/quota/index.d.ts.map +1 -0
- package/dist/quota/index.js +8 -0
- package/dist/quota/index.js.map +1 -0
- package/dist/quota/quota-manager.d.ts +125 -0
- package/dist/quota/quota-manager.d.ts.map +1 -0
- package/dist/quota/quota-manager.js +330 -0
- package/dist/quota/quota-manager.js.map +1 -0
- package/dist/session/session-manager.d.ts +5 -0
- package/dist/session/session-manager.d.ts.map +1 -1
- package/dist/session/session-manager.js +6 -0
- package/dist/session/session-manager.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/tools/definitions/notebook-management.d.ts.map +1 -1
- package/dist/tools/definitions/notebook-management.js +525 -0
- package/dist/tools/definitions/notebook-management.js.map +1 -1
- package/dist/tools/definitions/system.d.ts.map +1 -1
- package/dist/tools/definitions/system.js +158 -0
- package/dist/tools/definitions/system.js.map +1 -1
- package/dist/tools/handlers.d.ts +225 -0
- package/dist/tools/handlers.d.ts.map +1 -1
- package/dist/tools/handlers.js +911 -0
- package/dist/tools/handlers.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/dist/webhooks/index.d.ts +8 -0
- package/dist/webhooks/index.d.ts.map +1 -0
- package/dist/webhooks/index.js +8 -0
- package/dist/webhooks/index.js.map +1 -0
- package/dist/webhooks/types.d.ts +57 -0
- package/dist/webhooks/types.d.ts.map +1 -0
- package/dist/webhooks/types.js +5 -0
- package/dist/webhooks/types.js.map +1 -0
- package/dist/webhooks/webhook-dispatcher.d.ts +120 -0
- package/dist/webhooks/webhook-dispatcher.d.ts.map +1 -0
- package/dist/webhooks/webhook-dispatcher.js +519 -0
- package/dist/webhooks/webhook-dispatcher.js.map +1 -0
- package/docs/COMPLIANCE-SPEC.md +1452 -0
- package/package.json +30 -4
|
@@ -0,0 +1,469 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Data Classification System
|
|
3
|
+
*
|
|
4
|
+
* Tags all data by sensitivity level for appropriate handling.
|
|
5
|
+
* Supports GDPR, SOC2, and CSSF compliance requirements.
|
|
6
|
+
*
|
|
7
|
+
* Added by Pantheon Security for enterprise compliance support.
|
|
8
|
+
*/
|
|
9
|
+
import { DataClassification, } from "./types.js";
|
|
10
|
+
// ============================================
|
|
11
|
+
// DATA TYPE REGISTRY
|
|
12
|
+
// ============================================
|
|
13
|
+
/**
|
|
14
|
+
* Pre-defined data classifications for known data types
|
|
15
|
+
*/
|
|
16
|
+
const DATA_CLASSIFICATIONS = {
|
|
17
|
+
// Authentication & Credentials
|
|
18
|
+
"auth_token": {
|
|
19
|
+
classification: DataClassification.RESTRICTED,
|
|
20
|
+
data_categories: ["credentials"],
|
|
21
|
+
retention_policy: "session",
|
|
22
|
+
encryption_required: true,
|
|
23
|
+
audit_required: true,
|
|
24
|
+
exportable: false,
|
|
25
|
+
erasable: true,
|
|
26
|
+
},
|
|
27
|
+
"mcp_auth_token": {
|
|
28
|
+
classification: DataClassification.RESTRICTED,
|
|
29
|
+
data_categories: ["credentials"],
|
|
30
|
+
retention_policy: "indefinite",
|
|
31
|
+
encryption_required: true,
|
|
32
|
+
audit_required: true,
|
|
33
|
+
exportable: false,
|
|
34
|
+
erasable: true,
|
|
35
|
+
},
|
|
36
|
+
"encryption_keys": {
|
|
37
|
+
classification: DataClassification.RESTRICTED,
|
|
38
|
+
data_categories: ["credentials"],
|
|
39
|
+
retention_policy: "indefinite",
|
|
40
|
+
encryption_required: true,
|
|
41
|
+
audit_required: true,
|
|
42
|
+
exportable: false,
|
|
43
|
+
erasable: true,
|
|
44
|
+
},
|
|
45
|
+
// Browser & Session Data
|
|
46
|
+
"browser_cookies": {
|
|
47
|
+
classification: DataClassification.RESTRICTED,
|
|
48
|
+
data_categories: ["session_data", "personal_data"],
|
|
49
|
+
retention_policy: "24_hours",
|
|
50
|
+
encryption_required: true,
|
|
51
|
+
audit_required: true,
|
|
52
|
+
exportable: true,
|
|
53
|
+
erasable: true,
|
|
54
|
+
},
|
|
55
|
+
"browser_local_storage": {
|
|
56
|
+
classification: DataClassification.CONFIDENTIAL,
|
|
57
|
+
data_categories: ["session_data"],
|
|
58
|
+
retention_policy: "24_hours",
|
|
59
|
+
encryption_required: true,
|
|
60
|
+
audit_required: false,
|
|
61
|
+
exportable: true,
|
|
62
|
+
erasable: true,
|
|
63
|
+
},
|
|
64
|
+
"session_state": {
|
|
65
|
+
classification: DataClassification.CONFIDENTIAL,
|
|
66
|
+
data_categories: ["session_data"],
|
|
67
|
+
retention_policy: "8_hours",
|
|
68
|
+
encryption_required: true,
|
|
69
|
+
audit_required: true,
|
|
70
|
+
exportable: true,
|
|
71
|
+
erasable: true,
|
|
72
|
+
},
|
|
73
|
+
// User Data
|
|
74
|
+
"notebook_library": {
|
|
75
|
+
classification: DataClassification.CONFIDENTIAL,
|
|
76
|
+
data_categories: ["notebook_metadata"],
|
|
77
|
+
retention_policy: "indefinite",
|
|
78
|
+
encryption_required: true,
|
|
79
|
+
audit_required: true,
|
|
80
|
+
exportable: true,
|
|
81
|
+
erasable: true,
|
|
82
|
+
},
|
|
83
|
+
"user_settings": {
|
|
84
|
+
classification: DataClassification.INTERNAL,
|
|
85
|
+
data_categories: ["configuration"],
|
|
86
|
+
retention_policy: "indefinite",
|
|
87
|
+
encryption_required: false,
|
|
88
|
+
audit_required: false,
|
|
89
|
+
exportable: true,
|
|
90
|
+
erasable: true,
|
|
91
|
+
},
|
|
92
|
+
"consent_records": {
|
|
93
|
+
classification: DataClassification.REGULATED,
|
|
94
|
+
data_categories: ["personal_data"],
|
|
95
|
+
retention_policy: "7_years",
|
|
96
|
+
encryption_required: true,
|
|
97
|
+
audit_required: true,
|
|
98
|
+
exportable: true,
|
|
99
|
+
erasable: false, // Must retain for compliance
|
|
100
|
+
},
|
|
101
|
+
// Audit & Compliance Logs
|
|
102
|
+
"audit_logs": {
|
|
103
|
+
classification: DataClassification.REGULATED,
|
|
104
|
+
data_categories: ["audit_logs"],
|
|
105
|
+
retention_policy: "7_years",
|
|
106
|
+
encryption_required: true,
|
|
107
|
+
audit_required: false, // Don't audit the audit logs
|
|
108
|
+
exportable: true,
|
|
109
|
+
erasable: false, // Required for compliance
|
|
110
|
+
},
|
|
111
|
+
"compliance_events": {
|
|
112
|
+
classification: DataClassification.REGULATED,
|
|
113
|
+
data_categories: ["audit_logs"],
|
|
114
|
+
retention_policy: "7_years",
|
|
115
|
+
encryption_required: true,
|
|
116
|
+
audit_required: false,
|
|
117
|
+
exportable: true,
|
|
118
|
+
erasable: false, // Required for compliance
|
|
119
|
+
},
|
|
120
|
+
"security_logs": {
|
|
121
|
+
classification: DataClassification.REGULATED,
|
|
122
|
+
data_categories: ["audit_logs"],
|
|
123
|
+
retention_policy: "7_years",
|
|
124
|
+
encryption_required: true,
|
|
125
|
+
audit_required: false,
|
|
126
|
+
exportable: true,
|
|
127
|
+
erasable: false,
|
|
128
|
+
},
|
|
129
|
+
// Cache & Temporary Data
|
|
130
|
+
"browser_cache": {
|
|
131
|
+
classification: DataClassification.INTERNAL,
|
|
132
|
+
data_categories: ["session_data"],
|
|
133
|
+
retention_policy: "7_days",
|
|
134
|
+
encryption_required: false,
|
|
135
|
+
audit_required: false,
|
|
136
|
+
exportable: false,
|
|
137
|
+
erasable: true,
|
|
138
|
+
},
|
|
139
|
+
"error_logs": {
|
|
140
|
+
classification: DataClassification.INTERNAL,
|
|
141
|
+
data_categories: ["usage_data"],
|
|
142
|
+
retention_policy: "30_days",
|
|
143
|
+
encryption_required: false,
|
|
144
|
+
audit_required: false,
|
|
145
|
+
exportable: true,
|
|
146
|
+
erasable: true,
|
|
147
|
+
},
|
|
148
|
+
};
|
|
149
|
+
/**
|
|
150
|
+
* Legal basis for each data type
|
|
151
|
+
*/
|
|
152
|
+
const DATA_LEGAL_BASES = {
|
|
153
|
+
"auth_token": "contract",
|
|
154
|
+
"mcp_auth_token": "contract",
|
|
155
|
+
"encryption_keys": "legal_obligation",
|
|
156
|
+
"browser_cookies": "contract",
|
|
157
|
+
"browser_local_storage": "contract",
|
|
158
|
+
"session_state": "contract",
|
|
159
|
+
"notebook_library": "contract",
|
|
160
|
+
"user_settings": "contract",
|
|
161
|
+
"consent_records": "legal_obligation",
|
|
162
|
+
"audit_logs": "legal_obligation",
|
|
163
|
+
"compliance_events": "legal_obligation",
|
|
164
|
+
"security_logs": "legal_obligation",
|
|
165
|
+
"browser_cache": "legitimate_interest",
|
|
166
|
+
"error_logs": "legitimate_interest",
|
|
167
|
+
};
|
|
168
|
+
/**
|
|
169
|
+
* Processing purposes for each data type
|
|
170
|
+
*/
|
|
171
|
+
const DATA_PURPOSES = {
|
|
172
|
+
"auth_token": ["service_provision", "session_management"],
|
|
173
|
+
"mcp_auth_token": ["service_provision", "access_control"],
|
|
174
|
+
"encryption_keys": ["data_protection"],
|
|
175
|
+
"browser_cookies": ["service_provision", "session_management"],
|
|
176
|
+
"browser_local_storage": ["service_provision"],
|
|
177
|
+
"session_state": ["session_management"],
|
|
178
|
+
"notebook_library": ["service_provision"],
|
|
179
|
+
"user_settings": ["service_provision", "personalization"],
|
|
180
|
+
"consent_records": ["legal_compliance"],
|
|
181
|
+
"audit_logs": ["security_logging", "legal_compliance"],
|
|
182
|
+
"compliance_events": ["legal_compliance"],
|
|
183
|
+
"security_logs": ["security_logging", "legal_compliance"],
|
|
184
|
+
"browser_cache": ["performance_optimization"],
|
|
185
|
+
"error_logs": ["error_diagnostics", "service_improvement"],
|
|
186
|
+
};
|
|
187
|
+
// ============================================
|
|
188
|
+
// DATA CLASSIFIER
|
|
189
|
+
// ============================================
|
|
190
|
+
/**
|
|
191
|
+
* Data Classifier class
|
|
192
|
+
*/
|
|
193
|
+
export class DataClassifier {
|
|
194
|
+
static instance;
|
|
195
|
+
customClassifications = new Map();
|
|
196
|
+
constructor() { }
|
|
197
|
+
/**
|
|
198
|
+
* Get singleton instance
|
|
199
|
+
*/
|
|
200
|
+
static getInstance() {
|
|
201
|
+
if (!DataClassifier.instance) {
|
|
202
|
+
DataClassifier.instance = new DataClassifier();
|
|
203
|
+
}
|
|
204
|
+
return DataClassifier.instance;
|
|
205
|
+
}
|
|
206
|
+
/**
|
|
207
|
+
* Classify a data type
|
|
208
|
+
*/
|
|
209
|
+
classify(dataType) {
|
|
210
|
+
// Check custom classifications first
|
|
211
|
+
if (this.customClassifications.has(dataType)) {
|
|
212
|
+
return this.customClassifications.get(dataType);
|
|
213
|
+
}
|
|
214
|
+
// Check built-in classifications
|
|
215
|
+
if (dataType in DATA_CLASSIFICATIONS) {
|
|
216
|
+
return DATA_CLASSIFICATIONS[dataType];
|
|
217
|
+
}
|
|
218
|
+
return null;
|
|
219
|
+
}
|
|
220
|
+
/**
|
|
221
|
+
* Get the classification level for a data type
|
|
222
|
+
*/
|
|
223
|
+
getClassificationLevel(dataType) {
|
|
224
|
+
const classified = this.classify(dataType);
|
|
225
|
+
return classified?.classification || DataClassification.INTERNAL;
|
|
226
|
+
}
|
|
227
|
+
/**
|
|
228
|
+
* Check if data requires encryption
|
|
229
|
+
*/
|
|
230
|
+
requiresEncryption(dataType) {
|
|
231
|
+
const classified = this.classify(dataType);
|
|
232
|
+
return classified?.encryption_required ?? false;
|
|
233
|
+
}
|
|
234
|
+
/**
|
|
235
|
+
* Check if data access requires audit logging
|
|
236
|
+
*/
|
|
237
|
+
requiresAudit(dataType) {
|
|
238
|
+
const classified = this.classify(dataType);
|
|
239
|
+
return classified?.audit_required ?? true;
|
|
240
|
+
}
|
|
241
|
+
/**
|
|
242
|
+
* Check if data is exportable (for GDPR data portability)
|
|
243
|
+
*/
|
|
244
|
+
isExportable(dataType) {
|
|
245
|
+
const classified = this.classify(dataType);
|
|
246
|
+
return classified?.exportable ?? false;
|
|
247
|
+
}
|
|
248
|
+
/**
|
|
249
|
+
* Check if data is erasable (for GDPR right to erasure)
|
|
250
|
+
*/
|
|
251
|
+
isErasable(dataType) {
|
|
252
|
+
const classified = this.classify(dataType);
|
|
253
|
+
return classified?.erasable ?? false;
|
|
254
|
+
}
|
|
255
|
+
/**
|
|
256
|
+
* Get legal basis for processing
|
|
257
|
+
*/
|
|
258
|
+
getLegalBasis(dataType) {
|
|
259
|
+
return DATA_LEGAL_BASES[dataType] || "legitimate_interest";
|
|
260
|
+
}
|
|
261
|
+
/**
|
|
262
|
+
* Get processing purposes
|
|
263
|
+
*/
|
|
264
|
+
getProcessingPurposes(dataType) {
|
|
265
|
+
return DATA_PURPOSES[dataType] || ["service_provision"];
|
|
266
|
+
}
|
|
267
|
+
/**
|
|
268
|
+
* Get retention policy
|
|
269
|
+
*/
|
|
270
|
+
getRetentionPolicy(dataType) {
|
|
271
|
+
const classified = this.classify(dataType);
|
|
272
|
+
return classified?.retention_policy || "30_days";
|
|
273
|
+
}
|
|
274
|
+
/**
|
|
275
|
+
* Register a custom classification
|
|
276
|
+
*/
|
|
277
|
+
registerClassification(dataType, classification) {
|
|
278
|
+
this.customClassifications.set(dataType, classification);
|
|
279
|
+
}
|
|
280
|
+
/**
|
|
281
|
+
* Get all known data types
|
|
282
|
+
*/
|
|
283
|
+
getAllDataTypes() {
|
|
284
|
+
const builtIn = Object.keys(DATA_CLASSIFICATIONS);
|
|
285
|
+
const custom = Array.from(this.customClassifications.keys());
|
|
286
|
+
return [...new Set([...builtIn, ...custom])];
|
|
287
|
+
}
|
|
288
|
+
/**
|
|
289
|
+
* Get data types by classification level
|
|
290
|
+
*/
|
|
291
|
+
getDataTypesByClassification(level) {
|
|
292
|
+
return this.getAllDataTypes().filter(dt => {
|
|
293
|
+
const classified = this.classify(dt);
|
|
294
|
+
return classified?.classification === level;
|
|
295
|
+
});
|
|
296
|
+
}
|
|
297
|
+
/**
|
|
298
|
+
* Get data types by category
|
|
299
|
+
*/
|
|
300
|
+
getDataTypesByCategory(category) {
|
|
301
|
+
return this.getAllDataTypes().filter(dt => {
|
|
302
|
+
const classified = this.classify(dt);
|
|
303
|
+
return classified?.data_categories.includes(category);
|
|
304
|
+
});
|
|
305
|
+
}
|
|
306
|
+
/**
|
|
307
|
+
* Build a data inventory entry
|
|
308
|
+
*/
|
|
309
|
+
buildInventoryEntry(dataType, storageLocation) {
|
|
310
|
+
const classified = this.classify(dataType);
|
|
311
|
+
if (!classified)
|
|
312
|
+
return null;
|
|
313
|
+
const retentionDays = this.parseRetentionDays(classified.retention_policy);
|
|
314
|
+
return {
|
|
315
|
+
id: `inv_${dataType}_${Date.now()}`,
|
|
316
|
+
data_type: dataType,
|
|
317
|
+
description: this.getDataTypeDescription(dataType),
|
|
318
|
+
classification: classified.classification,
|
|
319
|
+
data_categories: classified.data_categories,
|
|
320
|
+
storage_location: storageLocation,
|
|
321
|
+
encrypted: classified.encryption_required,
|
|
322
|
+
retention_policy: classified.retention_policy,
|
|
323
|
+
retention_days: retentionDays,
|
|
324
|
+
legal_basis: this.getLegalBasis(dataType),
|
|
325
|
+
processing_purposes: this.getProcessingPurposes(dataType),
|
|
326
|
+
who_can_access: ["owner"],
|
|
327
|
+
exportable: classified.exportable,
|
|
328
|
+
erasable: classified.erasable,
|
|
329
|
+
last_updated: new Date().toISOString(),
|
|
330
|
+
};
|
|
331
|
+
}
|
|
332
|
+
/**
|
|
333
|
+
* Parse retention policy to days
|
|
334
|
+
*/
|
|
335
|
+
parseRetentionDays(policy) {
|
|
336
|
+
switch (policy) {
|
|
337
|
+
case "session":
|
|
338
|
+
return 1; // Treat as 1 day max
|
|
339
|
+
case "8_hours":
|
|
340
|
+
return 1;
|
|
341
|
+
case "24_hours":
|
|
342
|
+
return 1;
|
|
343
|
+
case "7_days":
|
|
344
|
+
return 7;
|
|
345
|
+
case "30_days":
|
|
346
|
+
return 30;
|
|
347
|
+
case "7_years":
|
|
348
|
+
return 7 * 365;
|
|
349
|
+
case "indefinite":
|
|
350
|
+
return "indefinite";
|
|
351
|
+
default:
|
|
352
|
+
// Try to parse "X_days" format
|
|
353
|
+
const match = policy.match(/^(\d+)_days$/);
|
|
354
|
+
if (match) {
|
|
355
|
+
return parseInt(match[1], 10);
|
|
356
|
+
}
|
|
357
|
+
return 30; // Default
|
|
358
|
+
}
|
|
359
|
+
}
|
|
360
|
+
/**
|
|
361
|
+
* Get human-readable description for data type
|
|
362
|
+
*/
|
|
363
|
+
getDataTypeDescription(dataType) {
|
|
364
|
+
const descriptions = {
|
|
365
|
+
"auth_token": "Session authentication tokens for NotebookLM access",
|
|
366
|
+
"mcp_auth_token": "MCP server authentication token",
|
|
367
|
+
"encryption_keys": "Post-quantum encryption key pairs",
|
|
368
|
+
"browser_cookies": "Browser cookies for NotebookLM session",
|
|
369
|
+
"browser_local_storage": "Browser local storage data",
|
|
370
|
+
"session_state": "Current browser session state",
|
|
371
|
+
"notebook_library": "User's saved notebook collection with URLs and metadata",
|
|
372
|
+
"user_settings": "User preferences and configuration",
|
|
373
|
+
"consent_records": "Record of user consent for data processing",
|
|
374
|
+
"audit_logs": "Security and operational audit trail",
|
|
375
|
+
"compliance_events": "Regulatory compliance event log",
|
|
376
|
+
"security_logs": "Security-specific event log",
|
|
377
|
+
"browser_cache": "Temporary browser cache files",
|
|
378
|
+
"error_logs": "Application error and diagnostic logs",
|
|
379
|
+
};
|
|
380
|
+
return descriptions[dataType] || `Data of type: ${dataType}`;
|
|
381
|
+
}
|
|
382
|
+
/**
|
|
383
|
+
* Validate classification against compliance requirements
|
|
384
|
+
*/
|
|
385
|
+
validateCompliance(dataType, regulations) {
|
|
386
|
+
const classified = this.classify(dataType);
|
|
387
|
+
const issues = [];
|
|
388
|
+
if (!classified) {
|
|
389
|
+
issues.push(`Unknown data type: ${dataType}`);
|
|
390
|
+
return { valid: false, issues };
|
|
391
|
+
}
|
|
392
|
+
// GDPR requirements
|
|
393
|
+
if (regulations.includes("GDPR")) {
|
|
394
|
+
if (classified.data_categories.includes("personal_data")) {
|
|
395
|
+
if (!classified.encryption_required) {
|
|
396
|
+
issues.push("GDPR: Personal data should be encrypted");
|
|
397
|
+
}
|
|
398
|
+
if (!classified.exportable) {
|
|
399
|
+
issues.push("GDPR: Personal data should be exportable for data portability");
|
|
400
|
+
}
|
|
401
|
+
}
|
|
402
|
+
}
|
|
403
|
+
// SOC2 requirements
|
|
404
|
+
if (regulations.includes("SOC2")) {
|
|
405
|
+
if (classified.classification === DataClassification.RESTRICTED ||
|
|
406
|
+
classified.classification === DataClassification.REGULATED) {
|
|
407
|
+
if (!classified.audit_required && !classified.data_categories.includes("audit_logs")) {
|
|
408
|
+
issues.push("SOC2: Sensitive data access should be audited");
|
|
409
|
+
}
|
|
410
|
+
}
|
|
411
|
+
}
|
|
412
|
+
// CSSF requirements (Luxembourg financial regulator)
|
|
413
|
+
if (regulations.includes("CSSF")) {
|
|
414
|
+
if (classified.data_categories.includes("audit_logs")) {
|
|
415
|
+
const retentionDays = this.parseRetentionDays(classified.retention_policy);
|
|
416
|
+
if (retentionDays !== "indefinite" && retentionDays < 7 * 365) {
|
|
417
|
+
issues.push("CSSF: Audit logs must be retained for at least 7 years");
|
|
418
|
+
}
|
|
419
|
+
}
|
|
420
|
+
}
|
|
421
|
+
return {
|
|
422
|
+
valid: issues.length === 0,
|
|
423
|
+
issues,
|
|
424
|
+
};
|
|
425
|
+
}
|
|
426
|
+
}
|
|
427
|
+
// ============================================
|
|
428
|
+
// SINGLETON ACCESS
|
|
429
|
+
// ============================================
|
|
430
|
+
/**
|
|
431
|
+
* Get the data classifier instance
|
|
432
|
+
*/
|
|
433
|
+
export function getDataClassifier() {
|
|
434
|
+
return DataClassifier.getInstance();
|
|
435
|
+
}
|
|
436
|
+
// ============================================
|
|
437
|
+
// CONVENIENCE EXPORTS
|
|
438
|
+
// ============================================
|
|
439
|
+
/**
|
|
440
|
+
* Check if a data type requires encryption
|
|
441
|
+
*/
|
|
442
|
+
export function requiresEncryption(dataType) {
|
|
443
|
+
return getDataClassifier().requiresEncryption(dataType);
|
|
444
|
+
}
|
|
445
|
+
/**
|
|
446
|
+
* Check if a data type requires audit logging
|
|
447
|
+
*/
|
|
448
|
+
export function requiresAudit(dataType) {
|
|
449
|
+
return getDataClassifier().requiresAudit(dataType);
|
|
450
|
+
}
|
|
451
|
+
/**
|
|
452
|
+
* Get the classification level for a data type
|
|
453
|
+
*/
|
|
454
|
+
export function getClassificationLevel(dataType) {
|
|
455
|
+
return getDataClassifier().getClassificationLevel(dataType);
|
|
456
|
+
}
|
|
457
|
+
/**
|
|
458
|
+
* Check if data is exportable for GDPR
|
|
459
|
+
*/
|
|
460
|
+
export function isExportable(dataType) {
|
|
461
|
+
return getDataClassifier().isExportable(dataType);
|
|
462
|
+
}
|
|
463
|
+
/**
|
|
464
|
+
* Check if data can be erased for GDPR
|
|
465
|
+
*/
|
|
466
|
+
export function isErasable(dataType) {
|
|
467
|
+
return getDataClassifier().isErasable(dataType);
|
|
468
|
+
}
|
|
469
|
+
//# sourceMappingURL=data-classification.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"data-classification.js","sourceRoot":"","sources":["../../src/compliance/data-classification.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,110 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Data Erasure Tool
|
|
3
|
+
*
|
|
4
|
+
* Complete deletion of user data with secure wiping.
|
|
5
|
+
* Implements GDPR Article 17 (Right to Erasure / Right to be Forgotten).
|
|
6
|
+
*
|
|
7
|
+
* Added by Pantheon Security for enterprise compliance support.
|
|
8
|
+
*/
|
|
9
|
+
import type { ErasureRequest, ErasureScope } from "./types.js";
|
|
10
|
+
/**
|
|
11
|
+
* Data Erasure Manager class
|
|
12
|
+
*/
|
|
13
|
+
export declare class DataErasureManager {
|
|
14
|
+
private static instance;
|
|
15
|
+
private erasureLogFile;
|
|
16
|
+
private erasureRequests;
|
|
17
|
+
private loaded;
|
|
18
|
+
private constructor();
|
|
19
|
+
/**
|
|
20
|
+
* Get singleton instance
|
|
21
|
+
*/
|
|
22
|
+
static getInstance(): DataErasureManager;
|
|
23
|
+
/**
|
|
24
|
+
* Load erasure history from storage
|
|
25
|
+
*/
|
|
26
|
+
private load;
|
|
27
|
+
/**
|
|
28
|
+
* Save erasure history to storage
|
|
29
|
+
*/
|
|
30
|
+
private save;
|
|
31
|
+
/**
|
|
32
|
+
* Create a new erasure request
|
|
33
|
+
*/
|
|
34
|
+
createRequest(scope?: Partial<ErasureScope>): Promise<ErasureRequest>;
|
|
35
|
+
/**
|
|
36
|
+
* Confirm and execute an erasure request
|
|
37
|
+
*/
|
|
38
|
+
confirmAndExecute(requestId: string): Promise<ErasureRequest | null>;
|
|
39
|
+
/**
|
|
40
|
+
* Erase notebook library
|
|
41
|
+
*/
|
|
42
|
+
private eraseNotebooks;
|
|
43
|
+
/**
|
|
44
|
+
* Erase user settings
|
|
45
|
+
*/
|
|
46
|
+
private eraseSettings;
|
|
47
|
+
/**
|
|
48
|
+
* Erase browser data
|
|
49
|
+
*/
|
|
50
|
+
private eraseBrowserData;
|
|
51
|
+
/**
|
|
52
|
+
* Erase audit logs
|
|
53
|
+
*/
|
|
54
|
+
private eraseAuditLogs;
|
|
55
|
+
/**
|
|
56
|
+
* Erase encryption keys (crypto shred)
|
|
57
|
+
*/
|
|
58
|
+
private eraseEncryptionKeys;
|
|
59
|
+
/**
|
|
60
|
+
* Erase consent records
|
|
61
|
+
*/
|
|
62
|
+
private eraseConsentRecords;
|
|
63
|
+
/**
|
|
64
|
+
* Erase privacy acknowledgments
|
|
65
|
+
*/
|
|
66
|
+
private erasePrivacyAcknowledgments;
|
|
67
|
+
/**
|
|
68
|
+
* Get erasure request by ID
|
|
69
|
+
*/
|
|
70
|
+
getRequest(requestId: string): Promise<ErasureRequest | null>;
|
|
71
|
+
/**
|
|
72
|
+
* Get all erasure requests
|
|
73
|
+
*/
|
|
74
|
+
getAllRequests(): Promise<ErasureRequest[]>;
|
|
75
|
+
/**
|
|
76
|
+
* Get pending erasure requests
|
|
77
|
+
*/
|
|
78
|
+
getPendingRequests(): Promise<ErasureRequest[]>;
|
|
79
|
+
/**
|
|
80
|
+
* Cancel a pending erasure request
|
|
81
|
+
*/
|
|
82
|
+
cancelRequest(requestId: string): Promise<boolean>;
|
|
83
|
+
/**
|
|
84
|
+
* Get erasure summary
|
|
85
|
+
*/
|
|
86
|
+
getSummary(): Promise<{
|
|
87
|
+
total_requests: number;
|
|
88
|
+
pending_requests: number;
|
|
89
|
+
completed_requests: number;
|
|
90
|
+
total_items_deleted: number;
|
|
91
|
+
total_bytes_deleted: number;
|
|
92
|
+
}>;
|
|
93
|
+
}
|
|
94
|
+
/**
|
|
95
|
+
* Get the data erasure manager instance
|
|
96
|
+
*/
|
|
97
|
+
export declare function getDataErasureManager(): DataErasureManager;
|
|
98
|
+
/**
|
|
99
|
+
* Create a new erasure request
|
|
100
|
+
*/
|
|
101
|
+
export declare function createErasureRequest(scope?: Partial<ErasureScope>): Promise<ErasureRequest>;
|
|
102
|
+
/**
|
|
103
|
+
* Confirm and execute an erasure request
|
|
104
|
+
*/
|
|
105
|
+
export declare function executeErasureRequest(requestId: string): Promise<ErasureRequest | null>;
|
|
106
|
+
/**
|
|
107
|
+
* Get pending erasure requests
|
|
108
|
+
*/
|
|
109
|
+
export declare function getPendingErasureRequests(): Promise<ErasureRequest[]>;
|
|
110
|
+
//# sourceMappingURL=data-erasure.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"data-erasure.d.ts","sourceRoot":"","sources":["../../src/compliance/data-erasure.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAUH,OAAO,KAAK,EAAE,cAAc,EAAE,YAAY,EAAiB,MAAM,YAAY,CAAC;AA2F9E;;GAEG;AACH,qBAAa,kBAAkB;IAC7B,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAqB;IAC5C,OAAO,CAAC,cAAc,CAAS;IAC/B,OAAO,CAAC,eAAe,CAAwB;IAC/C,OAAO,CAAC,MAAM,CAAkB;IAEhC,OAAO;IAKP;;OAEG;WACW,WAAW,IAAI,kBAAkB;IAO/C;;OAEG;YACW,IAAI;IAgBlB;;OAEG;YACW,IAAI;IAalB;;OAEG;IACU,aAAa,CACxB,KAAK,GAAE,OAAO,CAAC,YAAY,CAAM,GAChC,OAAO,CAAC,cAAc,CAAC;IA8C1B;;OAEG;IACU,iBAAiB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,GAAG,IAAI,CAAC;IA2EjF;;OAEG;YACW,cAAc;IA8B5B;;OAEG;YACW,aAAa;IA6B3B;;OAEG;YACW,gBAAgB;IA0C9B;;OAEG;YACW,cAAc;IAwB5B;;OAEG;YACW,mBAAmB;IAgCjC;;OAEG;YACW,mBAAmB;IAKjC;;OAEG;YACW,2BAA2B;IAKzC;;OAEG;IACU,UAAU,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,GAAG,IAAI,CAAC;IAK1E;;OAEG;IACU,cAAc,IAAI,OAAO,CAAC,cAAc,EAAE,CAAC;IAKxD;;OAEG;IACU,kBAAkB,IAAI,OAAO,CAAC,cAAc,EAAE,CAAC;IAK5D;;OAEG;IACU,aAAa,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IA+B/D;;OAEG;IACU,UAAU,IAAI,OAAO,CAAC;QACjC,cAAc,EAAE,MAAM,CAAC;QACvB,gBAAgB,EAAE,MAAM,CAAC;QACzB,kBAAkB,EAAE,MAAM,CAAC;QAC3B,mBAAmB,EAAE,MAAM,CAAC;QAC5B,mBAAmB,EAAE,MAAM,CAAC;KAC7B,CAAC;CAwBH;AAMD;;GAEG;AACH,wBAAgB,qBAAqB,IAAI,kBAAkB,CAE1D;AAMD;;GAEG;AACH,wBAAsB,oBAAoB,CACxC,KAAK,GAAE,OAAO,CAAC,YAAY,CAAM,GAChC,OAAO,CAAC,cAAc,CAAC,CAEzB;AAED;;GAEG;AACH,wBAAsB,qBAAqB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,GAAG,IAAI,CAAC,CAE7F;AAED;;GAEG;AACH,wBAAsB,yBAAyB,IAAI,OAAO,CAAC,cAAc,EAAE,CAAC,CAE3E"}
|