monora-ai 2.0.0 → 2.1.3
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 +441 -150
- package/dist/aims_governance.d.ts +238 -0
- package/dist/aims_governance.d.ts.map +1 -0
- package/dist/aims_governance.js +922 -0
- package/dist/alerts.d.ts +16 -0
- package/dist/alerts.d.ts.map +1 -1
- package/dist/alerts.js +16 -0
- package/dist/api.d.ts +6 -0
- package/dist/api.d.ts.map +1 -1
- package/dist/api.js +6 -0
- package/dist/assessment.d.ts +269 -0
- package/dist/assessment.d.ts.map +1 -0
- package/dist/assessment.js +1232 -0
- package/dist/attestation.js +23 -1
- package/dist/attribution.d.ts +349 -0
- package/dist/attribution.d.ts.map +1 -0
- package/dist/attribution.js +987 -0
- package/dist/autodetect.d.ts +69 -1
- package/dist/autodetect.d.ts.map +1 -1
- package/dist/autodetect.js +644 -1
- package/dist/bias.d.ts +130 -0
- package/dist/bias.d.ts.map +1 -0
- package/dist/bias.js +223 -0
- package/dist/circuit_breaker.js +3 -3
- package/dist/cli/diagnostics.d.ts +5 -1
- package/dist/cli/diagnostics.d.ts.map +1 -1
- package/dist/cli/diagnostics.js +31 -8
- package/dist/cli/doctor.d.ts +25 -0
- package/dist/cli/doctor.d.ts.map +1 -0
- package/dist/cli/doctor.js +381 -0
- package/dist/cli/fix.d.ts +16 -0
- package/dist/cli/fix.d.ts.map +1 -0
- package/dist/cli/fix.js +284 -0
- package/dist/cli/init.d.ts +57 -0
- package/dist/cli/init.d.ts.map +1 -0
- package/dist/cli/init.js +205 -0
- package/dist/cli.js +1611 -126
- package/dist/complianceTargets.d.ts +111 -0
- package/dist/complianceTargets.d.ts.map +1 -0
- package/dist/complianceTargets.js +521 -0
- package/dist/config.d.ts +301 -17
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +428 -36
- package/dist/config_migrations.d.ts +41 -0
- package/dist/config_migrations.d.ts.map +1 -1
- package/dist/config_migrations.js +205 -0
- package/dist/config_schema.d.ts +2900 -731
- package/dist/config_schema.d.ts.map +1 -1
- package/dist/config_schema.js +257 -55
- package/dist/context.d.ts +34 -0
- package/dist/context.d.ts.map +1 -1
- package/dist/context.js +118 -7
- package/dist/control_backbone.d.ts +122 -0
- package/dist/control_backbone.d.ts.map +1 -0
- package/dist/control_backbone.js +698 -0
- package/dist/data-governance.d.ts +187 -0
- package/dist/data-governance.d.ts.map +1 -0
- package/dist/data-governance.js +424 -0
- package/dist/dataResidency.d.ts +44 -0
- package/dist/dataResidency.d.ts.map +1 -0
- package/dist/dataResidency.js +203 -0
- package/dist/dispatcher.d.ts +32 -0
- package/dist/dispatcher.d.ts.map +1 -1
- package/dist/dispatcher.js +91 -4
- package/dist/events.d.ts.map +1 -1
- package/dist/events.js +38 -0
- package/dist/evidence_store.d.ts +103 -0
- package/dist/evidence_store.d.ts.map +1 -0
- package/dist/evidence_store.js +459 -0
- package/dist/executiveSummary.d.ts +65 -8
- package/dist/executiveSummary.d.ts.map +1 -1
- package/dist/executiveSummary.js +289 -26
- package/dist/identity.d.ts +143 -0
- package/dist/identity.d.ts.map +1 -0
- package/dist/identity.js +231 -0
- package/dist/impact-assessment.d.ts +350 -0
- package/dist/impact-assessment.d.ts.map +1 -0
- package/dist/impact-assessment.js +580 -0
- package/dist/index.d.ts +25 -5
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +300 -4
- package/dist/instrumentation.d.ts +1 -1
- package/dist/instrumentation.d.ts.map +1 -1
- package/dist/instrumentation.js +243 -27
- package/dist/integrations/anthropic.d.ts +3 -0
- package/dist/integrations/anthropic.d.ts.map +1 -1
- package/dist/integrations/anthropic.js +284 -79
- package/dist/integrations/governance.d.ts +33 -0
- package/dist/integrations/governance.d.ts.map +1 -0
- package/dist/integrations/governance.js +208 -0
- package/dist/integrations/langchain.d.ts +7 -0
- package/dist/integrations/langchain.d.ts.map +1 -1
- package/dist/integrations/langchain.js +387 -143
- package/dist/integrations/openai.d.ts +9 -0
- package/dist/integrations/openai.d.ts.map +1 -1
- package/dist/integrations/openai.js +673 -73
- package/dist/iso42001_consolidation.d.ts +16 -0
- package/dist/iso42001_consolidation.d.ts.map +1 -0
- package/dist/iso42001_consolidation.js +413 -0
- package/dist/iso42001_workflows.d.ts +263 -0
- package/dist/iso42001_workflows.d.ts.map +1 -0
- package/dist/iso42001_workflows.js +781 -0
- package/dist/lifecycle.d.ts +299 -0
- package/dist/lifecycle.d.ts.map +1 -0
- package/dist/lifecycle.js +624 -0
- package/dist/lineage.d.ts +2 -2
- package/dist/lineage.d.ts.map +1 -1
- package/dist/lineage.js +12 -17
- package/dist/middleware/express.d.ts.map +1 -1
- package/dist/middleware/express.js +33 -3
- package/dist/middleware/nextjs.d.ts.map +1 -1
- package/dist/middleware/nextjs.js +42 -68
- package/dist/model.d.ts +143 -0
- package/dist/model.d.ts.map +1 -0
- package/dist/model.js +371 -0
- package/dist/onboarding.d.ts +42 -0
- package/dist/onboarding.d.ts.map +1 -0
- package/dist/onboarding.js +1022 -0
- package/dist/oversight.d.ts +264 -0
- package/dist/oversight.d.ts.map +1 -0
- package/dist/oversight.js +497 -0
- package/dist/pdf_report.d.ts.map +1 -1
- package/dist/pdf_report.js +42 -21
- package/dist/presets.d.ts +88 -0
- package/dist/presets.d.ts.map +1 -0
- package/dist/presets.js +520 -0
- package/dist/propagation.d.ts.map +1 -1
- package/dist/propagation.js +34 -2
- package/dist/quotas.d.ts +171 -0
- package/dist/quotas.d.ts.map +1 -0
- package/dist/quotas.js +259 -0
- package/dist/register.d.ts +13 -0
- package/dist/register.d.ts.map +1 -0
- package/dist/register.js +99 -0
- package/dist/registry.d.ts +1 -0
- package/dist/registry.d.ts.map +1 -1
- package/dist/registry.js +7 -0
- package/dist/registryData.json +43 -6
- package/dist/report.d.ts +2 -1
- package/dist/report.d.ts.map +1 -1
- package/dist/report.js +189 -2
- package/dist/reporting.d.ts +125 -0
- package/dist/reporting.d.ts.map +1 -1
- package/dist/reporting.js +196 -5
- package/dist/resources.d.ts +285 -0
- package/dist/resources.d.ts.map +1 -0
- package/dist/resources.js +643 -0
- package/dist/risk.d.ts +120 -0
- package/dist/risk.d.ts.map +1 -0
- package/dist/risk.js +220 -0
- package/dist/runtime.d.ts +74 -1
- package/dist/runtime.d.ts.map +1 -1
- package/dist/runtime.js +598 -22
- package/dist/schemaInference.d.ts +92 -0
- package/dist/schemaInference.d.ts.map +1 -0
- package/dist/schemaInference.js +466 -0
- package/dist/schema_validation.js +2 -2
- package/dist/schemas/config.schema.json +169 -6
- package/dist/schemas/event.schema.json +4 -0
- package/dist/security_report.js +4 -4
- package/dist/signing.d.ts +1 -1
- package/dist/signing.d.ts.map +1 -1
- package/dist/signing.js +4 -0
- package/dist/sinks/file.d.ts +19 -1
- package/dist/sinks/file.d.ts.map +1 -1
- package/dist/sinks/file.js +82 -13
- package/dist/sinks/https.d.ts +10 -0
- package/dist/sinks/https.d.ts.map +1 -1
- package/dist/sinks/https.js +76 -16
- package/dist/sinks/stdout.d.ts +1 -0
- package/dist/sinks/stdout.d.ts.map +1 -1
- package/dist/sinks/stdout.js +12 -1
- package/dist/spec.d.ts +159 -0
- package/dist/spec.d.ts.map +1 -0
- package/dist/spec.js +391 -0
- package/dist/stakeholders.d.ts +199 -0
- package/dist/stakeholders.d.ts.map +1 -0
- package/dist/stakeholders.js +398 -0
- package/dist/standards.d.ts.map +1 -1
- package/dist/standards.js +160 -2
- package/dist/standards_ingest.d.ts +2 -2
- package/dist/standards_ingest.d.ts.map +1 -1
- package/dist/standards_ingest.js +105 -23
- package/dist/streaming.d.ts.map +1 -1
- package/dist/streaming.js +7 -2
- package/dist/telemetry.d.ts +16 -2
- package/dist/telemetry.d.ts.map +1 -1
- package/dist/telemetry.js +79 -14
- package/dist/templates/controls/iso42001_control_catalog.json +1443 -0
- package/dist/traced_emitter.d.ts +3 -0
- package/dist/traced_emitter.d.ts.map +1 -1
- package/dist/traced_emitter.js +142 -25
- package/dist/trust_package.d.ts +21 -1
- package/dist/trust_package.d.ts.map +1 -1
- package/dist/trust_package.js +101 -4
- package/dist/verify.d.ts.map +1 -1
- package/dist/verify.js +9 -2
- package/dist/wal.d.ts.map +1 -1
- package/dist/wal.js +2 -1
- package/package.json +14 -1
- package/scripts/postinstall.js +119 -97
- package/templates/controls/iso42001_control_catalog.json +1443 -0
|
@@ -0,0 +1,580 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* AI Impact Assessment for ISO 42001 A.5 compliance.
|
|
4
|
+
*
|
|
5
|
+
* This module provides AI Impact Assessment (AIIA) management supporting
|
|
6
|
+
* ISO 42001 controls A.5.2 (process), A.5.3 (documentation), A.5.4 (individual
|
|
7
|
+
* impacts), and A.5.5 (societal impacts).
|
|
8
|
+
*
|
|
9
|
+
* Cross-SDK Parity:
|
|
10
|
+
* Both Python and Node.js SDKs provide identical impact assessment APIs:
|
|
11
|
+
* - createImpactAssessment() / create_impact_assessment()
|
|
12
|
+
* - addImpactRecord() / add_impact_record()
|
|
13
|
+
* - addMitigation() / add_mitigation()
|
|
14
|
+
* - submitForApproval() / submit_for_approval()
|
|
15
|
+
* - recordApproval() / record_approval()
|
|
16
|
+
* - finalizeAssessment() / finalize_assessment()
|
|
17
|
+
*/
|
|
18
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
19
|
+
exports.impactRecordToDict = impactRecordToDict;
|
|
20
|
+
exports.mitigationToDict = mitigationToDict;
|
|
21
|
+
exports.approvalToDict = approvalToDict;
|
|
22
|
+
exports.assessmentToDict = assessmentToDict;
|
|
23
|
+
exports.calculateRiskScore = calculateRiskScore;
|
|
24
|
+
exports.createImpactAssessment = createImpactAssessment;
|
|
25
|
+
exports.addImpactRecord = addImpactRecord;
|
|
26
|
+
exports.addMitigation = addMitigation;
|
|
27
|
+
exports.addResidualRisk = addResidualRisk;
|
|
28
|
+
exports.validateAssessmentCompleteness = validateAssessmentCompleteness;
|
|
29
|
+
exports.submitForApproval = submitForApproval;
|
|
30
|
+
exports.recordApproval = recordApproval;
|
|
31
|
+
exports.finalizeAssessment = finalizeAssessment;
|
|
32
|
+
exports.archiveAssessment = archiveAssessment;
|
|
33
|
+
exports.getAssessment = getAssessment;
|
|
34
|
+
exports.getAssessmentsForSystem = getAssessmentsForSystem;
|
|
35
|
+
exports.getAllAssessments = getAllAssessments;
|
|
36
|
+
exports.clearAssessments = clearAssessments;
|
|
37
|
+
exports.getAssessmentSummary = getAssessmentSummary;
|
|
38
|
+
exports.getImpactAssessmentReport = getImpactAssessmentReport;
|
|
39
|
+
exports.checkProductionReadiness = checkProductionReadiness;
|
|
40
|
+
exports.emitImpactAssessment = emitImpactAssessment;
|
|
41
|
+
const crypto_1 = require("crypto");
|
|
42
|
+
const logger_1 = require("./logger");
|
|
43
|
+
// Risk scoring weights
|
|
44
|
+
const LIKELIHOOD_WEIGHTS = {
|
|
45
|
+
rare: 1,
|
|
46
|
+
unlikely: 2,
|
|
47
|
+
possible: 3,
|
|
48
|
+
likely: 4,
|
|
49
|
+
certain: 5,
|
|
50
|
+
};
|
|
51
|
+
const SEVERITY_WEIGHTS = {
|
|
52
|
+
minimal: 1,
|
|
53
|
+
minor: 2,
|
|
54
|
+
moderate: 3,
|
|
55
|
+
major: 4,
|
|
56
|
+
catastrophic: 5,
|
|
57
|
+
};
|
|
58
|
+
/**
|
|
59
|
+
* Generate a deterministic ID from parts.
|
|
60
|
+
*/
|
|
61
|
+
function generateId(prefix, ...parts) {
|
|
62
|
+
const combined = parts.join(':');
|
|
63
|
+
const hash = (0, crypto_1.createHash)('sha256').update(combined).digest('hex').slice(0, 12);
|
|
64
|
+
return `${prefix}_${hash}`;
|
|
65
|
+
}
|
|
66
|
+
/**
|
|
67
|
+
* Get current UTC timestamp in ISO format.
|
|
68
|
+
*/
|
|
69
|
+
function nowIso() {
|
|
70
|
+
return new Date().toISOString();
|
|
71
|
+
}
|
|
72
|
+
/**
|
|
73
|
+
* Convert impact record to dictionary for serialization.
|
|
74
|
+
*/
|
|
75
|
+
function impactRecordToDict(record) {
|
|
76
|
+
return {
|
|
77
|
+
impact_id: record.impactId,
|
|
78
|
+
category: record.category,
|
|
79
|
+
description: record.description,
|
|
80
|
+
likelihood: record.likelihood,
|
|
81
|
+
severity: record.severity,
|
|
82
|
+
risk_score: record.riskScore,
|
|
83
|
+
affected_parties: record.affectedParties,
|
|
84
|
+
impact_type: record.impactType,
|
|
85
|
+
};
|
|
86
|
+
}
|
|
87
|
+
/**
|
|
88
|
+
* Convert mitigation to dictionary for serialization.
|
|
89
|
+
*/
|
|
90
|
+
function mitigationToDict(mitigation) {
|
|
91
|
+
return {
|
|
92
|
+
mitigation_id: mitigation.mitigationId,
|
|
93
|
+
risk_category: mitigation.riskCategory,
|
|
94
|
+
description: mitigation.description,
|
|
95
|
+
effectiveness: mitigation.effectiveness,
|
|
96
|
+
implementation_status: mitigation.implementationStatus,
|
|
97
|
+
owner: mitigation.owner,
|
|
98
|
+
target_impacts: mitigation.targetImpacts,
|
|
99
|
+
};
|
|
100
|
+
}
|
|
101
|
+
/**
|
|
102
|
+
* Convert approval to dictionary for serialization.
|
|
103
|
+
*/
|
|
104
|
+
function approvalToDict(approval) {
|
|
105
|
+
const result = {
|
|
106
|
+
approver_role: approval.approverRole,
|
|
107
|
+
approver_name: approval.approverName,
|
|
108
|
+
approved_at: approval.approvedAt,
|
|
109
|
+
};
|
|
110
|
+
if (approval.comments) {
|
|
111
|
+
result.comments = approval.comments;
|
|
112
|
+
}
|
|
113
|
+
return result;
|
|
114
|
+
}
|
|
115
|
+
/**
|
|
116
|
+
* Convert assessment to dictionary for serialization.
|
|
117
|
+
*/
|
|
118
|
+
function assessmentToDict(assessment) {
|
|
119
|
+
return {
|
|
120
|
+
assessment_id: assessment.assessmentId,
|
|
121
|
+
system_id: assessment.systemId,
|
|
122
|
+
assessment_date: assessment.assessmentDate,
|
|
123
|
+
assessor: assessment.assessor,
|
|
124
|
+
version: assessment.version,
|
|
125
|
+
status: assessment.status,
|
|
126
|
+
intended_purpose: assessment.intendedPurpose,
|
|
127
|
+
deployment_context: assessment.deploymentContext,
|
|
128
|
+
affected_groups: assessment.affectedGroups,
|
|
129
|
+
individual_impacts: assessment.individualImpacts.map(impactRecordToDict),
|
|
130
|
+
societal_impacts: assessment.societalImpacts.map(impactRecordToDict),
|
|
131
|
+
risk_mitigations: assessment.riskMitigations.map(mitigationToDict),
|
|
132
|
+
residual_risks: assessment.residualRisks,
|
|
133
|
+
approvals: assessment.approvals.map(approvalToDict),
|
|
134
|
+
created_at: assessment.createdAt,
|
|
135
|
+
updated_at: assessment.updatedAt,
|
|
136
|
+
};
|
|
137
|
+
}
|
|
138
|
+
// Runtime assessment registry
|
|
139
|
+
const assessments = new Map();
|
|
140
|
+
/**
|
|
141
|
+
* Calculate risk score from likelihood and severity.
|
|
142
|
+
*
|
|
143
|
+
* Uses a 5x5 risk matrix where score = likelihood_weight * severity_weight.
|
|
144
|
+
*
|
|
145
|
+
* @param likelihood - Probability of occurrence
|
|
146
|
+
* @param severity - Severity if impact occurs
|
|
147
|
+
* @returns Risk score from 1 (rare/minimal) to 25 (certain/catastrophic)
|
|
148
|
+
*/
|
|
149
|
+
function calculateRiskScore(likelihood, severity) {
|
|
150
|
+
return LIKELIHOOD_WEIGHTS[likelihood] * SEVERITY_WEIGHTS[severity];
|
|
151
|
+
}
|
|
152
|
+
/**
|
|
153
|
+
* Create a new AI Impact Assessment.
|
|
154
|
+
*
|
|
155
|
+
* @param options - Assessment creation options
|
|
156
|
+
* @returns A new AIImpactAssessment in draft status
|
|
157
|
+
*
|
|
158
|
+
* @example
|
|
159
|
+
* ```typescript
|
|
160
|
+
* const assessment = createImpactAssessment({
|
|
161
|
+
* systemId: 'chatbot-v2',
|
|
162
|
+
* assessor: 'Jane Doe',
|
|
163
|
+
* intendedPurpose: 'Customer support automation',
|
|
164
|
+
* deploymentContext: 'Web and mobile applications',
|
|
165
|
+
* affectedGroups: ['customers', 'support_staff']
|
|
166
|
+
* });
|
|
167
|
+
* ```
|
|
168
|
+
*/
|
|
169
|
+
function createImpactAssessment(options) {
|
|
170
|
+
const assessmentDate = new Date().toISOString().split('T')[0];
|
|
171
|
+
const version = options.version || '1.0';
|
|
172
|
+
const assessmentId = generateId('aiia', options.systemId, assessmentDate, version);
|
|
173
|
+
const assessment = {
|
|
174
|
+
assessmentId,
|
|
175
|
+
systemId: options.systemId,
|
|
176
|
+
assessmentDate,
|
|
177
|
+
assessor: options.assessor,
|
|
178
|
+
version,
|
|
179
|
+
status: 'draft',
|
|
180
|
+
intendedPurpose: options.intendedPurpose,
|
|
181
|
+
deploymentContext: options.deploymentContext,
|
|
182
|
+
affectedGroups: options.affectedGroups || [],
|
|
183
|
+
individualImpacts: [],
|
|
184
|
+
societalImpacts: [],
|
|
185
|
+
riskMitigations: [],
|
|
186
|
+
residualRisks: [],
|
|
187
|
+
approvals: [],
|
|
188
|
+
createdAt: nowIso(),
|
|
189
|
+
updatedAt: nowIso(),
|
|
190
|
+
};
|
|
191
|
+
assessments.set(assessmentId, assessment);
|
|
192
|
+
return assessment;
|
|
193
|
+
}
|
|
194
|
+
/**
|
|
195
|
+
* Add an impact record to an assessment.
|
|
196
|
+
*
|
|
197
|
+
* @param options - Impact record options
|
|
198
|
+
* @returns The created ImpactRecord
|
|
199
|
+
* @throws Error if assessment not found or not in draft status
|
|
200
|
+
*/
|
|
201
|
+
function addImpactRecord(options) {
|
|
202
|
+
const assessment = assessments.get(options.assessmentId);
|
|
203
|
+
if (!assessment) {
|
|
204
|
+
throw new Error(`Assessment ${options.assessmentId} not found`);
|
|
205
|
+
}
|
|
206
|
+
if (assessment.status !== 'draft') {
|
|
207
|
+
throw new Error(`Assessment must be in draft status to add impacts (current: ${assessment.status})`);
|
|
208
|
+
}
|
|
209
|
+
const riskScore = calculateRiskScore(options.likelihood, options.severity);
|
|
210
|
+
const impactId = generateId('imp', options.assessmentId, options.category, options.description.slice(0, 20));
|
|
211
|
+
const impactType = options.impactType || 'individual';
|
|
212
|
+
const impact = {
|
|
213
|
+
impactId,
|
|
214
|
+
category: options.category,
|
|
215
|
+
description: options.description,
|
|
216
|
+
likelihood: options.likelihood,
|
|
217
|
+
severity: options.severity,
|
|
218
|
+
riskScore,
|
|
219
|
+
affectedParties: options.affectedParties || [],
|
|
220
|
+
impactType,
|
|
221
|
+
};
|
|
222
|
+
if (impactType === 'individual') {
|
|
223
|
+
assessment.individualImpacts.push(impact);
|
|
224
|
+
}
|
|
225
|
+
else {
|
|
226
|
+
assessment.societalImpacts.push(impact);
|
|
227
|
+
}
|
|
228
|
+
assessment.updatedAt = nowIso();
|
|
229
|
+
return impact;
|
|
230
|
+
}
|
|
231
|
+
/**
|
|
232
|
+
* Add a risk mitigation to an assessment.
|
|
233
|
+
*
|
|
234
|
+
* @param options - Mitigation options
|
|
235
|
+
* @returns The created Mitigation
|
|
236
|
+
* @throws Error if assessment not found or not in draft status
|
|
237
|
+
*/
|
|
238
|
+
function addMitigation(options) {
|
|
239
|
+
const assessment = assessments.get(options.assessmentId);
|
|
240
|
+
if (!assessment) {
|
|
241
|
+
throw new Error(`Assessment ${options.assessmentId} not found`);
|
|
242
|
+
}
|
|
243
|
+
if (assessment.status !== 'draft') {
|
|
244
|
+
throw new Error(`Assessment must be in draft status to add mitigations (current: ${assessment.status})`);
|
|
245
|
+
}
|
|
246
|
+
const mitigationId = generateId('mit', options.assessmentId, options.riskCategory, options.description.slice(0, 20));
|
|
247
|
+
const mitigation = {
|
|
248
|
+
mitigationId,
|
|
249
|
+
riskCategory: options.riskCategory,
|
|
250
|
+
description: options.description,
|
|
251
|
+
effectiveness: options.effectiveness,
|
|
252
|
+
implementationStatus: options.implementationStatus,
|
|
253
|
+
owner: options.owner,
|
|
254
|
+
targetImpacts: options.targetImpacts || [],
|
|
255
|
+
};
|
|
256
|
+
assessment.riskMitigations.push(mitigation);
|
|
257
|
+
assessment.updatedAt = nowIso();
|
|
258
|
+
return mitigation;
|
|
259
|
+
}
|
|
260
|
+
/**
|
|
261
|
+
* Add a residual risk to an assessment.
|
|
262
|
+
*
|
|
263
|
+
* @param assessmentId - ID of the assessment to update
|
|
264
|
+
* @param riskDescription - Description of the residual risk
|
|
265
|
+
* @throws Error if assessment not found or not in draft status
|
|
266
|
+
*/
|
|
267
|
+
function addResidualRisk(assessmentId, riskDescription) {
|
|
268
|
+
const assessment = assessments.get(assessmentId);
|
|
269
|
+
if (!assessment) {
|
|
270
|
+
throw new Error(`Assessment ${assessmentId} not found`);
|
|
271
|
+
}
|
|
272
|
+
if (assessment.status !== 'draft') {
|
|
273
|
+
throw new Error(`Assessment must be in draft status (current: ${assessment.status})`);
|
|
274
|
+
}
|
|
275
|
+
assessment.residualRisks.push(riskDescription);
|
|
276
|
+
assessment.updatedAt = nowIso();
|
|
277
|
+
}
|
|
278
|
+
/**
|
|
279
|
+
* Validate that an assessment has all required fields.
|
|
280
|
+
*
|
|
281
|
+
* @param assessment - The assessment to validate
|
|
282
|
+
* @returns List of validation errors (empty if valid)
|
|
283
|
+
*/
|
|
284
|
+
function validateAssessmentCompleteness(assessment) {
|
|
285
|
+
const errors = [];
|
|
286
|
+
if (!assessment.intendedPurpose) {
|
|
287
|
+
errors.push('Missing intendedPurpose');
|
|
288
|
+
}
|
|
289
|
+
if (!assessment.deploymentContext) {
|
|
290
|
+
errors.push('Missing deploymentContext');
|
|
291
|
+
}
|
|
292
|
+
if (assessment.affectedGroups.length === 0) {
|
|
293
|
+
errors.push('No affectedGroups specified');
|
|
294
|
+
}
|
|
295
|
+
if (assessment.individualImpacts.length === 0 && assessment.societalImpacts.length === 0) {
|
|
296
|
+
errors.push('No impacts assessed (need at least one individual or societal impact)');
|
|
297
|
+
}
|
|
298
|
+
return errors;
|
|
299
|
+
}
|
|
300
|
+
/**
|
|
301
|
+
* Submit an assessment for approval review.
|
|
302
|
+
*
|
|
303
|
+
* Changes status from 'draft' to 'review'.
|
|
304
|
+
*
|
|
305
|
+
* @param assessmentId - ID of the assessment to submit
|
|
306
|
+
* @returns The updated assessment
|
|
307
|
+
* @throws Error if assessment not found or not in draft status
|
|
308
|
+
*/
|
|
309
|
+
function submitForApproval(assessmentId) {
|
|
310
|
+
const assessment = assessments.get(assessmentId);
|
|
311
|
+
if (!assessment) {
|
|
312
|
+
throw new Error(`Assessment ${assessmentId} not found`);
|
|
313
|
+
}
|
|
314
|
+
if (assessment.status !== 'draft') {
|
|
315
|
+
throw new Error(`Assessment must be in draft status to submit (current: ${assessment.status})`);
|
|
316
|
+
}
|
|
317
|
+
// Validate completeness
|
|
318
|
+
const errors = validateAssessmentCompleteness(assessment);
|
|
319
|
+
if (errors.length > 0) {
|
|
320
|
+
throw new Error(`Assessment incomplete: ${errors.join('; ')}`);
|
|
321
|
+
}
|
|
322
|
+
assessment.status = 'review';
|
|
323
|
+
assessment.updatedAt = nowIso();
|
|
324
|
+
return assessment;
|
|
325
|
+
}
|
|
326
|
+
/**
|
|
327
|
+
* Record an approval sign-off on an assessment.
|
|
328
|
+
*
|
|
329
|
+
* @param options - Approval options
|
|
330
|
+
* @returns The created Approval
|
|
331
|
+
* @throws Error if assessment not found or not in review status
|
|
332
|
+
*/
|
|
333
|
+
function recordApproval(options) {
|
|
334
|
+
const assessment = assessments.get(options.assessmentId);
|
|
335
|
+
if (!assessment) {
|
|
336
|
+
throw new Error(`Assessment ${options.assessmentId} not found`);
|
|
337
|
+
}
|
|
338
|
+
if (assessment.status !== 'review') {
|
|
339
|
+
throw new Error(`Assessment must be in review status to approve (current: ${assessment.status})`);
|
|
340
|
+
}
|
|
341
|
+
// Check if this role already approved
|
|
342
|
+
const existingApproval = assessment.approvals.find(a => a.approverRole === options.approverRole);
|
|
343
|
+
if (existingApproval) {
|
|
344
|
+
throw new Error(`Role ${options.approverRole} has already approved this assessment`);
|
|
345
|
+
}
|
|
346
|
+
const approval = {
|
|
347
|
+
approverRole: options.approverRole,
|
|
348
|
+
approverName: options.approverName,
|
|
349
|
+
approvedAt: nowIso(),
|
|
350
|
+
comments: options.comments,
|
|
351
|
+
};
|
|
352
|
+
assessment.approvals.push(approval);
|
|
353
|
+
assessment.updatedAt = nowIso();
|
|
354
|
+
return approval;
|
|
355
|
+
}
|
|
356
|
+
/**
|
|
357
|
+
* Finalize an assessment, marking it as approved.
|
|
358
|
+
*
|
|
359
|
+
* Validates that all required approvals are present.
|
|
360
|
+
*
|
|
361
|
+
* @param assessmentId - ID of the assessment to finalize
|
|
362
|
+
* @param config - Optional config for required approvals
|
|
363
|
+
* @returns The finalized assessment
|
|
364
|
+
* @throws Error if assessment not found, not in review, or missing approvals
|
|
365
|
+
*/
|
|
366
|
+
function finalizeAssessment(assessmentId, config) {
|
|
367
|
+
const assessment = assessments.get(assessmentId);
|
|
368
|
+
if (!assessment) {
|
|
369
|
+
throw new Error(`Assessment ${assessmentId} not found`);
|
|
370
|
+
}
|
|
371
|
+
if (assessment.status !== 'review') {
|
|
372
|
+
throw new Error(`Assessment must be in review status to finalize (current: ${assessment.status})`);
|
|
373
|
+
}
|
|
374
|
+
// Check required approvals
|
|
375
|
+
const impactConfig = config?.impact_assessment;
|
|
376
|
+
const requiredApprovals = impactConfig?.require_approvals || [];
|
|
377
|
+
const approvedRoles = new Set(assessment.approvals.map(a => a.approverRole));
|
|
378
|
+
for (const req of requiredApprovals) {
|
|
379
|
+
const role = typeof req === 'object' ? req.role : req;
|
|
380
|
+
if (role && !approvedRoles.has(role)) {
|
|
381
|
+
throw new Error(`Missing required approval from role: ${role}`);
|
|
382
|
+
}
|
|
383
|
+
}
|
|
384
|
+
assessment.status = 'approved';
|
|
385
|
+
assessment.updatedAt = nowIso();
|
|
386
|
+
// Emit finalization event
|
|
387
|
+
emitAssessmentEvent(assessment, 'impact_assessment_approved', config);
|
|
388
|
+
return assessment;
|
|
389
|
+
}
|
|
390
|
+
/**
|
|
391
|
+
* Archive an approved assessment.
|
|
392
|
+
*
|
|
393
|
+
* @param assessmentId - ID of the assessment to archive
|
|
394
|
+
* @returns The archived assessment
|
|
395
|
+
* @throws Error if assessment not found or not approved
|
|
396
|
+
*/
|
|
397
|
+
function archiveAssessment(assessmentId) {
|
|
398
|
+
const assessment = assessments.get(assessmentId);
|
|
399
|
+
if (!assessment) {
|
|
400
|
+
throw new Error(`Assessment ${assessmentId} not found`);
|
|
401
|
+
}
|
|
402
|
+
if (assessment.status !== 'approved') {
|
|
403
|
+
throw new Error(`Assessment must be approved to archive (current: ${assessment.status})`);
|
|
404
|
+
}
|
|
405
|
+
assessment.status = 'archived';
|
|
406
|
+
assessment.updatedAt = nowIso();
|
|
407
|
+
return assessment;
|
|
408
|
+
}
|
|
409
|
+
/**
|
|
410
|
+
* Get an assessment by ID.
|
|
411
|
+
*
|
|
412
|
+
* @param assessmentId - ID of the assessment
|
|
413
|
+
* @returns The assessment if found, undefined otherwise
|
|
414
|
+
*/
|
|
415
|
+
function getAssessment(assessmentId) {
|
|
416
|
+
return assessments.get(assessmentId);
|
|
417
|
+
}
|
|
418
|
+
/**
|
|
419
|
+
* Get all assessments for a system.
|
|
420
|
+
*
|
|
421
|
+
* @param systemId - ID of the AI system
|
|
422
|
+
* @returns List of assessments for the system
|
|
423
|
+
*/
|
|
424
|
+
function getAssessmentsForSystem(systemId) {
|
|
425
|
+
return Array.from(assessments.values()).filter(a => a.systemId === systemId);
|
|
426
|
+
}
|
|
427
|
+
/**
|
|
428
|
+
* Get all registered assessments.
|
|
429
|
+
*
|
|
430
|
+
* @returns List of all assessments
|
|
431
|
+
*/
|
|
432
|
+
function getAllAssessments() {
|
|
433
|
+
return Array.from(assessments.values());
|
|
434
|
+
}
|
|
435
|
+
/**
|
|
436
|
+
* Clear all assessments from the registry.
|
|
437
|
+
*/
|
|
438
|
+
function clearAssessments() {
|
|
439
|
+
assessments.clear();
|
|
440
|
+
}
|
|
441
|
+
/**
|
|
442
|
+
* Get a summary of an assessment for reporting.
|
|
443
|
+
*
|
|
444
|
+
* @param assessmentId - ID of the assessment
|
|
445
|
+
* @returns Summary dict with key metrics
|
|
446
|
+
*/
|
|
447
|
+
function getAssessmentSummary(assessmentId) {
|
|
448
|
+
const assessment = assessments.get(assessmentId);
|
|
449
|
+
if (!assessment) {
|
|
450
|
+
return {};
|
|
451
|
+
}
|
|
452
|
+
const allImpacts = [...assessment.individualImpacts, ...assessment.societalImpacts];
|
|
453
|
+
const maxRisk = allImpacts.length > 0 ? Math.max(...allImpacts.map(i => i.riskScore)) : 0;
|
|
454
|
+
const avgRisk = allImpacts.length > 0
|
|
455
|
+
? allImpacts.reduce((sum, i) => sum + i.riskScore, 0) / allImpacts.length
|
|
456
|
+
: 0;
|
|
457
|
+
const highRiskCount = allImpacts.filter(i => i.riskScore >= 15).length;
|
|
458
|
+
const mitigatedCount = assessment.riskMitigations.filter(m => m.implementationStatus === 'implemented' || m.implementationStatus === 'verified').length;
|
|
459
|
+
return {
|
|
460
|
+
assessment_id: assessment.assessmentId,
|
|
461
|
+
system_id: assessment.systemId,
|
|
462
|
+
status: assessment.status,
|
|
463
|
+
version: assessment.version,
|
|
464
|
+
total_impacts: allImpacts.length,
|
|
465
|
+
individual_impacts: assessment.individualImpacts.length,
|
|
466
|
+
societal_impacts: assessment.societalImpacts.length,
|
|
467
|
+
max_risk_score: maxRisk,
|
|
468
|
+
average_risk_score: Math.round(avgRisk * 100) / 100,
|
|
469
|
+
high_risk_impacts: highRiskCount,
|
|
470
|
+
total_mitigations: assessment.riskMitigations.length,
|
|
471
|
+
implemented_mitigations: mitigatedCount,
|
|
472
|
+
residual_risks: assessment.residualRisks.length,
|
|
473
|
+
approvals_received: assessment.approvals.length,
|
|
474
|
+
approval_roles: assessment.approvals.map(a => a.approverRole),
|
|
475
|
+
};
|
|
476
|
+
}
|
|
477
|
+
/**
|
|
478
|
+
* Get aggregate report of all impact assessments.
|
|
479
|
+
*
|
|
480
|
+
* @param config - Optional config
|
|
481
|
+
* @returns Report dict for compliance reporting
|
|
482
|
+
*/
|
|
483
|
+
function getImpactAssessmentReport(config) {
|
|
484
|
+
if (assessments.size === 0) {
|
|
485
|
+
return {
|
|
486
|
+
total_assessments: 0,
|
|
487
|
+
by_status: {},
|
|
488
|
+
systems_assessed: [],
|
|
489
|
+
};
|
|
490
|
+
}
|
|
491
|
+
const byStatus = {};
|
|
492
|
+
const systems = new Set();
|
|
493
|
+
let totalImpacts = 0;
|
|
494
|
+
let highRiskTotal = 0;
|
|
495
|
+
assessments.forEach(assessment => {
|
|
496
|
+
byStatus[assessment.status] = (byStatus[assessment.status] || 0) + 1;
|
|
497
|
+
systems.add(assessment.systemId);
|
|
498
|
+
const allImpacts = [...assessment.individualImpacts, ...assessment.societalImpacts];
|
|
499
|
+
totalImpacts += allImpacts.length;
|
|
500
|
+
highRiskTotal += allImpacts.filter(i => i.riskScore >= 15).length;
|
|
501
|
+
});
|
|
502
|
+
return {
|
|
503
|
+
total_assessments: assessments.size,
|
|
504
|
+
by_status: byStatus,
|
|
505
|
+
systems_assessed: Array.from(systems).sort(),
|
|
506
|
+
total_impacts_identified: totalImpacts,
|
|
507
|
+
high_risk_impacts: highRiskTotal,
|
|
508
|
+
};
|
|
509
|
+
}
|
|
510
|
+
/**
|
|
511
|
+
* Check if a system has approved impact assessment for production.
|
|
512
|
+
*
|
|
513
|
+
* @param systemId - ID of the AI system
|
|
514
|
+
* @param config - Optional config
|
|
515
|
+
* @returns Object with readiness status and details
|
|
516
|
+
*/
|
|
517
|
+
function checkProductionReadiness(systemId, config) {
|
|
518
|
+
const impactConfig = config?.impact_assessment;
|
|
519
|
+
const requireBeforeProduction = impactConfig?.require_before_production !== false;
|
|
520
|
+
const systemAssessments = getAssessmentsForSystem(systemId);
|
|
521
|
+
const approved = systemAssessments.filter(a => a.status === 'approved');
|
|
522
|
+
if (!requireBeforeProduction) {
|
|
523
|
+
return {
|
|
524
|
+
ready: true,
|
|
525
|
+
reason: 'Impact assessment not required for production',
|
|
526
|
+
system_id: systemId,
|
|
527
|
+
};
|
|
528
|
+
}
|
|
529
|
+
if (approved.length === 0) {
|
|
530
|
+
return {
|
|
531
|
+
ready: false,
|
|
532
|
+
reason: 'No approved impact assessment found',
|
|
533
|
+
system_id: systemId,
|
|
534
|
+
assessments_found: systemAssessments.length,
|
|
535
|
+
statuses: systemAssessments.map(a => a.status),
|
|
536
|
+
};
|
|
537
|
+
}
|
|
538
|
+
const latest = approved.reduce((a, b) => (a.updatedAt > b.updatedAt ? a : b));
|
|
539
|
+
return {
|
|
540
|
+
ready: true,
|
|
541
|
+
reason: 'Approved impact assessment exists',
|
|
542
|
+
system_id: systemId,
|
|
543
|
+
assessment_id: latest.assessmentId,
|
|
544
|
+
assessment_version: latest.version,
|
|
545
|
+
approved_at: latest.updatedAt,
|
|
546
|
+
};
|
|
547
|
+
}
|
|
548
|
+
/**
|
|
549
|
+
* Emit an impact assessment event.
|
|
550
|
+
*/
|
|
551
|
+
function emitAssessmentEvent(assessment, eventType, config) {
|
|
552
|
+
try {
|
|
553
|
+
// Import runtime to emit event
|
|
554
|
+
// eslint-disable-next-line @typescript-eslint/no-var-requires
|
|
555
|
+
const { getState } = require('./runtime');
|
|
556
|
+
const state = getState();
|
|
557
|
+
if (state && typeof state.emitInternal === 'function') {
|
|
558
|
+
state.emitInternal({
|
|
559
|
+
event_type: eventType,
|
|
560
|
+
timestamp: nowIso(),
|
|
561
|
+
body: assessmentToDict(assessment),
|
|
562
|
+
});
|
|
563
|
+
}
|
|
564
|
+
}
|
|
565
|
+
catch (err) {
|
|
566
|
+
logger_1.logger.warning('Failed to emit impact assessment event:', err);
|
|
567
|
+
}
|
|
568
|
+
}
|
|
569
|
+
/**
|
|
570
|
+
* Emit the current state of an assessment as an event.
|
|
571
|
+
*
|
|
572
|
+
* @param assessmentId - ID of the assessment to emit
|
|
573
|
+
* @param config - Optional config
|
|
574
|
+
*/
|
|
575
|
+
function emitImpactAssessment(assessmentId, config) {
|
|
576
|
+
const assessment = getAssessment(assessmentId);
|
|
577
|
+
if (assessment) {
|
|
578
|
+
emitAssessmentEvent(assessment, 'impact_assessment', config);
|
|
579
|
+
}
|
|
580
|
+
}
|
package/dist/index.d.ts
CHANGED
|
@@ -9,13 +9,14 @@ export { verifyEventHash, verifyChain, verifyTraceChain, detectTampering, detect
|
|
|
9
9
|
export { getCurrentContext, getCurrentSpan, pushSpan, popSpan, trace, traceAsync, startSpan, nextStepNumber, nextEventSequence, captureContext, runInContext, bindContext, Span, TraceContext, } from './context';
|
|
10
10
|
export { tracedSetTimeout, tracedSetInterval, tracedSetImmediate, tracedNextTick, } from './timers';
|
|
11
11
|
export { TracedEventEmitter, wrapEmitterWithContext } from './traced_emitter';
|
|
12
|
-
export { loadConfig, MonoraConfig, PRESETS, PresetName, SinkConfig, parseSinkConfig, getPresetConfig, buildConfigFromOptions, } from './config';
|
|
13
|
-
export {
|
|
12
|
+
export { loadConfig, MonoraConfig, PRESETS, PresetName, SinkConfig, DataResidency, parseSinkConfig, getPresetConfig, buildConfigFromOptions, } from './config';
|
|
13
|
+
export { validateDataResidency, enforceDataResidency, detectEndpointRegion, DataResidencyCheckResult, } from './dataResidency';
|
|
14
|
+
export { detectEnvironment, detectServiceName, detectInstalledSdks, autoDetectConfig, selectPresetForEnvironment, detectFramework, analyzeProjectWithAI, buildSmartConfig, FrameworkDetection, AIAnalysisResult, } from './autodetect';
|
|
14
15
|
export { WriteAheadLog, WALConfig, WALEntry, createWalFromConfig } from './wal';
|
|
15
16
|
export { EventSigner, SignatureVerifier, SigningConfig, EventSignature, createSignerFromConfig, verifyEventSignature, } from './signing';
|
|
16
17
|
export { ulid, generateUlid } from './ids';
|
|
17
18
|
export { EventBuilder } from './events';
|
|
18
|
-
export { EventDispatcher } from './dispatcher';
|
|
19
|
+
export { EventDispatcher, AuditCallback, onEvent, clearAuditCallbacks, getAuditCallbackCount, } from './dispatcher';
|
|
19
20
|
export { Sink, SinkError, StdoutSink, FileSink, HttpSink } from './sinks';
|
|
20
21
|
export { DataHandlingEngine, DataHandlingViolation, buildDataViolation } from './data_handling';
|
|
21
22
|
export { ViolationWebhookDispatcher, AlertError, buildViolationPayload } from './alerts';
|
|
@@ -23,8 +24,8 @@ export { buildReport, loadJsonl, writeJson, writeMarkdown } from './report';
|
|
|
23
24
|
export { generateSecurityReport } from './security_report';
|
|
24
25
|
export { buildAttestationBundle, signReportGpg, serializeReport } from './attestation';
|
|
25
26
|
export { subscribe, unsubscribe, publishEvent, clearSubscriptions, EventBus, EventSubscription, EventCallback, getEventBus, } from './streaming';
|
|
26
|
-
export { calculateComplianceScore, generateExecutiveSummary, writeExecutiveSummary, ComplianceScoreResult, } from './executiveSummary';
|
|
27
|
-
export { init, InitOptions, shutdown, logEvent, llmCall, toolCall, agentStep, setViolationHandler, exportTrustPackage, } from './runtime';
|
|
27
|
+
export { calculateComplianceScore, generateExecutiveSummary, writeExecutiveSummary, getFrameworkWeights, ComplianceScoreResult, FrameworkWeights, FRAMEWORK_WEIGHTS, } from './executiveSummary';
|
|
28
|
+
export { init, InitOptions, InitEventCallback, shutdown, logEvent, llmCall, toolCall, agentStep, setViolationHandler, exportTrustPackage, } from './runtime';
|
|
28
29
|
export { llmCallDecorator, toolCallDecorator, agentStepDecorator, LlmCallOptions, ToolCallOptions, AgentStepOptions, } from './decorators';
|
|
29
30
|
export { callLlm, callTool, callAgent } from './api';
|
|
30
31
|
export { autoInstrument, InstrumentationError } from './instrumentation';
|
|
@@ -36,7 +37,26 @@ export { validateConfig as validateConfigDiagnostics, doctorChecks, emitResults
|
|
|
36
37
|
export { patchOpenAI, PatchOpenAIOptions, patchAnthropic, PatchAnthropicOptions, MonoraCallbackHandler, MonoraCallbackHandlerOptions, } from './integrations';
|
|
37
38
|
export { logger, LogLevel, setLevel as setLogLevel, getLevel as getLogLevel, } from './logger';
|
|
38
39
|
export { validateConfig, isValidConfig, getValidationErrors, ConfigValidationError, MonoraConfigSchema, ValidatedMonoraConfig, } from './config_schema';
|
|
40
|
+
export { applyConfigMigrations, LATEST_CONFIG_VERSION, ProductionReadinessWarning, validateProductionReadiness, checkPresetEnvironmentMismatch, logProductionWarnings, } from './config_migrations';
|
|
39
41
|
export { PUPPETEER_AVAILABLE, PDFGenerationError, generateCompliancePdf, generateAIActPdf, computePdfSha256, } from './pdf_report';
|
|
40
42
|
export { CircuitBreaker, CircuitBreakerConfig, CircuitBreakerError, CircuitState, } from './circuit_breaker';
|
|
41
43
|
export { PROMETHEUS_AVAILABLE, STATSD_AVAILABLE, MetricsCollector, MetricsBackend, MinimalBackend, PrometheusBackend, StatsdBackend, Timer, getMetricsCollector, initMetrics, closeMetrics, recordEvent, recordApiCall, recordViolation, recordTokens, recordQueueDepth, recordRetryQueueDepth, recordRetryQueueOldestAge, recordRetryQueueDrops, recordCircuitBreakerState, recordCircuitBreakerTrip, } from './telemetry';
|
|
44
|
+
export { ProjectRegistration, UsageReport, AuditMetadata, AttributionEvent, AttributionCallback, TelemetryOptions, registerProject, getRegistration, enableTelemetry, disableTelemetry, isTelemetryEnabled, recordFeatureUsage, getFeaturesUsed, buildUsageReport, reportUsage, onAttributionEvent, setDataResidency, getDataResidency, setAuditMetadata, getAuditMetadata, getInstallId, sendTelemetryEvent, configureHttp, hasShownFirstRunPrompt, hasRegistration, promptForRegistration, showFirstRunPromptIfNeeded, resetFirstRunPrompt, } from './attribution';
|
|
45
|
+
export { PresetConfig, PRESETS as COMPLIANCE_PRESETS, getPreset, listPresets, getPresetConfig as getCompliancePresetConfig, mergeWithPreset, DEVELOPMENT, POC, STAGING, PRODUCTION, STRICT_ENTERPRISE, DEFAULT_SECURE, EXPERIMENTAL, AUDIT_FIRST, LOW_LATENCY, } from './presets';
|
|
46
|
+
export { ComplianceCheck, ComplianceCheckResult, ComplianceScoreBreakdown, UsageProfile, ComplianceCheckOptions, ComplianceCheckCallback, UsageProfileOptions, AssessmentReportOptions, runComplianceCheck, reportUsageProfile, onComplianceCheck, generateAssessmentReport, } from './assessment';
|
|
47
|
+
export { BuildModelSpecOptions, ValidateOnboardingOptions, CompleteOnboardingOptions, OnboardingResult, buildModelSpec, validateOnboarding, completeOnboarding, getOnboardingStatus, resolveEnrichmentPlan, } from './onboarding';
|
|
48
|
+
export { QuotaAction, QuotasConfig, DEFAULT_QUOTAS, QuotaCheckResult, QuotaExceededError, TraceUsage, TraceQuotaTracker, QuotaManager, } from './quotas';
|
|
49
|
+
export { Identity, IdentityToDictOptions, identityToDict, setIdentity, getIdentity, clearIdentity, withIdentity, withIdentityAsync, bindIdentity, getIdentityForEvent, validateIdentityRequirement, } from './identity';
|
|
50
|
+
export { RiskLevel, ModelRiskAssessment, RegisterModelRiskOptions, assessmentToDict, getRiskAssessment, registerModelRisk, unregisterModelRisk, clearRuntimeRegistry as clearRiskRegistry, getRiskForEvent, validateModelRisk, getAllAssessments as getAllRiskAssessments, } from './risk';
|
|
51
|
+
export { MeasurementType, BiasMetrics, BiasMeasurement, BiasCallback, RecordBiasMeasurementOptions, metricsToDict, measurementToEventBody, recordBiasMeasurement, checkThresholdViolations, setMeasurementCallback, getMeasurementCallback, getAllMeasurements as getAllBiasMeasurements, clearMeasurements as clearBiasMeasurements, getBiasSummary, } from './bias';
|
|
52
|
+
export { ReviewType, ReviewDecision, HumanReview, HumanOverride, PendingReview, RecordHumanReviewOptions, RecordHumanOverrideOptions, RequireReviewOptions, reviewToEventBody, overrideToEventBody, recordHumanReview, recordHumanOverride, requireReview, getPendingReviews, getTimedOutReviews, checkReviewRequired, getOversightSummary, clearOversightData, } from './oversight';
|
|
53
|
+
export { PolicyStatus, ConcernStatus, ConcernSeverity, PolicyApprovalEvent, PolicyVersion, PolicyDocument, AimsContextRecord, RaciEntry, ConcernHistoryEvent, ConcernReport, GovernanceTrainingRecord, DuePolicyReview, clearAimsGovernanceData, createPolicyDocument, addPolicyVersion, submitPolicyVersion, approvePolicyVersion, rejectPolicyVersion, recordPolicyReview, setPolicyReviewCadence, getPolicyDocument, listPolicyDocuments, getDuePolicyReviews, recordAimsContext, getAimsContext, registerRaciEntry, listRaciEntries, recordGovernanceTraining, listGovernanceTrainingRecords, fileConcernReport, updateConcernReport, resolveConcernReport, getConcernReport, listConcernReports, getOpenConcerns, getAimsGovernanceSummary, buildAimsGovernanceStatePayload, exportAimsGovernanceState, loadAimsGovernanceState, } from './aims_governance';
|
|
54
|
+
export { Iso42001WorkflowRecord, clearIso42001WorkflowData, recordPolicyAlignment, recordResourceInventory, recordResourceCompetency, recordImpactAssessment, recordResponsibleDevelopmentObjectives, recordResponsibleDevelopmentProcess, recordRequirementsSpecification, recordVerificationValidationPlan, recordDeploymentPlan, recordOperationsMonitoringPlan, recordStakeholderTechnicalDocumentation, recordLifecycleEventLoggingPolicy, recordDataAcquisition, recordDataQualityCriteria, recordDataProvenanceProcess, recordDataPreparationCriteria, recordTransparencyDisclosure, recordAdverseImpactReporting, recordIncidentCommunicationPlan, recordReportingObligations, recordResponsibleUseProcess, recordResponsibleUseObjectives, recordIntendedUseStatement, recordThirdPartyResponsibilityMatrix, recordSupplierAssurance, recordCustomerExpectationAlignment, recordInternalAuditReport, recordManagementReviewMinutes, recordCorrectiveActionLog, getIso42001WorkflowRecord, listIso42001WorkflowRecords, getIso42001WorkflowSummary, exportIso42001WorkflowState, loadIso42001WorkflowState, } from './iso42001_workflows';
|
|
55
|
+
export { consolidateLegacyIso42001Modules, identifyIso42001RemainingGaps, consolidateAndIdentifyIso42001Gaps, } from './iso42001_consolidation';
|
|
56
|
+
export { WorkflowStatus, WorkflowHistoryEntry, ControlWorkflow, ControlCoverageRow, clearControlRuntime, setControlCatalog, loadControlCatalog, getControlCatalog, loadDefaultIso42001Catalog, resolveControlIdsForEvidenceTypes, createWorkflowTask, getWorkflowTask, listWorkflowTasks, transitionWorkflowTask, submitWorkflowTask, approveControlEvidence, expireWorkflowTask, attachControlEvidence, importEvidenceManifest, bootstrapWorkflowsFromCatalog, prioritizeMissingWorkflowModules, generateControlCoverageReport, buildWorkflowStatePayload, exportWorkflowState, loadWorkflowState, } from './control_backbone';
|
|
57
|
+
export { EvidenceStore, EvidenceHashRecord, EvidenceHashChain, EvidenceLineageGraph, EvidenceManifest, computeEvidenceItemHash, buildEvidenceHashChain, verifyEvidenceHashChain, buildEvidenceLineageGraph, buildHashedEvidenceManifest, getRuntimeEvidenceStore, clearRuntimeEvidenceStore, recordRuntimeEvidence, buildRuntimeEvidenceManifest, } from './evidence_store';
|
|
58
|
+
export { FieldType, PIIType, FieldRole, FieldSpec, EnrichmentConfig, MonoraSpec, createFieldSpec, createEnrichmentConfig, createMonoraSpec, enrichmentConfigForFramework, mergeEnrichmentConfigs, fieldSpecToJsonSchema, fieldSpecToRedactionRule, getAllFields, getPiiFields, specToSchemaContract, specToConfig, specFromSchemaContract, specToDict, specFromDict, } from './spec';
|
|
59
|
+
export { detectFieldType, detectPiiType, suggestRole, detectTimestampField, flattenDict, collectFieldValues, computeFieldStats, inferSchemaFromEvents, inferSchemaFromFile, loadEventsFromFile, generateInferenceReport, InferSchemaOptions, InferenceReport, InferenceReportField, } from './schemaInference';
|
|
60
|
+
export { RiskCategory, ValidationError, ValidationResult, MonoraModel, CreateModelOptions, FromDataOptions, createMonoraModel, createValidationResult, validationResultToDict, modelFromData, modelFromSpec, validateEvent, generateConfig, modelToDict, modelToJson, modelFromDict, modelFromJson, saveModel, loadModel, saveSchemaContract, saveConfig, modelToString, } from './model';
|
|
61
|
+
export { ComplianceFramework, Soc2TrustPrinciple, Soc2ControlFamily, GdprArticle, Iso42001ControlArea, FrameworkMetadata, ComplianceTargets, SOC2_CONTROL_MAPPINGS, GDPR_ARTICLE_MAPPINGS, ISO42001_CONTROL_MAPPINGS, createComplianceTargets, getFrameworkMetadata, getAllFrameworks, getRequiredEnrichments, validateComplianceConfig, generateComplianceConfig, suggestFrameworksForIndustry, getControlMappings, isFrameworkSupported, } from './complianceTargets';
|
|
42
62
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,YAAY,EAAE,eAAe,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AACvE,OAAO,EAAE,aAAa,EAAE,mBAAmB,EAAE,aAAa,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAC;AACrG,OAAO,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AAChD,OAAO,EACL,eAAe,EACf,WAAW,EACX,gBAAgB,EAChB,eAAe,EACf,kBAAkB,EAClB,sBAAsB,GACvB,MAAM,UAAU,CAAC;AAClB,OAAO,EACL,iBAAiB,EACjB,cAAc,EACd,QAAQ,EACR,OAAO,EACP,KAAK,EACL,UAAU,EACV,SAAS,EACT,cAAc,EACd,iBAAiB,EACjB,cAAc,EACd,YAAY,EACZ,WAAW,EACX,IAAI,EACJ,YAAY,GACb,MAAM,WAAW,CAAC;AACnB,OAAO,EACL,gBAAgB,EAChB,iBAAiB,EACjB,kBAAkB,EAClB,cAAc,GACf,MAAM,UAAU,CAAC;AAClB,OAAO,EAAE,kBAAkB,EAAE,sBAAsB,EAAE,MAAM,kBAAkB,CAAC;AAC9E,OAAO,EACL,UAAU,EACV,YAAY,EACZ,OAAO,EACP,UAAU,EACV,UAAU,EACV,eAAe,EACf,eAAe,EACf,sBAAsB,GACvB,MAAM,UAAU,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,YAAY,EAAE,eAAe,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AACvE,OAAO,EAAE,aAAa,EAAE,mBAAmB,EAAE,aAAa,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAC;AACrG,OAAO,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AAChD,OAAO,EACL,eAAe,EACf,WAAW,EACX,gBAAgB,EAChB,eAAe,EACf,kBAAkB,EAClB,sBAAsB,GACvB,MAAM,UAAU,CAAC;AAClB,OAAO,EACL,iBAAiB,EACjB,cAAc,EACd,QAAQ,EACR,OAAO,EACP,KAAK,EACL,UAAU,EACV,SAAS,EACT,cAAc,EACd,iBAAiB,EACjB,cAAc,EACd,YAAY,EACZ,WAAW,EACX,IAAI,EACJ,YAAY,GACb,MAAM,WAAW,CAAC;AACnB,OAAO,EACL,gBAAgB,EAChB,iBAAiB,EACjB,kBAAkB,EAClB,cAAc,GACf,MAAM,UAAU,CAAC;AAClB,OAAO,EAAE,kBAAkB,EAAE,sBAAsB,EAAE,MAAM,kBAAkB,CAAC;AAC9E,OAAO,EACL,UAAU,EACV,YAAY,EACZ,OAAO,EACP,UAAU,EACV,UAAU,EACV,aAAa,EACb,eAAe,EACf,eAAe,EACf,sBAAsB,GACvB,MAAM,UAAU,CAAC;AAElB,OAAO,EACL,qBAAqB,EACrB,oBAAoB,EACpB,oBAAoB,EACpB,wBAAwB,GACzB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EACL,iBAAiB,EACjB,iBAAiB,EACjB,mBAAmB,EACnB,gBAAgB,EAChB,0BAA0B,EAE1B,eAAe,EACf,oBAAoB,EACpB,gBAAgB,EAChB,kBAAkB,EAClB,gBAAgB,GACjB,MAAM,cAAc,CAAC;AACtB,OAAO,EAAE,aAAa,EAAE,SAAS,EAAE,QAAQ,EAAE,mBAAmB,EAAE,MAAM,OAAO,CAAC;AAChF,OAAO,EACL,WAAW,EACX,iBAAiB,EACjB,aAAa,EACb,cAAc,EACd,sBAAsB,EACtB,oBAAoB,GACrB,MAAM,WAAW,CAAC;AACnB,OAAO,EAAE,IAAI,EAAE,YAAY,EAAE,MAAM,OAAO,CAAC;AAC3C,OAAO,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AACxC,OAAO,EACL,eAAe,EACf,aAAa,EACb,OAAO,EACP,mBAAmB,EACnB,qBAAqB,GACtB,MAAM,cAAc,CAAC;AACtB,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,UAAU,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAC1E,OAAO,EAAE,kBAAkB,EAAE,qBAAqB,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AAChG,OAAO,EAAE,0BAA0B,EAAE,UAAU,EAAE,qBAAqB,EAAE,MAAM,UAAU,CAAC;AACzF,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAC5E,OAAO,EAAE,sBAAsB,EAAE,MAAM,mBAAmB,CAAC;AAC3D,OAAO,EAAE,sBAAsB,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AACvF,OAAO,EACL,SAAS,EACT,WAAW,EACX,YAAY,EACZ,kBAAkB,EAClB,QAAQ,EACR,iBAAiB,EACjB,aAAa,EACb,WAAW,GACZ,MAAM,aAAa,CAAC;AACrB,OAAO,EACL,wBAAwB,EACxB,wBAAwB,EACxB,qBAAqB,EACrB,mBAAmB,EACnB,qBAAqB,EACrB,gBAAgB,EAChB,iBAAiB,GAClB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EACL,IAAI,EACJ,WAAW,EACX,iBAAiB,EACjB,QAAQ,EACR,QAAQ,EACR,OAAO,EACP,QAAQ,EACR,SAAS,EACT,mBAAmB,EACnB,kBAAkB,GACnB,MAAM,WAAW,CAAC;AACnB,OAAO,EACL,gBAAgB,EAChB,iBAAiB,EACjB,kBAAkB,EAClB,cAAc,EACd,eAAe,EACf,gBAAgB,GACjB,MAAM,cAAc,CAAC;AACtB,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AACrD,OAAO,EAAE,cAAc,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AACzE,OAAO,EACL,aAAa,EACb,aAAa,EACb,mBAAmB,EACnB,cAAc,EACd,cAAc,EACd,gBAAgB,EAChB,WAAW,EACX,aAAa,EACb,cAAc,EACd,mBAAmB,EACnB,eAAe,EACf,WAAW,EACX,aAAa,EACb,eAAe,EACf,UAAU,EACV,UAAU,GACX,MAAM,WAAW,CAAC;AACnB,OAAO,EACL,aAAa,EACb,kBAAkB,EAClB,cAAc,EACd,aAAa,EACb,eAAe,EACf,cAAc,EACd,gBAAgB,EAChB,kBAAkB,EAClB,iBAAiB,GAClB,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,wBAAwB,EAAE,MAAM,sBAAsB,CAAC;AAEtG,OAAO,EACL,oBAAoB,EACpB,aAAa,EACb,eAAe,EACf,gBAAgB,EAChB,iBAAiB,EACjB,uBAAuB,EACvB,gBAAgB,GACjB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,cAAc,IAAI,yBAAyB,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAC3G,OAAO,EACL,WAAW,EACX,kBAAkB,EAClB,cAAc,EACd,qBAAqB,EACrB,qBAAqB,EACrB,4BAA4B,GAC7B,MAAM,gBAAgB,CAAC;AAExB,OAAO,EACL,MAAM,EACN,QAAQ,EACR,QAAQ,IAAI,WAAW,EACvB,QAAQ,IAAI,WAAW,GACxB,MAAM,UAAU,CAAC;AAElB,OAAO,EACL,cAAc,EACd,aAAa,EACb,mBAAmB,EACnB,qBAAqB,EACrB,kBAAkB,EAClB,qBAAqB,GACtB,MAAM,iBAAiB,CAAC;AAEzB,OAAO,EACL,qBAAqB,EACrB,qBAAqB,EACrB,0BAA0B,EAC1B,2BAA2B,EAC3B,8BAA8B,EAC9B,qBAAqB,GACtB,MAAM,qBAAqB,CAAC;AAE7B,OAAO,EACL,mBAAmB,EACnB,kBAAkB,EAClB,qBAAqB,EACrB,gBAAgB,EAChB,gBAAgB,GACjB,MAAM,cAAc,CAAC;AAEtB,OAAO,EACL,cAAc,EACd,oBAAoB,EACpB,mBAAmB,EACnB,YAAY,GACb,MAAM,mBAAmB,CAAC;AAE3B,OAAO,EACL,oBAAoB,EACpB,gBAAgB,EAChB,gBAAgB,EAChB,cAAc,EACd,cAAc,EACd,iBAAiB,EACjB,aAAa,EACb,KAAK,EACL,mBAAmB,EACnB,WAAW,EACX,YAAY,EACZ,WAAW,EACX,aAAa,EACb,eAAe,EACf,YAAY,EACZ,gBAAgB,EAChB,qBAAqB,EACrB,yBAAyB,EACzB,qBAAqB,EACrB,yBAAyB,EACzB,wBAAwB,GACzB,MAAM,aAAa,CAAC;AAErB,OAAO,EACL,mBAAmB,EACnB,WAAW,EACX,aAAa,EACb,gBAAgB,EAChB,mBAAmB,EACnB,gBAAgB,EAChB,eAAe,EACf,eAAe,EACf,eAAe,EACf,gBAAgB,EAChB,kBAAkB,EAClB,kBAAkB,EAClB,eAAe,EACf,gBAAgB,EAChB,WAAW,EACX,kBAAkB,EAClB,gBAAgB,EAChB,gBAAgB,EAChB,gBAAgB,EAChB,gBAAgB,EAChB,YAAY,EACZ,kBAAkB,EAClB,aAAa,EAEb,sBAAsB,EACtB,eAAe,EACf,qBAAqB,EACrB,0BAA0B,EAC1B,mBAAmB,GACpB,MAAM,eAAe,CAAC;AAEvB,OAAO,EACL,YAAY,EACZ,OAAO,IAAI,kBAAkB,EAC7B,SAAS,EACT,WAAW,EACX,eAAe,IAAI,yBAAyB,EAC5C,eAAe,EACf,WAAW,EACX,GAAG,EACH,OAAO,EACP,UAAU,EACV,iBAAiB,EACjB,cAAc,EACd,YAAY,EACZ,WAAW,EACX,WAAW,GACZ,MAAM,WAAW,CAAC;AAEnB,OAAO,EACL,eAAe,EACf,qBAAqB,EACrB,wBAAwB,EACxB,YAAY,EACZ,sBAAsB,EACtB,uBAAuB,EACvB,mBAAmB,EACnB,uBAAuB,EACvB,kBAAkB,EAClB,kBAAkB,EAClB,iBAAiB,EACjB,wBAAwB,GACzB,MAAM,cAAc,CAAC;AAEtB,OAAO,EACL,qBAAqB,EACrB,yBAAyB,EACzB,yBAAyB,EACzB,gBAAgB,EAChB,cAAc,EACd,kBAAkB,EAClB,kBAAkB,EAClB,mBAAmB,EACnB,qBAAqB,GACtB,MAAM,cAAc,CAAC;AAEtB,OAAO,EACL,WAAW,EACX,YAAY,EACZ,cAAc,EACd,gBAAgB,EAChB,kBAAkB,EAClB,UAAU,EACV,iBAAiB,EACjB,YAAY,GACb,MAAM,UAAU,CAAC;AAElB,OAAO,EACL,QAAQ,EACR,qBAAqB,EACrB,cAAc,EACd,WAAW,EACX,WAAW,EACX,aAAa,EACb,YAAY,EACZ,iBAAiB,EACjB,YAAY,EACZ,mBAAmB,EACnB,2BAA2B,GAC5B,MAAM,YAAY,CAAC;AAEpB,OAAO,EACL,SAAS,EACT,mBAAmB,EACnB,wBAAwB,EACxB,gBAAgB,EAChB,iBAAiB,EACjB,iBAAiB,EACjB,mBAAmB,EACnB,oBAAoB,IAAI,iBAAiB,EACzC,eAAe,EACf,iBAAiB,EACjB,iBAAiB,IAAI,qBAAqB,GAC3C,MAAM,QAAQ,CAAC;AAEhB,OAAO,EACL,eAAe,EACf,WAAW,EACX,eAAe,EACf,YAAY,EACZ,4BAA4B,EAC5B,aAAa,EACb,sBAAsB,EACtB,qBAAqB,EACrB,wBAAwB,EACxB,sBAAsB,EACtB,sBAAsB,EACtB,kBAAkB,IAAI,sBAAsB,EAC5C,iBAAiB,IAAI,qBAAqB,EAC1C,cAAc,GACf,MAAM,QAAQ,CAAC;AAEhB,OAAO,EACL,UAAU,EACV,cAAc,EACd,WAAW,EACX,aAAa,EACb,aAAa,EACb,wBAAwB,EACxB,0BAA0B,EAC1B,oBAAoB,EACpB,iBAAiB,EACjB,mBAAmB,EACnB,iBAAiB,EACjB,mBAAmB,EACnB,aAAa,EACb,iBAAiB,EACjB,kBAAkB,EAClB,mBAAmB,EACnB,mBAAmB,EACnB,kBAAkB,GACnB,MAAM,aAAa,CAAC;AAErB,OAAO,EACL,YAAY,EACZ,aAAa,EACb,eAAe,EACf,mBAAmB,EACnB,aAAa,EACb,cAAc,EACd,iBAAiB,EACjB,SAAS,EACT,mBAAmB,EACnB,aAAa,EACb,wBAAwB,EACxB,eAAe,EACf,uBAAuB,EACvB,oBAAoB,EACpB,gBAAgB,EAChB,mBAAmB,EACnB,oBAAoB,EACpB,mBAAmB,EACnB,kBAAkB,EAClB,sBAAsB,EACtB,iBAAiB,EACjB,mBAAmB,EACnB,mBAAmB,EACnB,iBAAiB,EACjB,cAAc,EACd,iBAAiB,EACjB,eAAe,EACf,wBAAwB,EACxB,6BAA6B,EAC7B,iBAAiB,EACjB,mBAAmB,EACnB,oBAAoB,EACpB,gBAAgB,EAChB,kBAAkB,EAClB,eAAe,EACf,wBAAwB,EACxB,+BAA+B,EAC/B,yBAAyB,EACzB,uBAAuB,GACxB,MAAM,mBAAmB,CAAC;AAE3B,OAAO,EACL,sBAAsB,EACtB,yBAAyB,EACzB,qBAAqB,EACrB,uBAAuB,EACvB,wBAAwB,EACxB,sBAAsB,EACtB,sCAAsC,EACtC,mCAAmC,EACnC,+BAA+B,EAC/B,gCAAgC,EAChC,oBAAoB,EACpB,8BAA8B,EAC9B,uCAAuC,EACvC,iCAAiC,EACjC,qBAAqB,EACrB,yBAAyB,EACzB,2BAA2B,EAC3B,6BAA6B,EAC7B,4BAA4B,EAC5B,4BAA4B,EAC5B,+BAA+B,EAC/B,0BAA0B,EAC1B,2BAA2B,EAC3B,8BAA8B,EAC9B,0BAA0B,EAC1B,oCAAoC,EACpC,uBAAuB,EACvB,kCAAkC,EAClC,yBAAyB,EACzB,6BAA6B,EAC7B,yBAAyB,EACzB,yBAAyB,EACzB,2BAA2B,EAC3B,0BAA0B,EAC1B,2BAA2B,EAC3B,yBAAyB,GAC1B,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EACL,gCAAgC,EAChC,6BAA6B,EAC7B,kCAAkC,GACnC,MAAM,0BAA0B,CAAC;AAElC,OAAO,EACL,cAAc,EACd,oBAAoB,EACpB,eAAe,EACf,kBAAkB,EAClB,mBAAmB,EACnB,iBAAiB,EACjB,kBAAkB,EAClB,iBAAiB,EACjB,0BAA0B,EAC1B,iCAAiC,EACjC,kBAAkB,EAClB,eAAe,EACf,iBAAiB,EACjB,sBAAsB,EACtB,kBAAkB,EAClB,sBAAsB,EACtB,kBAAkB,EAClB,qBAAqB,EACrB,sBAAsB,EACtB,6BAA6B,EAC7B,gCAAgC,EAChC,6BAA6B,EAC7B,yBAAyB,EACzB,mBAAmB,EACnB,iBAAiB,GAClB,MAAM,oBAAoB,CAAC;AAE5B,OAAO,EACL,aAAa,EACb,kBAAkB,EAClB,iBAAiB,EACjB,oBAAoB,EACpB,gBAAgB,EAChB,uBAAuB,EACvB,sBAAsB,EACtB,uBAAuB,EACvB,yBAAyB,EACzB,2BAA2B,EAC3B,uBAAuB,EACvB,yBAAyB,EACzB,qBAAqB,EACrB,4BAA4B,GAC7B,MAAM,kBAAkB,CAAC;AAE1B,OAAO,EACL,SAAS,EACT,OAAO,EACP,SAAS,EACT,SAAS,EACT,gBAAgB,EAChB,UAAU,EACV,eAAe,EACf,sBAAsB,EACtB,gBAAgB,EAChB,4BAA4B,EAC5B,sBAAsB,EACtB,qBAAqB,EACrB,wBAAwB,EACxB,YAAY,EACZ,YAAY,EACZ,oBAAoB,EACpB,YAAY,EACZ,sBAAsB,EACtB,UAAU,EACV,YAAY,GACb,MAAM,QAAQ,CAAC;AAEhB,OAAO,EACL,eAAe,EACf,aAAa,EACb,WAAW,EACX,oBAAoB,EACpB,WAAW,EACX,kBAAkB,EAClB,iBAAiB,EACjB,qBAAqB,EACrB,mBAAmB,EACnB,kBAAkB,EAClB,uBAAuB,EACvB,kBAAkB,EAClB,eAAe,EACf,oBAAoB,GACrB,MAAM,mBAAmB,CAAC;AAE3B,OAAO,EACL,YAAY,EACZ,eAAe,EACf,gBAAgB,EAChB,WAAW,EACX,kBAAkB,EAClB,eAAe,EACf,iBAAiB,EACjB,sBAAsB,EACtB,sBAAsB,EACtB,aAAa,EACb,aAAa,EACb,aAAa,EACb,cAAc,EACd,WAAW,EACX,WAAW,EACX,aAAa,EACb,aAAa,EACb,SAAS,EACT,SAAS,EACT,kBAAkB,EAClB,UAAU,EACV,aAAa,GACd,MAAM,SAAS,CAAC;AAEjB,OAAO,EACL,mBAAmB,EACnB,kBAAkB,EAClB,iBAAiB,EACjB,WAAW,EACX,mBAAmB,EACnB,iBAAiB,EACjB,iBAAiB,EACjB,qBAAqB,EACrB,qBAAqB,EACrB,yBAAyB,EACzB,uBAAuB,EACvB,oBAAoB,EACpB,gBAAgB,EAChB,sBAAsB,EACtB,wBAAwB,EACxB,wBAAwB,EACxB,4BAA4B,EAC5B,kBAAkB,EAClB,oBAAoB,GACrB,MAAM,qBAAqB,CAAC"}
|