@grc-claw/compliance-orchestrator 2.0.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/CHANGELOG.md ADDED
@@ -0,0 +1,20 @@
1
+ # @grc-claw/compliance-orchestrator
2
+
3
+ ## 2.0.0
4
+
5
+ ### Major Changes
6
+
7
+ - 9eafd06: Initial public release of GRC_Claw v1.0.
8
+
9
+ Core packages: @grc-claw/core, @grc-claw/evidence, @grc-claw/agent-runtime, @grc-claw/aims
10
+
11
+ Platform packages: @grc-claw/frameworks, @grc-claw/ingest, @grc-claw/agent-identity, @grc-claw/sdk, @grc-claw/compliance-orchestrator, @grc-claw/ai-supply-chain, @grc-claw/zk-compliance, @grc-claw/security-graph, @grc-claw/soar, @grc-claw/compliance-copilot, @grc-claw/observability, @grc-claw/cli
12
+
13
+ ### Patch Changes
14
+
15
+ - Updated dependencies [9eafd06]
16
+ - @grc-claw/core@2.0.0
17
+ - @grc-claw/evidence@2.0.0
18
+ - @grc-claw/aims@2.0.0
19
+ - @grc-claw/frameworks@2.0.0
20
+ - @grc-claw/sdk@2.0.0
@@ -0,0 +1,28 @@
1
+ import type { FrameworkCode, RegulationAST, ASTControlNode, CrosswalkEntry } from '../types.js';
2
+ export declare class RegulationASTCompiler {
3
+ private asts;
4
+ private crosswalks;
5
+ constructor(crosswalks?: CrosswalkEntry[]);
6
+ private compileFramework;
7
+ getAST(framework: FrameworkCode): RegulationAST | undefined;
8
+ getAllASTs(): RegulationAST[];
9
+ compileNaturalLanguage(framework: FrameworkCode, text: string): ASTControlNode;
10
+ findEquivalent(framework: FrameworkCode, controlCode: string): CrosswalkEntry[];
11
+ findStronger(framework: FrameworkCode, controlCode: string): CrosswalkEntry[];
12
+ deduplicateEvidence(orgId: string, framework: FrameworkCode, evidenceMap: Map<string, string[]>): Map<string, string[]>;
13
+ getHash(framework: FrameworkCode): string | undefined;
14
+ }
15
+ /**
16
+ * Given a control in one framework, returns all equivalent controls across other frameworks.
17
+ * Performs a bidirectional search across DEFAULT_CROSSWALKS, so callers do not need to
18
+ * know which direction a mapping was originally authored in.
19
+ *
20
+ * Results are sorted descending by confidence so the caller can short-circuit at a threshold.
21
+ */
22
+ export declare function getEvidenceDeduplicationMap(framework: string, controlId: string): Array<{
23
+ framework: string;
24
+ control: string;
25
+ confidence: number;
26
+ relationship: string;
27
+ }>;
28
+ //# sourceMappingURL=RegulationASTCompiler.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RegulationASTCompiler.d.ts","sourceRoot":"","sources":["../../src/compiler/RegulationASTCompiler.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,aAAa,EACb,aAAa,EACb,cAAc,EAGd,cAAc,EAGf,MAAM,aAAa,CAAC;AA8TrB,qBAAa,qBAAqB;IAChC,OAAO,CAAC,IAAI,CAAgD;IAC5D,OAAO,CAAC,UAAU,CAAmB;gBAEzB,UAAU,CAAC,EAAE,cAAc,EAAE;IAOzC,OAAO,CAAC,gBAAgB;IAuCxB,MAAM,CAAC,SAAS,EAAE,aAAa,GAAG,aAAa,GAAG,SAAS;IAI3D,UAAU,IAAI,aAAa,EAAE;IAI7B,sBAAsB,CAAC,SAAS,EAAE,aAAa,EAAE,IAAI,EAAE,MAAM,GAAG,cAAc;IAwB9E,cAAc,CAAC,SAAS,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,GAAG,cAAc,EAAE;IAM/E,YAAY,CAAC,SAAS,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,GAAG,cAAc,EAAE;IAM7E,mBAAmB,CAAC,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,aAAa,EAAE,WAAW,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC;IAmBvH,OAAO,CAAC,SAAS,EAAE,aAAa,GAAG,MAAM,GAAG,SAAS;CAItD;AAED;;;;;;GAMG;AACH,wBAAgB,2BAA2B,CACzC,SAAS,EAAE,MAAM,EACjB,SAAS,EAAE,MAAM,GAChB,KAAK,CAAC;IAAE,SAAS,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,MAAM,CAAC;IAAC,YAAY,EAAE,MAAM,CAAA;CAAE,CAAC,CAWzF"}
@@ -0,0 +1,408 @@
1
+ import { createHash } from 'node:crypto';
2
+ const BUILTIN_FRAMEWORKS = {
3
+ iso27001: {
4
+ code: 'iso27001',
5
+ version: '2022',
6
+ title: 'ISO/IEC 27001:2022 Information Security Management',
7
+ issuer: 'ISO/IEC',
8
+ publishedAt: '2022-10-25',
9
+ effectiveAt: '2025-10-31',
10
+ controls: [
11
+ { id: 'iso-a.5.1', code: 'A.5.1', title: 'Policies for Information Security', description: 'Information security policy and topic-specific policies shall be defined, approved by management, published, and communicated.', family: 'Organizational', severity: 'HIGH', evidence: [{ type: 'policy', source: 'document_system', freshness: '90d' }] },
12
+ { id: 'iso-a.5.2', code: 'A.5.2', title: 'Information Security Roles', description: 'Information security roles and responsibilities shall be defined and allocated.', family: 'Organizational', severity: 'MEDIUM', evidence: [{ type: 'policy', source: 'rbac_config', freshness: '90d' }] },
13
+ { id: 'iso-a.5.3', code: 'A.5.3', title: 'Segregation of Duties', description: 'Conflicting duties and conflicting areas of responsibility shall be segregated.', family: 'Organizational', severity: 'HIGH', evidence: [{ type: 'config', source: 'iam_policies', freshness: '30d' }] },
14
+ { id: 'iso-a.5.4', code: 'A.5.4', title: 'Management Responsibilities', description: 'Management shall require all personnel to apply information security in accordance with the established policies.', family: 'Organizational', severity: 'MEDIUM', evidence: [{ type: 'attestation', source: 'training_records', freshness: '365d' }] },
15
+ { id: 'iso-a.6.1', code: 'A.6.1', title: 'Screening', description: 'Background verification checks on all candidates for employment shall be carried out.', family: 'People', severity: 'MEDIUM', evidence: [{ type: 'certificate', source: 'hr_system', freshness: '365d' }] },
16
+ { id: 'iso-a.6.2', code: 'A.6.2', title: 'Terms and Conditions of Employment', description: 'Employment contractual agreements shall state personnel and organization responsibilities.', family: 'People', severity: 'LOW', evidence: [{ type: 'document', source: 'contract_system', freshness: '365d' }] },
17
+ { id: 'iso-a.6.3', code: 'A.6.3', title: 'Information Security Awareness, Education and Training', description: 'Personnel of the organization and relevant interested parties shall receive appropriate information security awareness, education and training.', family: 'People', severity: 'HIGH', evidence: [{ type: 'certificate', source: 'lms_platform', freshness: '365d' }] },
18
+ { id: 'iso-a.7.1', code: 'A.7.1', title: 'Physical Security Perimeters', description: 'Security perimeters shall be defined and used to protect areas containing information and associated assets.', family: 'Physical', severity: 'HIGH', evidence: [{ type: 'screenshot', source: 'physical_security_log', freshness: '30d' }] },
19
+ { id: 'iso-a.8.1', code: 'A.8.1', title: 'User Endpoint Devices', description: 'Information stored on, processed by or accessible via user endpoint devices shall be protected.', family: 'Technological', severity: 'HIGH', evidence: [{ type: 'config', source: 'mdm_system', freshness: '7d' }] },
20
+ { id: 'iso-a.8.2', code: 'A.8.2', title: 'Privileged Access Rights', description: 'The allocation and use of privileged access rights shall be restricted and managed.', family: 'Technological', severity: 'CRITICAL', evidence: [{ type: 'config', source: 'iam_policies', freshness: '7d' }] },
21
+ { id: 'iso-a.8.3', code: 'A.8.3', title: 'Information Access Restriction', description: 'Access to information and other information processing assets shall be restricted in accordance with the access control policy.', family: 'Technological', severity: 'HIGH', evidence: [{ type: 'config', source: 'rbac_config', freshness: '7d' }] },
22
+ { id: 'iso-a.8.5', code: 'A.8.5', title: 'Secure Authentication', description: 'Secure authentication technologies and procedures shall be established and implemented.', family: 'Technological', severity: 'HIGH', evidence: [{ type: 'config', source: 'auth_config', freshness: '7d' }] },
23
+ { id: 'iso-a.8.9', code: 'A.8.9', title: 'Configuration Management', description: 'Configurations, including security configurations, of hardware, software, services and networks shall be established, documented, implemented, monitored and reviewed.', family: 'Technological', severity: 'HIGH', evidence: [{ type: 'config', source: 'config_management', freshness: '7d' }] },
24
+ { id: 'iso-a.8.16', code: 'A.8.16', title: 'Monitoring Activities', description: 'Networks, systems and applications shall be monitored for anomalous behaviour and appropriate actions taken.', family: 'Technological', severity: 'HIGH', evidence: [{ type: 'log', source: 'siem_system', freshness: '24h' }] },
25
+ ],
26
+ },
27
+ 'nist-csf': {
28
+ code: 'nist-csf',
29
+ version: '2.0',
30
+ title: 'NIST Cybersecurity Framework 2.0',
31
+ issuer: 'NIST',
32
+ publishedAt: '2024-02-26',
33
+ effectiveAt: '2024-02-26',
34
+ controls: [
35
+ { id: 'nist-gv-oc', code: 'GV.OC', title: 'Organizational Context', description: 'The organization\'s context, risk management strategy, and stakeholders are understood.', family: 'Govern', severity: 'HIGH', evidence: [{ type: 'policy', source: 'risk_register', freshness: '90d' }] },
36
+ { id: 'nist-gv-rr', code: 'GV.RR', title: 'Roles, Responsibilities, and Authorities', description: 'Roles, responsibilities, and authorities for cybersecurity risk management are established.', family: 'Govern', severity: 'MEDIUM', evidence: [{ type: 'policy', source: 'org_chart', freshness: '90d' }] },
37
+ { id: 'nist-id-am', code: 'ID.AM', title: 'Asset Management', description: 'Assets are identified, and cybersecurity risks to assets are understood.', family: 'Identify', severity: 'HIGH', evidence: [{ type: 'config', source: 'asset_inventory', freshness: '30d' }] },
38
+ { id: 'nist-id-ra', code: 'ID.RA', title: 'Risk Assessment', description: 'Cybersecurity risks to the organization are understood and prioritized.', family: 'Identify', severity: 'HIGH', evidence: [{ type: 'config', source: 'risk_assessment', freshness: '90d' }] },
39
+ { id: 'nist-pr-ac', code: 'PR.AC', title: 'Identity Management, Authentication and Access Control', description: 'Access to assets is limited to authorized users, processes, and devices.', family: 'Protect', severity: 'CRITICAL', evidence: [{ type: 'config', source: 'iam_system', freshness: '7d' }] },
40
+ { id: 'nist-pr-ds', code: 'PR.DS', title: 'Data Security', description: 'Data is managed consistent with the organization\'s risk strategy.', family: 'Protect', severity: 'HIGH', evidence: [{ type: 'config', source: 'encryption_config', freshness: '30d' }] },
41
+ { id: 'nist-pr-pt', code: 'PR.PT', title: 'Protective Technology', description: 'Technical security solutions are managed to protect assets.', family: 'Protect', severity: 'HIGH', evidence: [{ type: 'config', source: 'security_tools', freshness: '7d' }] },
42
+ { id: 'nist-de-cm', code: 'DE.CM', title: 'Continuous Monitoring', description: 'The information system and assets are monitored for cybersecurity events.', family: 'Detect', severity: 'HIGH', evidence: [{ type: 'log', source: 'siem', freshness: '24h' }] },
43
+ { id: 'nist-rc-rp', code: 'RC.RP', title: 'Recovery Planning', description: 'Recovery processes and plans are executed during recovery operations.', family: 'Recover', severity: 'HIGH', evidence: [{ type: 'config', source: 'disaster_recovery', freshness: '90d' }] },
44
+ ],
45
+ },
46
+ soc2: {
47
+ code: 'soc2',
48
+ version: '2017',
49
+ title: 'SOC 2 Trust Services Criteria',
50
+ issuer: 'AICPA',
51
+ publishedAt: '2017-01-01',
52
+ effectiveAt: '2017-01-01',
53
+ controls: [
54
+ { id: 'soc2-cc6.1', code: 'CC6.1', title: 'Logical Access Security', description: 'The entity implements logical access security software, infrastructure, and architectures over protected information assets.', family: 'Common Criteria', severity: 'CRITICAL', evidence: [{ type: 'config', source: 'access_controls', freshness: '7d' }] },
55
+ { id: 'soc2-cc6.2', code: 'CC6.2', title: 'User Authentication', description: 'Prior to issuing system credentials and granting system access, the entity registers and authorizes new internal and external users.', family: 'Common Criteria', severity: 'HIGH', evidence: [{ type: 'config', source: 'user_provisioning', freshness: '7d' }] },
56
+ { id: 'soc2-cc6.3', code: 'CC6.3', title: 'Role-Based Access', description: 'The entity authorizes, modifies, or removes access to data, software, functions, and other system assets based on roles.', family: 'Common Criteria', severity: 'HIGH', evidence: [{ type: 'config', source: 'rbac_config', freshness: '30d' }] },
57
+ { id: 'soc2-cc7.1', code: 'CC7.1', title: 'Vulnerability Management', description: 'To meet its objectives, the entity uses detection and monitoring procedures to identify changes to configurations.', family: 'Common Criteria', severity: 'HIGH', evidence: [{ type: 'scan', source: 'vulnerability_scanner', freshness: '7d' }] },
58
+ { id: 'soc2-cc7.2', code: 'CC7.2', title: 'Security Event Monitoring', description: 'The entity monitors system components and the operation of those components for anomalies.', family: 'Common Criteria', severity: 'HIGH', evidence: [{ type: 'log', source: 'siem', freshness: '24h' }] },
59
+ { id: 'soc2-a1.2', code: 'A1.2', title: 'Environmental Protections', description: 'The entity authorizes, designs, develops or configures, implements, operates, approves, maintains, and monitors environmental protections.', family: 'Availability', severity: 'MEDIUM', evidence: [{ type: 'config', source: 'datacenter', freshness: '30d' }] },
60
+ ],
61
+ },
62
+ 'iso42001': {
63
+ code: 'iso42001',
64
+ version: '2023',
65
+ title: 'ISO/IEC 42001 AI Management System',
66
+ issuer: 'ISO/IEC',
67
+ publishedAt: '2023-12-01',
68
+ effectiveAt: '2025-06-30',
69
+ controls: [
70
+ { id: 'iso4-aimso.1', code: 'AIMSO.1', title: 'AIMS Scope', description: 'The organization shall determine the boundaries and applicability of the AIMS.', family: 'AIMS Foundation', severity: 'HIGH', evidence: [{ type: 'document', source: 'aims_charter', freshness: '90d' }] },
71
+ { id: 'iso4-a.6.1', code: 'A.6.1', title: 'AI Risk Assessment', description: 'The organization shall establish, implement and maintain an AI risk assessment process.', family: 'AI Risk', severity: 'HIGH', evidence: [{ type: 'config', source: 'risk_register', freshness: '30d' }] },
72
+ { id: 'iso4-a.6.2', code: 'A.6.2', title: 'AI Risk Treatment', description: 'The organization shall implement an AI risk treatment process.', family: 'AI Risk', severity: 'HIGH', evidence: [{ type: 'policy', source: 'risk_treatment', freshness: '90d' }] },
73
+ { id: 'iso4-a.7.1', code: 'A.7.1', title: 'AI System Impact Assessment', description: 'The organization shall perform AI system impact assessments.', family: 'AI Operations', severity: 'CRITICAL', evidence: [{ type: 'attestation', source: 'impact_assessment', freshness: '90d' }] },
74
+ { id: 'iso4-a.7.2', code: 'A.7.2', title: 'AI System Planning', description: 'The organization shall establish criteria for AI system development.', family: 'AI Operations', severity: 'HIGH', evidence: [{ type: 'policy', source: 'development_plan', freshness: '90d' }] },
75
+ { id: 'iso4-a.8.1', code: 'A.8.1', title: 'AI Model Development', description: 'The organization shall establish processes for AI model development and evaluation.', family: 'AI Operations', severity: 'HIGH', evidence: [{ type: 'config', source: 'model_registry', freshness: '30d' }] },
76
+ { id: 'iso4-a.8.2', code: 'A.8.2', title: 'AI Data Quality', description: 'The organization shall establish processes for AI data management and quality assurance.', family: 'AI Operations', severity: 'HIGH', evidence: [{ type: 'config', source: 'data_quality', freshness: '7d' }] },
77
+ { id: 'iso4-a.8.3', code: 'A.8.3', title: 'AI System Verification', description: 'The organization shall verify AI system performance and accuracy.', family: 'AI Operations', severity: 'HIGH', evidence: [{ type: 'scan', source: 'model_validation', freshness: '30d' }] },
78
+ ],
79
+ },
80
+ 'eu-ai-act': {
81
+ code: 'eu-ai-act',
82
+ version: '2024',
83
+ title: 'EU Artificial Intelligence Act',
84
+ issuer: 'European Union',
85
+ publishedAt: '2024-08-01',
86
+ effectiveAt: '2025-02-02',
87
+ controls: [
88
+ { id: 'euai-risk-prohibited', code: 'Art.5', title: 'Prohibited AI Practices', description: 'AI practices that manipulate behavior, exploit vulnerabilities, or conduct social scoring are prohibited.', family: 'Prohibited', severity: 'CRITICAL', evidence: [{ type: 'policy', source: 'ai_policy', freshness: '90d' }] },
89
+ { id: 'euai-risk-high', code: 'Art.6', title: 'High-Risk AI Classification', description: 'AI systems are classified as high-risk based on intended use and domain.', family: 'Classification', severity: 'HIGH', evidence: [{ type: 'config', source: 'ai_inventory', freshness: '30d' }] },
90
+ { id: 'euai-governance', code: 'Art.9', title: 'Risk Management System', description: 'Providers shall establish and implement a risk management system for high-risk AI.', family: 'Governance', severity: 'HIGH', evidence: [{ type: 'policy', source: 'risk_management', freshness: '90d' }] },
91
+ { id: 'euai-data', code: 'Art.10', title: 'Data Governance', description: 'Training data shall be relevant, sufficiently representative, and free of errors.', family: 'Data', severity: 'HIGH', evidence: [{ type: 'config', source: 'data_governance', freshness: '30d' }] },
92
+ { id: 'euai-logging', code: 'Art.12', title: 'Record-Keeping', description: 'High-risk AI systems shall enable automatic recording of events (logs).', family: 'Transparency', severity: 'HIGH', evidence: [{ type: 'log', source: 'ai_logging', freshness: '24h' }] },
93
+ { id: 'euai-transparency', code: 'Art.13', title: 'Transparency', description: 'Providers shall ensure high-risk AI systems are sufficiently transparent.', family: 'Transparency', severity: 'HIGH', evidence: [{ type: 'document', source: 'ai_documentation', freshness: '90d' }] },
94
+ { id: 'euai-human', code: 'Art.14', title: 'Human Oversight', description: 'High-risk AI systems shall be designed to allow effective human oversight.', family: 'Oversight', severity: 'CRITICAL', evidence: [{ type: 'config', source: 'human_oversight', freshness: '30d' }] },
95
+ { id: 'euai-accuracy', code: 'Art.15', title: 'Accuracy and Robustness', description: 'High-risk AI systems shall be designed to achieve appropriate levels of accuracy.', family: 'Performance', severity: 'HIGH', evidence: [{ type: 'scan', source: 'model_testing', freshness: '30d' }] },
96
+ ],
97
+ },
98
+ dora: {
99
+ code: 'dora',
100
+ version: '2025',
101
+ title: 'Digital Operational Resilience Act',
102
+ issuer: 'European Union',
103
+ publishedAt: '2022-12-14',
104
+ effectiveAt: '2025-01-17',
105
+ controls: [
106
+ { id: 'dora-ict-5', code: 'ICT-5', title: 'ICT Asset Management', description: 'Financial entities shall maintain inventories of all ICT assets.', family: 'ICT Risk Management', severity: 'HIGH', evidence: [{ type: 'config', source: 'asset_inventory', freshness: '7d' }] },
107
+ { id: 'dora-ict-6', code: 'ICT-6', title: 'Configuration Management', description: 'Financial entities shall establish and implement configuration management processes.', family: 'ICT Risk Management', severity: 'HIGH', evidence: [{ type: 'config', source: 'config_management', freshness: '7d' }] },
108
+ { id: 'dora-ict-7', code: 'ICT-7', title: 'Vulnerability Management', description: 'Financial entities shall have in place a vulnerability management and threat monitoring process.', family: 'ICT Risk Management', severity: 'CRITICAL', evidence: [{ type: 'scan', source: 'vulnerability_scanner', freshness: '7d' }] },
109
+ { id: 'dora-ict-9', code: 'ICT-9', title: 'Monitoring and Logging', description: 'Financial entities shall continuously monitor the operation of ICT systems.', family: 'ICT Risk Management', severity: 'HIGH', evidence: [{ type: 'log', source: 'siem', freshness: '24h' }] },
110
+ { id: 'dora-ict-10', code: 'ICT-10', title: 'Backup and Recovery', description: 'Financial entities shall establish and implement backup, restoration, and recovery procedures.', family: 'ICT Risk Management', severity: 'HIGH', evidence: [{ type: 'config', source: 'backup_system', freshness: '7d' }] },
111
+ { id: 'dora-ict-17', code: 'ICT-17', title: 'ICT Third-Party Risk', description: 'Financial entities shall manage ICT third-party risk.', family: 'Third-Party', severity: 'HIGH', evidence: [{ type: 'policy', source: 'vendor_assessments', freshness: '90d' }] },
112
+ ],
113
+ },
114
+ nis2: {
115
+ code: 'nis2',
116
+ version: '2024',
117
+ title: 'NIS2 Directive',
118
+ issuer: 'European Union',
119
+ publishedAt: '2023-01-16',
120
+ effectiveAt: '2024-10-17',
121
+ controls: [
122
+ { id: 'nis2-art21', code: 'Art.21', title: 'Cybersecurity Risk Management', description: 'Essential and important entities shall implement appropriate technical and organizational measures.', family: 'Risk Management', severity: 'HIGH', evidence: [{ type: 'policy', source: 'risk_management', freshness: '90d' }] },
123
+ { id: 'nis2-art21-2', code: 'Art.21(2)', title: 'Incident Handling', description: 'Establish and exercise incident handling capabilities.', family: 'Incident Response', severity: 'HIGH', evidence: [{ type: 'config', source: 'incident_response', freshness: '90d' }] },
124
+ { id: 'nis2-art21-3', code: 'Art.21(3)', title: 'Business Continuity', description: 'Implement policies on business continuity and crisis management.', family: 'Resilience', severity: 'HIGH', evidence: [{ type: 'config', source: 'bcp_plan', freshness: '90d' }] },
125
+ { id: 'nis2-art21-5', code: 'Art.21(5)', title: 'Security of Procurement', description: 'Implement cybersecurity hygiene policies and ICT training.', family: 'Supply Chain', severity: 'MEDIUM', evidence: [{ type: 'certificate', source: 'training_system', freshness: '365d' }] },
126
+ { id: 'nis2-art21-6', code: 'Art.21(6)', title: 'Third-Party Security', description: 'Ensure ICT service provider security measures.', family: 'Supply Chain', severity: 'HIGH', evidence: [{ type: 'policy', source: 'vendor_assessments', freshness: '90d' }] },
127
+ ],
128
+ },
129
+ hipaa: { code: 'hipaa', version: '2013', title: 'HIPAA Security Rule', issuer: 'HHS', publishedAt: '2013-01-01', effectiveAt: '2013-01-01', controls: [] },
130
+ 'pci-dss': { code: 'pci-dss', version: '4.0', title: 'PCI DSS v4.0', issuer: 'PCI SSC', publishedAt: '2022-03-31', effectiveAt: '2024-03-31', controls: [] },
131
+ fedramp: { code: 'fedramp', version: '2024', title: 'FedRAMP Baseline', issuer: 'FedRAMP', publishedAt: '2024-01-01', effectiveAt: '2024-01-01', controls: [] },
132
+ cmmc: { code: 'cmmc', version: '2.0', title: 'Cybersecurity Maturity Model Certification 2.0', issuer: 'DoD', publishedAt: '2024-01-01', effectiveAt: '2024-01-01', controls: [] },
133
+ gdpr: { code: 'gdpr', version: '2016', title: 'General Data Protection Regulation', issuer: 'European Union', publishedAt: '2016-04-27', effectiveAt: '2018-05-25', controls: [] },
134
+ lgpd: { code: 'lgpd', version: '2020', title: 'Lei Geral de Protecao de Dados', issuer: 'Brazil', publishedAt: '2020-09-18', effectiveAt: '2020-09-18', controls: [] },
135
+ pipl: { code: 'pipl', version: '2021', title: 'Personal Information Protection Law', issuer: 'China', publishedAt: '2021-08-20', effectiveAt: '2021-11-01', controls: [] },
136
+ tisax: { code: 'tisax', version: '2023', title: 'Trusted Information Security Assessment Exchange', issuer: 'ENX', publishedAt: '2023-01-01', effectiveAt: '2023-01-01', controls: [] },
137
+ popia: { code: 'popia', version: '2021', title: 'Protection of Personal Information Act', issuer: 'South Africa', publishedAt: '2021-07-01', effectiveAt: '2021-07-01', controls: [] },
138
+ };
139
+ const DEFAULT_CROSSWALKS = [
140
+ // Original mappings
141
+ { sourceFramework: 'iso27001', sourceControl: 'A.8.2', targetFramework: 'soc2', targetControl: 'CC6.1', relationship: 'equivalent', confidence: 0.95 },
142
+ { sourceFramework: 'iso27001', sourceControl: 'A.8.3', targetFramework: 'soc2', targetControl: 'CC6.3', relationship: 'equivalent', confidence: 0.9 },
143
+ { sourceFramework: 'iso27001', sourceControl: 'A.8.16', targetFramework: 'soc2', targetControl: 'CC7.2', relationship: 'equivalent', confidence: 0.92 },
144
+ { sourceFramework: 'iso27001', sourceControl: 'A.8.5', targetFramework: 'nist-csf', targetControl: 'PR.AC', relationship: 'equivalent', confidence: 0.88 },
145
+ { sourceFramework: 'iso42001', sourceControl: 'A.6.1', targetFramework: 'nist-csf', targetControl: 'ID.RA', relationship: 'equivalent', confidence: 0.85 },
146
+ { sourceFramework: 'iso42001', sourceControl: 'A.8.2', targetFramework: 'iso27001', targetControl: 'A.5.1', relationship: 'superset', confidence: 0.82 },
147
+ { sourceFramework: 'soc2', sourceControl: 'CC7.2', targetFramework: 'dora', targetControl: 'ICT-9', relationship: 'equivalent', confidence: 0.9 },
148
+ { sourceFramework: 'nist-csf', sourceControl: 'ID.AM', targetFramework: 'dora', targetControl: 'ICT-5', relationship: 'equivalent', confidence: 0.87 },
149
+ { sourceFramework: 'eu-ai-act', sourceControl: 'Art.14', targetFramework: 'iso42001', targetControl: 'A.7.1', relationship: 'stronger', confidence: 0.78 },
150
+ { sourceFramework: 'iso27001', sourceControl: 'A.5.3', targetFramework: 'soc2', targetControl: 'CC6.1', relationship: 'subset', confidence: 0.8 },
151
+ { sourceFramework: 'dora', sourceControl: 'ICT-17', targetFramework: 'iso27001', targetControl: 'A.5.2', relationship: 'stronger', confidence: 0.75 },
152
+ // ISO 27001 ↔ ISO 42001 (AI governance layer)
153
+ { sourceFramework: 'iso27001', sourceControl: 'A.5.1', targetFramework: 'iso42001', targetControl: 'A.5.1', relationship: 'equivalent', confidence: 0.90 },
154
+ { sourceFramework: 'iso27001', sourceControl: 'A.5.2', targetFramework: 'iso42001', targetControl: 'A.5.2', relationship: 'equivalent', confidence: 0.90 },
155
+ { sourceFramework: 'iso27001', sourceControl: 'A.6.1', targetFramework: 'iso42001', targetControl: 'A.6.1', relationship: 'equivalent', confidence: 0.88 },
156
+ { sourceFramework: 'iso27001', sourceControl: 'A.8.1', targetFramework: 'iso42001', targetControl: 'A.8.1', relationship: 'subset', confidence: 0.85 },
157
+ { sourceFramework: 'iso27001', sourceControl: 'A.9.1', targetFramework: 'iso42001', targetControl: 'A.9.1', relationship: 'equivalent', confidence: 0.87 },
158
+ { sourceFramework: 'iso27001', sourceControl: 'A.10.1', targetFramework: 'iso42001', targetControl: 'A.10.1', relationship: 'equivalent', confidence: 0.92 },
159
+ { sourceFramework: 'iso27001', sourceControl: 'A.12.1', targetFramework: 'iso42001', targetControl: 'A.12.1', relationship: 'equivalent', confidence: 0.88 },
160
+ { sourceFramework: 'iso27001', sourceControl: 'A.12.4', targetFramework: 'iso42001', targetControl: 'A.12.4', relationship: 'equivalent', confidence: 0.85 },
161
+ // ISO 42001 ↔ EU AI Act
162
+ { sourceFramework: 'iso42001', sourceControl: 'A.6.1', targetFramework: 'eu-ai-act', targetControl: 'Art.9', relationship: 'equivalent', confidence: 0.85 },
163
+ { sourceFramework: 'iso42001', sourceControl: 'A.6.2', targetFramework: 'eu-ai-act', targetControl: 'Art.10', relationship: 'equivalent', confidence: 0.87 },
164
+ { sourceFramework: 'iso42001', sourceControl: 'A.7.1', targetFramework: 'eu-ai-act', targetControl: 'Art.11', relationship: 'equivalent', confidence: 0.88 },
165
+ { sourceFramework: 'iso42001', sourceControl: 'A.7.2', targetFramework: 'eu-ai-act', targetControl: 'Art.12', relationship: 'equivalent', confidence: 0.90 },
166
+ { sourceFramework: 'iso42001', sourceControl: 'A.8.1', targetFramework: 'eu-ai-act', targetControl: 'Art.13', relationship: 'equivalent', confidence: 0.88 },
167
+ { sourceFramework: 'iso42001', sourceControl: 'A.8.2', targetFramework: 'eu-ai-act', targetControl: 'Art.14', relationship: 'equivalent', confidence: 0.92 },
168
+ { sourceFramework: 'iso42001', sourceControl: 'A.9.1', targetFramework: 'eu-ai-act', targetControl: 'Art.15', relationship: 'subset', confidence: 0.83 },
169
+ { sourceFramework: 'iso42001', sourceControl: 'A.10.1', targetFramework: 'eu-ai-act', targetControl: 'Art.16', relationship: 'equivalent', confidence: 0.85 },
170
+ { sourceFramework: 'iso42001', sourceControl: 'A.12.1', targetFramework: 'eu-ai-act', targetControl: 'Art.17', relationship: 'equivalent', confidence: 0.87 },
171
+ { sourceFramework: 'iso42001', sourceControl: 'A.13.1', targetFramework: 'eu-ai-act', targetControl: 'Art.61', relationship: 'equivalent', confidence: 0.82 },
172
+ // ISO 27001 ↔ EU AI Act
173
+ { sourceFramework: 'iso27001', sourceControl: 'A.12.4', targetFramework: 'eu-ai-act', targetControl: 'Art.12', relationship: 'equivalent', confidence: 0.83 },
174
+ { sourceFramework: 'iso27001', sourceControl: 'A.8.2', targetFramework: 'eu-ai-act', targetControl: 'Art.10', relationship: 'subset', confidence: 0.78 },
175
+ // NIST CSF ↔ ISO 42001
176
+ { sourceFramework: 'nist-csf', sourceControl: 'GV.OC', targetFramework: 'iso42001', targetControl: 'A.5.1', relationship: 'equivalent', confidence: 0.87 },
177
+ { sourceFramework: 'nist-csf', sourceControl: 'GV.RM', targetFramework: 'iso42001', targetControl: 'A.6.1', relationship: 'equivalent', confidence: 0.88 },
178
+ { sourceFramework: 'nist-csf', sourceControl: 'ID.AM', targetFramework: 'iso42001', targetControl: 'A.8.1', relationship: 'equivalent', confidence: 0.85 },
179
+ { sourceFramework: 'nist-csf', sourceControl: 'PR.AT', targetFramework: 'iso42001', targetControl: 'A.7.2', relationship: 'equivalent', confidence: 0.82 },
180
+ { sourceFramework: 'nist-csf', sourceControl: 'DE.AE', targetFramework: 'iso42001', targetControl: 'A.13.1', relationship: 'equivalent', confidence: 0.80 },
181
+ // SOC 2 ↔ ISO 27001
182
+ { sourceFramework: 'soc2', sourceControl: 'CC1.1', targetFramework: 'iso27001', targetControl: 'A.5.1', relationship: 'equivalent', confidence: 0.88 },
183
+ { sourceFramework: 'soc2', sourceControl: 'CC2.1', targetFramework: 'iso27001', targetControl: 'A.5.2', relationship: 'equivalent', confidence: 0.85 },
184
+ { sourceFramework: 'soc2', sourceControl: 'CC3.1', targetFramework: 'iso27001', targetControl: 'A.6.1', relationship: 'equivalent', confidence: 0.87 },
185
+ { sourceFramework: 'soc2', sourceControl: 'CC5.1', targetFramework: 'iso27001', targetControl: 'A.8.1', relationship: 'equivalent', confidence: 0.85 },
186
+ { sourceFramework: 'soc2', sourceControl: 'CC6.2', targetFramework: 'iso27001', targetControl: 'A.9.1', relationship: 'equivalent', confidence: 0.90 },
187
+ { sourceFramework: 'soc2', sourceControl: 'CC6.3', targetFramework: 'iso27001', targetControl: 'A.9.2', relationship: 'equivalent', confidence: 0.88 },
188
+ { sourceFramework: 'soc2', sourceControl: 'CC6.6', targetFramework: 'iso27001', targetControl: 'A.13.1', relationship: 'equivalent', confidence: 0.85 },
189
+ { sourceFramework: 'soc2', sourceControl: 'CC6.7', targetFramework: 'iso27001', targetControl: 'A.8.3', relationship: 'equivalent', confidence: 0.88 },
190
+ { sourceFramework: 'soc2', sourceControl: 'CC7.1', targetFramework: 'iso27001', targetControl: 'A.12.6', relationship: 'equivalent', confidence: 0.87 },
191
+ { sourceFramework: 'soc2', sourceControl: 'CC7.4', targetFramework: 'iso27001', targetControl: 'A.16.1', relationship: 'equivalent', confidence: 0.90 },
192
+ { sourceFramework: 'soc2', sourceControl: 'CC8.1', targetFramework: 'iso27001', targetControl: 'A.12.1', relationship: 'equivalent', confidence: 0.85 },
193
+ // SOC 2 ↔ NIST CSF
194
+ { sourceFramework: 'soc2', sourceControl: 'CC6.1', targetFramework: 'nist-csf', targetControl: 'PR.AC-1', relationship: 'equivalent', confidence: 0.90 },
195
+ { sourceFramework: 'soc2', sourceControl: 'CC6.6', targetFramework: 'nist-csf', targetControl: 'PR.PT-3', relationship: 'equivalent', confidence: 0.87 },
196
+ { sourceFramework: 'soc2', sourceControl: 'CC7.2', targetFramework: 'nist-csf', targetControl: 'DE.CM-1', relationship: 'equivalent', confidence: 0.88 },
197
+ { sourceFramework: 'soc2', sourceControl: 'CC7.4', targetFramework: 'nist-csf', targetControl: 'RS.RP-1', relationship: 'equivalent', confidence: 0.85 },
198
+ // GDPR ↔ ISO 27001
199
+ { sourceFramework: 'gdpr', sourceControl: 'Art.25', targetFramework: 'iso27001', targetControl: 'A.8.25', relationship: 'equivalent', confidence: 0.88 },
200
+ { sourceFramework: 'gdpr', sourceControl: 'Art.32', targetFramework: 'iso27001', targetControl: 'A.8.24', relationship: 'equivalent', confidence: 0.87 },
201
+ { sourceFramework: 'gdpr', sourceControl: 'Art.33', targetFramework: 'iso27001', targetControl: 'A.5.24', relationship: 'equivalent', confidence: 0.85 },
202
+ { sourceFramework: 'gdpr', sourceControl: 'Art.35', targetFramework: 'iso27001', targetControl: 'A.8.10', relationship: 'equivalent', confidence: 0.82 },
203
+ // GDPR ↔ SOC 2
204
+ { sourceFramework: 'gdpr', sourceControl: 'Art.32', targetFramework: 'soc2', targetControl: 'CC9.2', relationship: 'equivalent', confidence: 0.83 },
205
+ { sourceFramework: 'gdpr', sourceControl: 'Art.33', targetFramework: 'soc2', targetControl: 'CC7.4', relationship: 'equivalent', confidence: 0.85 },
206
+ // HIPAA ↔ ISO 27001
207
+ { sourceFramework: 'hipaa', sourceControl: '164.312(a)(1)', targetFramework: 'iso27001', targetControl: 'A.9.1', relationship: 'equivalent', confidence: 0.90 },
208
+ { sourceFramework: 'hipaa', sourceControl: '164.312(a)(2)', targetFramework: 'iso27001', targetControl: 'A.9.4', relationship: 'equivalent', confidence: 0.88 },
209
+ { sourceFramework: 'hipaa', sourceControl: '164.312(b)', targetFramework: 'iso27001', targetControl: 'A.12.4', relationship: 'equivalent', confidence: 0.85 },
210
+ { sourceFramework: 'hipaa', sourceControl: '164.312(e)(1)', targetFramework: 'iso27001', targetControl: 'A.10.1', relationship: 'equivalent', confidence: 0.90 },
211
+ // HIPAA ↔ SOC 2
212
+ { sourceFramework: 'hipaa', sourceControl: '164.312(a)(1)', targetFramework: 'soc2', targetControl: 'CC6.1', relationship: 'equivalent', confidence: 0.88 },
213
+ { sourceFramework: 'hipaa', sourceControl: '164.312(b)', targetFramework: 'soc2', targetControl: 'CC7.2', relationship: 'equivalent', confidence: 0.85 },
214
+ // PCI DSS ↔ ISO 27001
215
+ { sourceFramework: 'pci-dss', sourceControl: 'Req-1', targetFramework: 'iso27001', targetControl: 'A.13.1', relationship: 'equivalent', confidence: 0.88 },
216
+ { sourceFramework: 'pci-dss', sourceControl: 'Req-2', targetFramework: 'iso27001', targetControl: 'A.8.8', relationship: 'equivalent', confidence: 0.85 },
217
+ { sourceFramework: 'pci-dss', sourceControl: 'Req-3', targetFramework: 'iso27001', targetControl: 'A.10.1', relationship: 'equivalent', confidence: 0.90 },
218
+ { sourceFramework: 'pci-dss', sourceControl: 'Req-7', targetFramework: 'iso27001', targetControl: 'A.9.1', relationship: 'equivalent', confidence: 0.88 },
219
+ { sourceFramework: 'pci-dss', sourceControl: 'Req-8', targetFramework: 'iso27001', targetControl: 'A.9.2', relationship: 'equivalent', confidence: 0.90 },
220
+ { sourceFramework: 'pci-dss', sourceControl: 'Req-10', targetFramework: 'iso27001', targetControl: 'A.12.4', relationship: 'equivalent', confidence: 0.88 },
221
+ // PCI DSS ↔ SOC 2
222
+ { sourceFramework: 'pci-dss', sourceControl: 'Req-7', targetFramework: 'soc2', targetControl: 'CC6.3', relationship: 'equivalent', confidence: 0.87 },
223
+ { sourceFramework: 'pci-dss', sourceControl: 'Req-8', targetFramework: 'soc2', targetControl: 'CC6.1', relationship: 'equivalent', confidence: 0.88 },
224
+ { sourceFramework: 'pci-dss', sourceControl: 'Req-10', targetFramework: 'soc2', targetControl: 'CC7.2', relationship: 'equivalent', confidence: 0.87 },
225
+ // DORA ↔ ISO 27001
226
+ { sourceFramework: 'dora', sourceControl: 'ICT-1', targetFramework: 'iso27001', targetControl: 'A.5.1', relationship: 'equivalent', confidence: 0.87 },
227
+ { sourceFramework: 'dora', sourceControl: 'ICT-2', targetFramework: 'iso27001', targetControl: 'A.6.1', relationship: 'equivalent', confidence: 0.85 },
228
+ { sourceFramework: 'dora', sourceControl: 'ICT-6', targetFramework: 'iso27001', targetControl: 'A.16.1', relationship: 'equivalent', confidence: 0.88 },
229
+ { sourceFramework: 'dora', sourceControl: 'ICT-7', targetFramework: 'iso27001', targetControl: 'A.17.1', relationship: 'equivalent', confidence: 0.90 },
230
+ { sourceFramework: 'dora', sourceControl: 'ICT-11', targetFramework: 'iso27001', targetControl: 'A.15.1', relationship: 'equivalent', confidence: 0.85 },
231
+ // NIS2 ↔ ISO 27001
232
+ { sourceFramework: 'nis2', sourceControl: 'Art.21-a', targetFramework: 'iso27001', targetControl: 'A.5.1', relationship: 'equivalent', confidence: 0.88 },
233
+ { sourceFramework: 'nis2', sourceControl: 'Art.21-b', targetFramework: 'iso27001', targetControl: 'A.16.1', relationship: 'equivalent', confidence: 0.87 },
234
+ { sourceFramework: 'nis2', sourceControl: 'Art.21-c', targetFramework: 'iso27001', targetControl: 'A.17.1', relationship: 'equivalent', confidence: 0.88 },
235
+ { sourceFramework: 'nis2', sourceControl: 'Art.21-e', targetFramework: 'iso27001', targetControl: 'A.14.1', relationship: 'equivalent', confidence: 0.85 },
236
+ { sourceFramework: 'nis2', sourceControl: 'Art.21-h', targetFramework: 'iso27001', targetControl: 'A.8.8', relationship: 'equivalent', confidence: 0.87 },
237
+ // NIS2 ↔ DORA
238
+ { sourceFramework: 'nis2', sourceControl: 'Art.21-b', targetFramework: 'dora', targetControl: 'ICT-6', relationship: 'equivalent', confidence: 0.90 },
239
+ { sourceFramework: 'nis2', sourceControl: 'Art.21-c', targetFramework: 'dora', targetControl: 'ICT-7', relationship: 'equivalent', confidence: 0.88 },
240
+ // FedRAMP ↔ NIST CSF
241
+ { sourceFramework: 'fedramp', sourceControl: 'AC-1', targetFramework: 'nist-csf', targetControl: 'PR.AC-1', relationship: 'equivalent', confidence: 0.92 },
242
+ { sourceFramework: 'fedramp', sourceControl: 'AC-2', targetFramework: 'nist-csf', targetControl: 'PR.AC-4', relationship: 'equivalent', confidence: 0.90 },
243
+ { sourceFramework: 'fedramp', sourceControl: 'AU-2', targetFramework: 'nist-csf', targetControl: 'DE.CM-3', relationship: 'equivalent', confidence: 0.88 },
244
+ { sourceFramework: 'fedramp', sourceControl: 'AU-3', targetFramework: 'nist-csf', targetControl: 'DE.CM-7', relationship: 'equivalent', confidence: 0.85 },
245
+ { sourceFramework: 'fedramp', sourceControl: 'IR-1', targetFramework: 'nist-csf', targetControl: 'RS.RP-1', relationship: 'equivalent', confidence: 0.88 },
246
+ { sourceFramework: 'fedramp', sourceControl: 'SC-8', targetFramework: 'nist-csf', targetControl: 'PR.DS-2', relationship: 'equivalent', confidence: 0.90 },
247
+ // FedRAMP ↔ ISO 27001
248
+ { sourceFramework: 'fedramp', sourceControl: 'AC-1', targetFramework: 'iso27001', targetControl: 'A.9.1', relationship: 'equivalent', confidence: 0.90 },
249
+ { sourceFramework: 'fedramp', sourceControl: 'AU-2', targetFramework: 'iso27001', targetControl: 'A.12.4', relationship: 'equivalent', confidence: 0.88 },
250
+ { sourceFramework: 'fedramp', sourceControl: 'IR-1', targetFramework: 'iso27001', targetControl: 'A.16.1', relationship: 'equivalent', confidence: 0.88 },
251
+ { sourceFramework: 'fedramp', sourceControl: 'SC-8', targetFramework: 'iso27001', targetControl: 'A.10.1', relationship: 'equivalent', confidence: 0.90 },
252
+ ];
253
+ function parseSeverity(sev) {
254
+ if (!sev)
255
+ return 'MEDIUM';
256
+ const s = sev.toUpperCase();
257
+ if (s === 'CRITICAL')
258
+ return 'CRITICAL';
259
+ if (s === 'HIGH')
260
+ return 'HIGH';
261
+ if (s === 'LOW')
262
+ return 'LOW';
263
+ return 'MEDIUM';
264
+ }
265
+ function buildPolicyAST(control) {
266
+ const deps = control.dependencies ?? [];
267
+ const evidence = control.evidence ?? [];
268
+ if (deps.length === 0 && evidence.length === 0) {
269
+ return {
270
+ type: 'atom',
271
+ atom: { subject: control.id, predicate: 'satisfied_by', object: 'auto_evidence', constraints: {} },
272
+ };
273
+ }
274
+ const atoms = evidence.map((e) => ({
275
+ type: 'atom',
276
+ atom: { subject: control.id, predicate: 'has_evidence', object: e.type, constraints: { source: e.source, freshness: e.freshness } },
277
+ }));
278
+ deps.forEach((dep) => {
279
+ atoms.push({
280
+ type: 'atom',
281
+ atom: { subject: control.id, predicate: 'depends_on', object: dep, constraints: {} },
282
+ });
283
+ });
284
+ return { type: 'conjunction', children: atoms };
285
+ }
286
+ function hashAST(ast) {
287
+ const content = JSON.stringify({ controls: ast.controls.map((c) => ({ id: c.id, code: c.code, ast: c.ast })) });
288
+ return createHash('sha256').update(content).digest('hex');
289
+ }
290
+ export class RegulationASTCompiler {
291
+ asts = new Map();
292
+ crosswalks;
293
+ constructor(crosswalks) {
294
+ this.crosswalks = crosswalks ?? DEFAULT_CROSSWALKS;
295
+ for (const [code, def] of Object.entries(BUILTIN_FRAMEWORKS)) {
296
+ this.compileFramework(def);
297
+ }
298
+ }
299
+ compileFramework(def) {
300
+ const controls = def.controls.map((ctrl) => ({
301
+ id: ctrl.id,
302
+ code: ctrl.code,
303
+ title: ctrl.title,
304
+ ast: buildPolicyAST(ctrl),
305
+ crossRefs: this.crosswalks
306
+ .filter((cw) => cw.sourceFramework === def.code && cw.sourceControl === ctrl.code)
307
+ .map((cw) => `${cw.targetFramework}:${cw.targetControl}`),
308
+ evidenceChain: {
309
+ required: ctrl.evidence ?? [],
310
+ collected: [],
311
+ validUntil: new Date(Date.now() + 24 * 60 * 60 * 1000).toISOString(),
312
+ },
313
+ }));
314
+ const metadata = {
315
+ title: def.title,
316
+ issuer: def.issuer,
317
+ publishedAt: def.publishedAt,
318
+ effectiveAt: def.effectiveAt,
319
+ totalControls: controls.length,
320
+ families: [...new Set(def.controls.map((c) => c.family))],
321
+ };
322
+ const ast = {
323
+ id: `${def.code}:${def.version}`,
324
+ framework: def.code,
325
+ version: def.version,
326
+ compiledAt: new Date().toISOString(),
327
+ controls,
328
+ crosswalks: this.crosswalks.filter((cw) => cw.sourceFramework === def.code || cw.targetFramework === def.code),
329
+ metadata,
330
+ };
331
+ this.asts.set(def.code, ast);
332
+ return ast;
333
+ }
334
+ getAST(framework) {
335
+ return this.asts.get(framework);
336
+ }
337
+ getAllASTs() {
338
+ return Array.from(this.asts.values());
339
+ }
340
+ compileNaturalLanguage(framework, text) {
341
+ const existing = this.asts.get(framework);
342
+ if (!existing)
343
+ throw new Error(`Framework ${framework} not compiled`);
344
+ const hash = createHash('sha256').update(text).digest('hex').slice(0, 8);
345
+ const newControl = {
346
+ id: `${framework}-gen-${hash}`,
347
+ code: `GEN-${hash.toUpperCase()}`,
348
+ title: text.slice(0, 100),
349
+ ast: {
350
+ type: 'implication',
351
+ children: [
352
+ { type: 'atom', atom: { subject: 'generated', predicate: 'input', object: text, constraints: {} } },
353
+ { type: 'atom', atom: { subject: 'generated', predicate: 'enforced_by', object: framework, constraints: {} } },
354
+ ],
355
+ },
356
+ crossRefs: [],
357
+ evidenceChain: { required: [{ type: 'automated', source: 'generated', freshness: '24h' }], collected: [], validUntil: '' },
358
+ };
359
+ existing.controls.push(newControl);
360
+ return newControl;
361
+ }
362
+ findEquivalent(framework, controlCode) {
363
+ return this.crosswalks.filter((cw) => cw.sourceFramework === framework && cw.sourceControl === controlCode && cw.relationship === 'equivalent');
364
+ }
365
+ findStronger(framework, controlCode) {
366
+ return this.crosswalks.filter((cw) => cw.targetFramework === framework && cw.targetControl === controlCode && cw.relationship === 'stronger');
367
+ }
368
+ deduplicateEvidence(orgId, framework, evidenceMap) {
369
+ const ast = this.asts.get(framework);
370
+ if (!ast)
371
+ return evidenceMap;
372
+ const deduplicated = new Map();
373
+ const evidenceOwnership = new Map();
374
+ for (const control of ast.controls) {
375
+ const existingEvidence = evidenceMap.get(control.id) ?? [];
376
+ const canonicalEvidence = existingEvidence[0];
377
+ if (!canonicalEvidence || evidenceOwnership.has(canonicalEvidence))
378
+ continue;
379
+ evidenceOwnership.set(canonicalEvidence, control.id);
380
+ deduplicated.set(control.id, existingEvidence);
381
+ }
382
+ return deduplicated;
383
+ }
384
+ getHash(framework) {
385
+ const ast = this.asts.get(framework);
386
+ return ast ? hashAST(ast) : undefined;
387
+ }
388
+ }
389
+ /**
390
+ * Given a control in one framework, returns all equivalent controls across other frameworks.
391
+ * Performs a bidirectional search across DEFAULT_CROSSWALKS, so callers do not need to
392
+ * know which direction a mapping was originally authored in.
393
+ *
394
+ * Results are sorted descending by confidence so the caller can short-circuit at a threshold.
395
+ */
396
+ export function getEvidenceDeduplicationMap(framework, controlId) {
397
+ const results = [];
398
+ for (const cw of DEFAULT_CROSSWALKS) {
399
+ if (cw.sourceFramework === framework && cw.sourceControl === controlId) {
400
+ results.push({ framework: cw.targetFramework, control: cw.targetControl, confidence: cw.confidence, relationship: cw.relationship });
401
+ }
402
+ if (cw.targetFramework === framework && cw.targetControl === controlId) {
403
+ results.push({ framework: cw.sourceFramework, control: cw.sourceControl, confidence: cw.confidence, relationship: cw.relationship });
404
+ }
405
+ }
406
+ return results.sort((a, b) => b.confidence - a.confidence);
407
+ }
408
+ //# sourceMappingURL=RegulationASTCompiler.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RegulationASTCompiler.js","sourceRoot":"","sources":["../../src/compiler/RegulationASTCompiler.ts"],"names":[],"mappings":"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"}