monora-ai 2.1.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 +333 -159
- 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 +85 -0
- package/dist/assessment.d.ts.map +1 -1
- package/dist/assessment.js +506 -13
- package/dist/attribution.d.ts +44 -3
- package/dist/attribution.d.ts.map +1 -1
- package/dist/attribution.js +197 -10
- package/dist/autodetect.d.ts +68 -0
- package/dist/autodetect.d.ts.map +1 -1
- package/dist/autodetect.js +639 -0
- package/dist/bias.d.ts +130 -0
- package/dist/bias.d.ts.map +1 -0
- package/dist/bias.js +223 -0
- package/dist/cli/diagnostics.d.ts +5 -1
- package/dist/cli/diagnostics.d.ts.map +1 -1
- package/dist/cli/diagnostics.js +23 -6
- 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 +1550 -176
- 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 +261 -16
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +381 -32
- package/dist/config_migrations.d.ts.map +1 -1
- package/dist/config_migrations.js +38 -1
- package/dist/config_schema.d.ts +2490 -1035
- package/dist/config_schema.d.ts.map +1 -1
- package/dist/config_schema.js +233 -64
- 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.map +1 -1
- package/dist/dispatcher.js +17 -5
- 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 +15 -0
- package/dist/executiveSummary.d.ts.map +1 -1
- package/dist/executiveSummary.js +135 -22
- 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 +20 -4
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +247 -5
- package/dist/instrumentation.d.ts +1 -1
- package/dist/instrumentation.d.ts.map +1 -1
- package/dist/instrumentation.js +123 -22
- package/dist/integrations/anthropic.d.ts +3 -0
- package/dist/integrations/anthropic.d.ts.map +1 -1
- package/dist/integrations/anthropic.js +282 -80
- 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 +4 -0
- package/dist/integrations/langchain.d.ts.map +1 -1
- package/dist/integrations/langchain.js +362 -142
- 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 +9 -16
- package/dist/middleware/express.d.ts.map +1 -1
- package/dist/middleware/express.js +18 -3
- package/dist/middleware/nextjs.js +2 -2
- 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/presets.js +7 -7
- 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 +192 -2
- 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 +73 -0
- package/dist/runtime.d.ts.map +1 -1
- package/dist/runtime.js +415 -18
- 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 +118 -4
- 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.map +1 -1
- package/dist/standards_ingest.js +1 -4
- package/dist/telemetry.d.ts +16 -2
- package/dist/telemetry.d.ts.map +1 -1
- package/dist/telemetry.js +77 -14
- package/dist/templates/controls/iso42001_control_catalog.json +1443 -0
- package/dist/traced_emitter.d.ts.map +1 -1
- package/dist/traced_emitter.js +19 -9
- package/dist/trust_package.d.ts +19 -1
- package/dist/trust_package.d.ts.map +1 -1
- package/dist/trust_package.js +89 -2
- 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 +105 -210
- package/templates/controls/iso42001_control_catalog.json +1443 -0
|
@@ -0,0 +1,111 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Compliance Targets - Framework targeting and enrichment mapping.
|
|
3
|
+
*
|
|
4
|
+
* Provides compliance framework definitions and automatic configuration
|
|
5
|
+
* based on selected compliance targets (ISO 42001, SOC 2, GDPR).
|
|
6
|
+
*/
|
|
7
|
+
import { EnrichmentConfig } from './spec';
|
|
8
|
+
/**
|
|
9
|
+
* Supported compliance frameworks.
|
|
10
|
+
*/
|
|
11
|
+
export type ComplianceFramework = 'gdpr' | 'soc2' | 'iso42001' | 'eu_ai_act' | 'hipaa' | 'iso27001' | 'pci_dss' | 'nist_ai_rmf';
|
|
12
|
+
/**
|
|
13
|
+
* SOC 2 Trust Services Criteria categories.
|
|
14
|
+
* Based on AICPA Trust Services Criteria (2017).
|
|
15
|
+
*/
|
|
16
|
+
export type Soc2TrustPrinciple = 'security' | 'availability' | 'processing_integrity' | 'confidentiality' | 'privacy';
|
|
17
|
+
/**
|
|
18
|
+
* SOC 2 Common Criteria control families.
|
|
19
|
+
*/
|
|
20
|
+
export type Soc2ControlFamily = 'CC1' | 'CC2' | 'CC3' | 'CC4' | 'CC5' | 'CC6' | 'CC7' | 'CC8' | 'CC9';
|
|
21
|
+
/**
|
|
22
|
+
* GDPR Articles relevant to AI systems.
|
|
23
|
+
*/
|
|
24
|
+
export type GdprArticle = 'art5' | 'art6' | 'art7' | 'art12' | 'art13' | 'art14' | 'art15' | 'art16' | 'art17' | 'art18' | 'art20' | 'art21' | 'art22' | 'art25' | 'art30' | 'art32' | 'art33' | 'art35';
|
|
25
|
+
/**
|
|
26
|
+
* ISO 42001 Annex A control areas.
|
|
27
|
+
*/
|
|
28
|
+
export type Iso42001ControlArea = 'A2' | 'A3' | 'A4' | 'A5' | 'A6' | 'A7' | 'A8' | 'A9' | 'A10';
|
|
29
|
+
/**
|
|
30
|
+
* Framework metadata including descriptions and control mappings.
|
|
31
|
+
*/
|
|
32
|
+
export interface FrameworkMetadata {
|
|
33
|
+
name: string;
|
|
34
|
+
description: string;
|
|
35
|
+
version: string;
|
|
36
|
+
enforcementDate?: string;
|
|
37
|
+
controlAreas: string[];
|
|
38
|
+
enrichments: Partial<EnrichmentConfig>;
|
|
39
|
+
configRequirements: Record<string, any>;
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* SOC 2 control to enrichment mapping.
|
|
43
|
+
*/
|
|
44
|
+
export declare const SOC2_CONTROL_MAPPINGS: Record<Soc2ControlFamily, string[]>;
|
|
45
|
+
/**
|
|
46
|
+
* GDPR article to enrichment mapping.
|
|
47
|
+
*/
|
|
48
|
+
export declare const GDPR_ARTICLE_MAPPINGS: Record<GdprArticle, string[]>;
|
|
49
|
+
/**
|
|
50
|
+
* ISO 42001 control area to enrichment mapping.
|
|
51
|
+
*/
|
|
52
|
+
export declare const ISO42001_CONTROL_MAPPINGS: Record<Iso42001ControlArea, string[]>;
|
|
53
|
+
/**
|
|
54
|
+
* Compliance targets configuration.
|
|
55
|
+
*/
|
|
56
|
+
export interface ComplianceTargets {
|
|
57
|
+
/** Selected compliance frameworks */
|
|
58
|
+
frameworks: ComplianceFramework[];
|
|
59
|
+
/** Report output formats */
|
|
60
|
+
reportFormats?: ('json' | 'markdown' | 'pdf')[];
|
|
61
|
+
/** Report generation frequency */
|
|
62
|
+
reportFrequency?: 'per_trace' | 'daily' | 'weekly' | 'monthly';
|
|
63
|
+
/** Output directory for reports */
|
|
64
|
+
outputDirectory?: string;
|
|
65
|
+
/** SOC 2 specific: Trust principles to include */
|
|
66
|
+
soc2Principles?: Soc2TrustPrinciple[];
|
|
67
|
+
/** GDPR specific: Articles to prioritize */
|
|
68
|
+
gdprArticles?: GdprArticle[];
|
|
69
|
+
/** ISO 42001 specific: Control areas to focus on */
|
|
70
|
+
iso42001ControlAreas?: Iso42001ControlArea[];
|
|
71
|
+
}
|
|
72
|
+
/**
|
|
73
|
+
* Create default compliance targets configuration.
|
|
74
|
+
*/
|
|
75
|
+
export declare function createComplianceTargets(options?: Partial<ComplianceTargets>): ComplianceTargets;
|
|
76
|
+
/**
|
|
77
|
+
* Get framework metadata.
|
|
78
|
+
*/
|
|
79
|
+
export declare function getFrameworkMetadata(framework: ComplianceFramework): FrameworkMetadata;
|
|
80
|
+
/**
|
|
81
|
+
* Get all available frameworks.
|
|
82
|
+
*/
|
|
83
|
+
export declare function getAllFrameworks(): ComplianceFramework[];
|
|
84
|
+
/**
|
|
85
|
+
* Get required enrichments for selected compliance targets.
|
|
86
|
+
*/
|
|
87
|
+
export declare function getRequiredEnrichments(targets: ComplianceTargets): EnrichmentConfig;
|
|
88
|
+
/**
|
|
89
|
+
* Validate that a config meets compliance requirements.
|
|
90
|
+
*/
|
|
91
|
+
export declare function validateComplianceConfig(config: Record<string, any>, targets: ComplianceTargets): string[];
|
|
92
|
+
/**
|
|
93
|
+
* Generate config sections required for compliance.
|
|
94
|
+
*/
|
|
95
|
+
export declare function generateComplianceConfig(targets: ComplianceTargets): Record<string, any>;
|
|
96
|
+
/**
|
|
97
|
+
* Suggest frameworks based on industry.
|
|
98
|
+
*/
|
|
99
|
+
export declare function suggestFrameworksForIndustry(industry: string): {
|
|
100
|
+
frameworks: ComplianceFramework[];
|
|
101
|
+
reasoning: string;
|
|
102
|
+
}[];
|
|
103
|
+
/**
|
|
104
|
+
* Get control mapping details for a framework.
|
|
105
|
+
*/
|
|
106
|
+
export declare function getControlMappings(framework: ComplianceFramework): Record<string, string[]> | undefined;
|
|
107
|
+
/**
|
|
108
|
+
* Check if a framework is supported.
|
|
109
|
+
*/
|
|
110
|
+
export declare function isFrameworkSupported(framework: string): framework is ComplianceFramework;
|
|
111
|
+
//# sourceMappingURL=complianceTargets.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"complianceTargets.d.ts","sourceRoot":"","sources":["../src/complianceTargets.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,521 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Compliance Targets - Framework targeting and enrichment mapping.
|
|
4
|
+
*
|
|
5
|
+
* Provides compliance framework definitions and automatic configuration
|
|
6
|
+
* based on selected compliance targets (ISO 42001, SOC 2, GDPR).
|
|
7
|
+
*/
|
|
8
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
9
|
+
exports.ISO42001_CONTROL_MAPPINGS = exports.GDPR_ARTICLE_MAPPINGS = exports.SOC2_CONTROL_MAPPINGS = void 0;
|
|
10
|
+
exports.createComplianceTargets = createComplianceTargets;
|
|
11
|
+
exports.getFrameworkMetadata = getFrameworkMetadata;
|
|
12
|
+
exports.getAllFrameworks = getAllFrameworks;
|
|
13
|
+
exports.getRequiredEnrichments = getRequiredEnrichments;
|
|
14
|
+
exports.validateComplianceConfig = validateComplianceConfig;
|
|
15
|
+
exports.generateComplianceConfig = generateComplianceConfig;
|
|
16
|
+
exports.suggestFrameworksForIndustry = suggestFrameworksForIndustry;
|
|
17
|
+
exports.getControlMappings = getControlMappings;
|
|
18
|
+
exports.isFrameworkSupported = isFrameworkSupported;
|
|
19
|
+
const spec_1 = require("./spec");
|
|
20
|
+
/**
|
|
21
|
+
* SOC 2 framework metadata based on Trust Services Criteria.
|
|
22
|
+
*/
|
|
23
|
+
const SOC2_METADATA = {
|
|
24
|
+
name: 'SOC 2',
|
|
25
|
+
description: 'AICPA Trust Services Criteria for Security, Availability, Processing Integrity, Confidentiality, and Privacy',
|
|
26
|
+
version: '2017',
|
|
27
|
+
controlAreas: [
|
|
28
|
+
'CC1 Organization & Management',
|
|
29
|
+
'CC2 Communication',
|
|
30
|
+
'CC3 Risk Assessment',
|
|
31
|
+
'CC4 Monitoring Activities',
|
|
32
|
+
'CC5 Control Activities',
|
|
33
|
+
'CC6 Logical & Physical Access',
|
|
34
|
+
'CC7 System Operations',
|
|
35
|
+
'CC8 Change Management',
|
|
36
|
+
'CC9 Risk Mitigation',
|
|
37
|
+
'P Series Privacy',
|
|
38
|
+
'PI Series Processing Integrity',
|
|
39
|
+
],
|
|
40
|
+
enrichments: {
|
|
41
|
+
// Security (CC1-CC9)
|
|
42
|
+
identityTracking: true, // CC6.1 - Logical access security
|
|
43
|
+
riskTracking: true, // CC3.1-CC3.4 - Risk assessment
|
|
44
|
+
immutability: true, // CC6.7 - Data integrity
|
|
45
|
+
signing: true, // CC6.6 - Encryption/authenticity
|
|
46
|
+
// Availability
|
|
47
|
+
lifecycleTracking: true, // CC7.1 - System monitoring
|
|
48
|
+
// Privacy (P Series)
|
|
49
|
+
dataRedaction: true, // P4 - Data minimization
|
|
50
|
+
dataGovernance: true, // P1 - Privacy notices
|
|
51
|
+
},
|
|
52
|
+
configRequirements: {
|
|
53
|
+
'identity.enabled': true,
|
|
54
|
+
'identity.require_user_id': true,
|
|
55
|
+
'policies.enforce': true,
|
|
56
|
+
'immutability.enabled': true,
|
|
57
|
+
'immutability.verify_on_emit': true,
|
|
58
|
+
'signing.enabled': true,
|
|
59
|
+
'wal.enabled': true,
|
|
60
|
+
'wal.sync_mode': 'fsync',
|
|
61
|
+
'reporting.enabled': true,
|
|
62
|
+
},
|
|
63
|
+
};
|
|
64
|
+
/**
|
|
65
|
+
* GDPR framework metadata based on regulation requirements.
|
|
66
|
+
*/
|
|
67
|
+
const GDPR_METADATA = {
|
|
68
|
+
name: 'GDPR',
|
|
69
|
+
description: 'EU General Data Protection Regulation',
|
|
70
|
+
version: '2018',
|
|
71
|
+
enforcementDate: '2018-05-25',
|
|
72
|
+
controlAreas: [
|
|
73
|
+
'Art 5 - Data Processing Principles',
|
|
74
|
+
'Art 6 - Lawfulness of Processing',
|
|
75
|
+
'Art 7 - Consent',
|
|
76
|
+
'Art 12-14 - Transparency',
|
|
77
|
+
'Art 15-22 - Data Subject Rights',
|
|
78
|
+
'Art 25 - Privacy by Design',
|
|
79
|
+
'Art 30 - Records of Processing',
|
|
80
|
+
'Art 32 - Security of Processing',
|
|
81
|
+
'Art 33-34 - Breach Notification',
|
|
82
|
+
'Art 35 - Impact Assessment',
|
|
83
|
+
],
|
|
84
|
+
enrichments: {
|
|
85
|
+
// Art 5 - Lawfulness, fairness, transparency
|
|
86
|
+
dataRedaction: true, // Art 5(1)(c) - Data minimization
|
|
87
|
+
dataGovernance: true, // Art 5(1)(e) - Storage limitation
|
|
88
|
+
// Art 6/7 - Consent tracking
|
|
89
|
+
identityTracking: true, // Track data subjects
|
|
90
|
+
// Art 22 - Automated decision-making
|
|
91
|
+
humanOversight: true, // Right to human review
|
|
92
|
+
biasDetection: true, // Fairness in automated decisions
|
|
93
|
+
// Art 25 - Privacy by design
|
|
94
|
+
dataResidency: true, // Art 44-49 - Data transfers
|
|
95
|
+
// Art 30 - Records of processing
|
|
96
|
+
immutability: true, // Audit trail
|
|
97
|
+
lifecycleTracking: true, // Data retention
|
|
98
|
+
},
|
|
99
|
+
configRequirements: {
|
|
100
|
+
'data_handling.enabled': true,
|
|
101
|
+
'data_handling.mode': 'redact',
|
|
102
|
+
'data_governance.enabled': true,
|
|
103
|
+
'identity.enabled': true,
|
|
104
|
+
'human_oversight.enabled': true,
|
|
105
|
+
'immutability.enabled': true,
|
|
106
|
+
'reporting.enabled': true,
|
|
107
|
+
'reporting.include_privacy_report': true,
|
|
108
|
+
},
|
|
109
|
+
};
|
|
110
|
+
/**
|
|
111
|
+
* ISO 42001 framework metadata based on AIMS requirements.
|
|
112
|
+
*/
|
|
113
|
+
const ISO42001_METADATA = {
|
|
114
|
+
name: 'ISO/IEC 42001',
|
|
115
|
+
description: 'AI Management System Standard',
|
|
116
|
+
version: '2023',
|
|
117
|
+
controlAreas: [
|
|
118
|
+
'A.2 AI Policy',
|
|
119
|
+
'A.3 Internal Organization',
|
|
120
|
+
'A.4 Resources for AI Systems',
|
|
121
|
+
'A.5 AI System Impact Assessment',
|
|
122
|
+
'A.6 AI System Lifecycle',
|
|
123
|
+
'A.7 Data for AI Systems',
|
|
124
|
+
'A.8 Information for Interested Parties',
|
|
125
|
+
'A.9 Use of AI Systems',
|
|
126
|
+
'A.10 Third Party Relationships',
|
|
127
|
+
],
|
|
128
|
+
enrichments: {
|
|
129
|
+
// A.5 - Impact assessment
|
|
130
|
+
riskTracking: true,
|
|
131
|
+
biasDetection: true,
|
|
132
|
+
// A.6 - Lifecycle management
|
|
133
|
+
lifecycleTracking: true,
|
|
134
|
+
// A.7 - Data governance
|
|
135
|
+
dataGovernance: true,
|
|
136
|
+
dataRedaction: true,
|
|
137
|
+
// A.8 - Transparency
|
|
138
|
+
humanOversight: true,
|
|
139
|
+
// Security baseline
|
|
140
|
+
immutability: true,
|
|
141
|
+
signing: true,
|
|
142
|
+
identityTracking: true,
|
|
143
|
+
},
|
|
144
|
+
configRequirements: {
|
|
145
|
+
'ai_act.enabled': true,
|
|
146
|
+
'risk_register.enabled': true,
|
|
147
|
+
'bias.enabled': true,
|
|
148
|
+
'human_oversight.enabled': true,
|
|
149
|
+
'lifecycle.enabled': true,
|
|
150
|
+
'data_governance.enabled': true,
|
|
151
|
+
'immutability.enabled': true,
|
|
152
|
+
'signing.enabled': true,
|
|
153
|
+
'identity.enabled': true,
|
|
154
|
+
'reporting.enabled': true,
|
|
155
|
+
'reporting.include_ai_act_report': true,
|
|
156
|
+
},
|
|
157
|
+
};
|
|
158
|
+
/**
|
|
159
|
+
* EU AI Act framework metadata.
|
|
160
|
+
*/
|
|
161
|
+
const EU_AI_ACT_METADATA = {
|
|
162
|
+
name: 'EU AI Act',
|
|
163
|
+
description: 'European Union Artificial Intelligence Act',
|
|
164
|
+
version: '2024',
|
|
165
|
+
enforcementDate: '2025-08-02',
|
|
166
|
+
controlAreas: [
|
|
167
|
+
'Art 9 - Risk Management',
|
|
168
|
+
'Art 10 - Data Governance',
|
|
169
|
+
'Art 11 - Technical Documentation',
|
|
170
|
+
'Art 12 - Record-keeping',
|
|
171
|
+
'Art 13 - Transparency',
|
|
172
|
+
'Art 14 - Human Oversight',
|
|
173
|
+
'Art 15 - Accuracy, Robustness, Cybersecurity',
|
|
174
|
+
],
|
|
175
|
+
enrichments: {
|
|
176
|
+
riskTracking: true, // Art 9 - Risk management
|
|
177
|
+
dataGovernance: true, // Art 10 - Data governance
|
|
178
|
+
lifecycleTracking: true, // Art 11-12 - Documentation
|
|
179
|
+
humanOversight: true, // Art 14 - Human oversight
|
|
180
|
+
biasDetection: true, // Art 10 - Data quality
|
|
181
|
+
immutability: true, // Art 12 - Record-keeping
|
|
182
|
+
signing: true, // Art 15 - Cybersecurity
|
|
183
|
+
},
|
|
184
|
+
configRequirements: {
|
|
185
|
+
'ai_act.enabled': true,
|
|
186
|
+
'ai_act.default_risk_category': 'limited',
|
|
187
|
+
'risk_register.enabled': true,
|
|
188
|
+
'human_oversight.enabled': true,
|
|
189
|
+
'bias.enabled': true,
|
|
190
|
+
'lifecycle.enabled': true,
|
|
191
|
+
'data_governance.enabled': true,
|
|
192
|
+
'immutability.enabled': true,
|
|
193
|
+
'reporting.enabled': true,
|
|
194
|
+
},
|
|
195
|
+
};
|
|
196
|
+
/**
|
|
197
|
+
* Complete framework registry.
|
|
198
|
+
*/
|
|
199
|
+
const FRAMEWORK_REGISTRY = {
|
|
200
|
+
soc2: SOC2_METADATA,
|
|
201
|
+
gdpr: GDPR_METADATA,
|
|
202
|
+
iso42001: ISO42001_METADATA,
|
|
203
|
+
eu_ai_act: EU_AI_ACT_METADATA,
|
|
204
|
+
hipaa: {
|
|
205
|
+
name: 'HIPAA',
|
|
206
|
+
description: 'Health Insurance Portability and Accountability Act',
|
|
207
|
+
version: '1996',
|
|
208
|
+
controlAreas: ['Privacy Rule', 'Security Rule', 'Breach Notification Rule'],
|
|
209
|
+
enrichments: {
|
|
210
|
+
dataRedaction: true,
|
|
211
|
+
identityTracking: true,
|
|
212
|
+
immutability: true,
|
|
213
|
+
signing: true,
|
|
214
|
+
dataGovernance: true,
|
|
215
|
+
},
|
|
216
|
+
configRequirements: {
|
|
217
|
+
'data_handling.enabled': true,
|
|
218
|
+
'data_handling.mode': 'redact',
|
|
219
|
+
'identity.enabled': true,
|
|
220
|
+
'immutability.enabled': true,
|
|
221
|
+
'signing.enabled': true,
|
|
222
|
+
'wal.enabled': true,
|
|
223
|
+
},
|
|
224
|
+
},
|
|
225
|
+
iso27001: {
|
|
226
|
+
name: 'ISO/IEC 27001',
|
|
227
|
+
description: 'Information Security Management System',
|
|
228
|
+
version: '2022',
|
|
229
|
+
controlAreas: ['A.5-A.18 Control Domains'],
|
|
230
|
+
enrichments: {
|
|
231
|
+
immutability: true,
|
|
232
|
+
signing: true,
|
|
233
|
+
identityTracking: true,
|
|
234
|
+
riskTracking: true,
|
|
235
|
+
},
|
|
236
|
+
configRequirements: {
|
|
237
|
+
'immutability.enabled': true,
|
|
238
|
+
'immutability.verify_on_emit': true,
|
|
239
|
+
'signing.enabled': true,
|
|
240
|
+
'identity.enabled': true,
|
|
241
|
+
'wal.enabled': true,
|
|
242
|
+
'wal.sync_mode': 'fsync',
|
|
243
|
+
'reporting.include_security_report': true,
|
|
244
|
+
},
|
|
245
|
+
},
|
|
246
|
+
pci_dss: {
|
|
247
|
+
name: 'PCI DSS',
|
|
248
|
+
description: 'Payment Card Industry Data Security Standard',
|
|
249
|
+
version: '4.0',
|
|
250
|
+
controlAreas: ['12 Requirements'],
|
|
251
|
+
enrichments: {
|
|
252
|
+
dataRedaction: true,
|
|
253
|
+
immutability: true,
|
|
254
|
+
signing: true,
|
|
255
|
+
identityTracking: true,
|
|
256
|
+
},
|
|
257
|
+
configRequirements: {
|
|
258
|
+
'data_handling.enabled': true,
|
|
259
|
+
'data_handling.mode': 'redact',
|
|
260
|
+
'immutability.enabled': true,
|
|
261
|
+
'signing.enabled': true,
|
|
262
|
+
'identity.enabled': true,
|
|
263
|
+
},
|
|
264
|
+
},
|
|
265
|
+
nist_ai_rmf: {
|
|
266
|
+
name: 'NIST AI RMF',
|
|
267
|
+
description: 'NIST AI Risk Management Framework',
|
|
268
|
+
version: '1.0',
|
|
269
|
+
controlAreas: ['Govern', 'Map', 'Measure', 'Manage'],
|
|
270
|
+
enrichments: {
|
|
271
|
+
riskTracking: true,
|
|
272
|
+
humanOversight: true,
|
|
273
|
+
biasDetection: true,
|
|
274
|
+
lifecycleTracking: true,
|
|
275
|
+
},
|
|
276
|
+
configRequirements: {
|
|
277
|
+
'risk_register.enabled': true,
|
|
278
|
+
'human_oversight.enabled': true,
|
|
279
|
+
'bias.enabled': true,
|
|
280
|
+
'lifecycle.enabled': true,
|
|
281
|
+
'reporting.enabled': true,
|
|
282
|
+
},
|
|
283
|
+
},
|
|
284
|
+
};
|
|
285
|
+
/**
|
|
286
|
+
* SOC 2 control to enrichment mapping.
|
|
287
|
+
*/
|
|
288
|
+
exports.SOC2_CONTROL_MAPPINGS = {
|
|
289
|
+
CC1: ['identity.enabled'], // Organization ethics & integrity
|
|
290
|
+
CC2: ['reporting.enabled'], // Communication
|
|
291
|
+
CC3: ['risk_register.enabled'], // Risk assessment
|
|
292
|
+
CC4: ['immutability.verify_on_emit'], // Monitoring
|
|
293
|
+
CC5: ['policies.enforce'], // Control activities
|
|
294
|
+
CC6: [
|
|
295
|
+
'identity.enabled',
|
|
296
|
+
'identity.require_user_id',
|
|
297
|
+
'signing.enabled',
|
|
298
|
+
'immutability.enabled',
|
|
299
|
+
'data_handling.enabled',
|
|
300
|
+
],
|
|
301
|
+
CC7: ['wal.enabled', 'lifecycle.enabled'], // System operations
|
|
302
|
+
CC8: ['immutability.enabled'], // Change management
|
|
303
|
+
CC9: ['risk_register.enabled'], // Risk mitigation
|
|
304
|
+
};
|
|
305
|
+
/**
|
|
306
|
+
* GDPR article to enrichment mapping.
|
|
307
|
+
*/
|
|
308
|
+
exports.GDPR_ARTICLE_MAPPINGS = {
|
|
309
|
+
art5: ['data_handling.enabled', 'data_governance.enabled'],
|
|
310
|
+
art6: ['identity.enabled'],
|
|
311
|
+
art7: ['identity.enabled'],
|
|
312
|
+
art12: ['reporting.enabled'],
|
|
313
|
+
art13: ['reporting.enabled'],
|
|
314
|
+
art14: ['reporting.enabled'],
|
|
315
|
+
art15: ['reporting.enabled'],
|
|
316
|
+
art16: ['data_governance.enabled'],
|
|
317
|
+
art17: ['data_governance.enabled'],
|
|
318
|
+
art18: ['data_governance.enabled'],
|
|
319
|
+
art20: ['data_governance.enabled'],
|
|
320
|
+
art21: ['human_oversight.enabled'],
|
|
321
|
+
art22: ['human_oversight.enabled', 'bias.enabled'],
|
|
322
|
+
art25: ['data_handling.enabled', 'immutability.enabled'],
|
|
323
|
+
art30: ['immutability.enabled', 'reporting.enabled'],
|
|
324
|
+
art32: ['signing.enabled', 'wal.enabled'],
|
|
325
|
+
art33: ['reporting.enabled'],
|
|
326
|
+
art35: ['risk_register.enabled'],
|
|
327
|
+
};
|
|
328
|
+
/**
|
|
329
|
+
* ISO 42001 control area to enrichment mapping.
|
|
330
|
+
*/
|
|
331
|
+
exports.ISO42001_CONTROL_MAPPINGS = {
|
|
332
|
+
A2: ['policies.enforce'], // AI Policy
|
|
333
|
+
A3: ['identity.enabled'], // Internal Organization
|
|
334
|
+
A4: ['lifecycle.enabled'], // Resources
|
|
335
|
+
A5: ['risk_register.enabled', 'bias.enabled'], // Impact Assessment
|
|
336
|
+
A6: ['lifecycle.enabled', 'immutability.enabled'], // Lifecycle
|
|
337
|
+
A7: ['data_governance.enabled', 'data_handling.enabled'], // Data
|
|
338
|
+
A8: ['human_oversight.enabled', 'reporting.enabled'], // Transparency
|
|
339
|
+
A9: ['human_oversight.enabled'], // Use of AI
|
|
340
|
+
A10: ['identity.enabled', 'reporting.enabled'], // Third parties
|
|
341
|
+
};
|
|
342
|
+
/**
|
|
343
|
+
* Create default compliance targets configuration.
|
|
344
|
+
*/
|
|
345
|
+
function createComplianceTargets(options = {}) {
|
|
346
|
+
return {
|
|
347
|
+
frameworks: options.frameworks ?? [],
|
|
348
|
+
reportFormats: options.reportFormats ?? ['json', 'markdown'],
|
|
349
|
+
reportFrequency: options.reportFrequency ?? 'per_trace',
|
|
350
|
+
outputDirectory: options.outputDirectory ?? './monora_reports',
|
|
351
|
+
soc2Principles: options.soc2Principles,
|
|
352
|
+
gdprArticles: options.gdprArticles,
|
|
353
|
+
iso42001ControlAreas: options.iso42001ControlAreas,
|
|
354
|
+
};
|
|
355
|
+
}
|
|
356
|
+
/**
|
|
357
|
+
* Get framework metadata.
|
|
358
|
+
*/
|
|
359
|
+
function getFrameworkMetadata(framework) {
|
|
360
|
+
return FRAMEWORK_REGISTRY[framework];
|
|
361
|
+
}
|
|
362
|
+
/**
|
|
363
|
+
* Get all available frameworks.
|
|
364
|
+
*/
|
|
365
|
+
function getAllFrameworks() {
|
|
366
|
+
return Object.keys(FRAMEWORK_REGISTRY);
|
|
367
|
+
}
|
|
368
|
+
/**
|
|
369
|
+
* Get required enrichments for selected compliance targets.
|
|
370
|
+
*/
|
|
371
|
+
function getRequiredEnrichments(targets) {
|
|
372
|
+
let combined = (0, spec_1.createEnrichmentConfig)();
|
|
373
|
+
for (const framework of targets.frameworks) {
|
|
374
|
+
const metadata = FRAMEWORK_REGISTRY[framework];
|
|
375
|
+
if (metadata?.enrichments) {
|
|
376
|
+
combined = (0, spec_1.mergeEnrichmentConfigs)(combined, (0, spec_1.createEnrichmentConfig)(metadata.enrichments));
|
|
377
|
+
}
|
|
378
|
+
}
|
|
379
|
+
return combined;
|
|
380
|
+
}
|
|
381
|
+
/**
|
|
382
|
+
* Validate that a config meets compliance requirements.
|
|
383
|
+
*/
|
|
384
|
+
function validateComplianceConfig(config, targets) {
|
|
385
|
+
const errors = [];
|
|
386
|
+
for (const framework of targets.frameworks) {
|
|
387
|
+
const metadata = FRAMEWORK_REGISTRY[framework];
|
|
388
|
+
if (!metadata?.configRequirements)
|
|
389
|
+
continue;
|
|
390
|
+
for (const [path, expectedValue] of Object.entries(metadata.configRequirements)) {
|
|
391
|
+
const actualValue = getConfigPath(config, path);
|
|
392
|
+
if (actualValue === undefined || actualValue === null) {
|
|
393
|
+
errors.push(`${metadata.name}: Missing required config '${path}'`);
|
|
394
|
+
}
|
|
395
|
+
else if (typeof expectedValue === 'boolean' && actualValue !== expectedValue) {
|
|
396
|
+
errors.push(`${metadata.name}: Config '${path}' should be ${expectedValue}, got ${actualValue}`);
|
|
397
|
+
}
|
|
398
|
+
else if (typeof expectedValue === 'string' && actualValue !== expectedValue) {
|
|
399
|
+
errors.push(`${metadata.name}: Config '${path}' should be '${expectedValue}', got '${actualValue}'`);
|
|
400
|
+
}
|
|
401
|
+
}
|
|
402
|
+
}
|
|
403
|
+
return errors;
|
|
404
|
+
}
|
|
405
|
+
/**
|
|
406
|
+
* Generate config sections required for compliance.
|
|
407
|
+
*/
|
|
408
|
+
function generateComplianceConfig(targets) {
|
|
409
|
+
const config = {};
|
|
410
|
+
for (const framework of targets.frameworks) {
|
|
411
|
+
const metadata = FRAMEWORK_REGISTRY[framework];
|
|
412
|
+
if (!metadata?.configRequirements)
|
|
413
|
+
continue;
|
|
414
|
+
for (const [path, value] of Object.entries(metadata.configRequirements)) {
|
|
415
|
+
setConfigPath(config, path, value);
|
|
416
|
+
}
|
|
417
|
+
}
|
|
418
|
+
// Add compliance targets section
|
|
419
|
+
config.compliance_targets = {
|
|
420
|
+
frameworks: targets.frameworks,
|
|
421
|
+
report_formats: targets.reportFormats,
|
|
422
|
+
report_frequency: targets.reportFrequency,
|
|
423
|
+
output_directory: targets.outputDirectory,
|
|
424
|
+
};
|
|
425
|
+
return config;
|
|
426
|
+
}
|
|
427
|
+
/**
|
|
428
|
+
* Suggest frameworks based on industry.
|
|
429
|
+
*/
|
|
430
|
+
function suggestFrameworksForIndustry(industry) {
|
|
431
|
+
const suggestions = [];
|
|
432
|
+
const industryLower = industry.toLowerCase();
|
|
433
|
+
// Healthcare
|
|
434
|
+
if (industryLower.includes('health') || industryLower.includes('medical') || industryLower.includes('pharma')) {
|
|
435
|
+
suggestions.push({
|
|
436
|
+
frameworks: ['hipaa', 'gdpr', 'iso42001'],
|
|
437
|
+
reasoning: 'Healthcare requires HIPAA compliance, GDPR for EU patients, and ISO 42001 for AI governance',
|
|
438
|
+
});
|
|
439
|
+
}
|
|
440
|
+
// Finance
|
|
441
|
+
if (industryLower.includes('finance') || industryLower.includes('bank') || industryLower.includes('payment')) {
|
|
442
|
+
suggestions.push({
|
|
443
|
+
frameworks: ['soc2', 'pci_dss', 'gdpr'],
|
|
444
|
+
reasoning: 'Financial services require SOC 2 for security, PCI DSS for payment data, GDPR for EU customers',
|
|
445
|
+
});
|
|
446
|
+
}
|
|
447
|
+
// Technology/SaaS
|
|
448
|
+
if (industryLower.includes('tech') || industryLower.includes('saas') || industryLower.includes('software')) {
|
|
449
|
+
suggestions.push({
|
|
450
|
+
frameworks: ['soc2', 'gdpr', 'iso42001'],
|
|
451
|
+
reasoning: 'Tech companies need SOC 2 for customer trust, GDPR for EU users, ISO 42001 for AI systems',
|
|
452
|
+
});
|
|
453
|
+
}
|
|
454
|
+
// EU-based or serving EU
|
|
455
|
+
if (industryLower.includes('eu') || industryLower.includes('europe')) {
|
|
456
|
+
suggestions.push({
|
|
457
|
+
frameworks: ['gdpr', 'eu_ai_act', 'iso42001'],
|
|
458
|
+
reasoning: 'EU operations require GDPR and EU AI Act compliance, ISO 42001 provides AIMS framework',
|
|
459
|
+
});
|
|
460
|
+
}
|
|
461
|
+
// AI/ML focused
|
|
462
|
+
if (industryLower.includes('ai') || industryLower.includes('ml') || industryLower.includes('machine learning')) {
|
|
463
|
+
suggestions.push({
|
|
464
|
+
frameworks: ['iso42001', 'eu_ai_act', 'nist_ai_rmf'],
|
|
465
|
+
reasoning: 'AI companies should follow ISO 42001, EU AI Act, and NIST AI RMF for comprehensive governance',
|
|
466
|
+
});
|
|
467
|
+
}
|
|
468
|
+
// Default recommendation
|
|
469
|
+
if (suggestions.length === 0) {
|
|
470
|
+
suggestions.push({
|
|
471
|
+
frameworks: ['soc2', 'gdpr', 'iso42001'],
|
|
472
|
+
reasoning: 'Standard recommendation: SOC 2 for security, GDPR for privacy, ISO 42001 for AI governance',
|
|
473
|
+
});
|
|
474
|
+
}
|
|
475
|
+
return suggestions;
|
|
476
|
+
}
|
|
477
|
+
/**
|
|
478
|
+
* Get control mapping details for a framework.
|
|
479
|
+
*/
|
|
480
|
+
function getControlMappings(framework) {
|
|
481
|
+
switch (framework) {
|
|
482
|
+
case 'soc2':
|
|
483
|
+
return exports.SOC2_CONTROL_MAPPINGS;
|
|
484
|
+
case 'gdpr':
|
|
485
|
+
return exports.GDPR_ARTICLE_MAPPINGS;
|
|
486
|
+
case 'iso42001':
|
|
487
|
+
return exports.ISO42001_CONTROL_MAPPINGS;
|
|
488
|
+
default:
|
|
489
|
+
return undefined;
|
|
490
|
+
}
|
|
491
|
+
}
|
|
492
|
+
/**
|
|
493
|
+
* Check if a framework is supported.
|
|
494
|
+
*/
|
|
495
|
+
function isFrameworkSupported(framework) {
|
|
496
|
+
return framework.toLowerCase() in FRAMEWORK_REGISTRY;
|
|
497
|
+
}
|
|
498
|
+
// Helper: Get value from nested config path
|
|
499
|
+
function getConfigPath(config, path) {
|
|
500
|
+
const parts = path.split('.');
|
|
501
|
+
let current = config;
|
|
502
|
+
for (const part of parts) {
|
|
503
|
+
if (current === undefined || current === null)
|
|
504
|
+
return undefined;
|
|
505
|
+
current = current[part];
|
|
506
|
+
}
|
|
507
|
+
return current;
|
|
508
|
+
}
|
|
509
|
+
// Helper: Set value at nested config path
|
|
510
|
+
function setConfigPath(config, path, value) {
|
|
511
|
+
const parts = path.split('.');
|
|
512
|
+
let current = config;
|
|
513
|
+
for (let i = 0; i < parts.length - 1; i++) {
|
|
514
|
+
const part = parts[i];
|
|
515
|
+
if (!(part in current) || typeof current[part] !== 'object') {
|
|
516
|
+
current[part] = {};
|
|
517
|
+
}
|
|
518
|
+
current = current[part];
|
|
519
|
+
}
|
|
520
|
+
current[parts[parts.length - 1]] = value;
|
|
521
|
+
}
|