@grc-claw/compliance-orchestrator 0.8.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.
@@ -0,0 +1 @@
1
+ {"version":3,"file":"NeuroSymbolicReasoner.d.ts","sourceRoot":"","sources":["../../src/reasoner/NeuroSymbolicReasoner.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,352 @@
1
+ export class NeuroSymbolicReasoner {
2
+ asts;
3
+ constraintCache = new Map();
4
+ constructor(asts) {
5
+ this.asts = asts;
6
+ }
7
+ async reason(context) {
8
+ const ast = this.asts.get(context.framework);
9
+ if (!ast)
10
+ throw new Error(`Framework ${context.framework} not compiled`);
11
+ const controlStatuses = [];
12
+ const drift = [];
13
+ const risks = [];
14
+ for (const control of ast.controls) {
15
+ const result = this.evaluateControl(control, context);
16
+ const evidence = context.currentEvidence.get(control.id) ?? [];
17
+ controlStatuses.push({
18
+ controlId: control.id,
19
+ status: this.mapDecisionToStatus(result.decision),
20
+ lastVerified: new Date().toISOString(),
21
+ evidenceCount: evidence.length,
22
+ score: result.confidence * 100,
23
+ issues: result.decision === 'non-compliant'
24
+ ? [{
25
+ id: `issue-${control.id}-${Date.now()}`,
26
+ severity: control.severity === 'CRITICAL' ? 'CRITICAL' : 'HIGH',
27
+ description: `Control ${control.code} is non-compliant: ${result.proof.join('; ')}`,
28
+ detectedAt: new Date().toISOString(),
29
+ }]
30
+ : [],
31
+ });
32
+ const risk = this.assessRisk(control, result, context);
33
+ risks.push(risk);
34
+ if (context.previousState) {
35
+ const prevStatus = context.previousState.controlStatuses.find((s) => s.controlId === control.id);
36
+ if (prevStatus && prevStatus.status === 'compliant' && result.decision !== 'compliant') {
37
+ drift.push({
38
+ id: `drift-${control.id}-${Date.now()}`,
39
+ controlId: control.id,
40
+ detectedAt: new Date().toISOString(),
41
+ type: 'policy',
42
+ before: prevStatus.status,
43
+ after: result.decision,
44
+ severity: control.severity ?? 'MEDIUM',
45
+ autoRemediated: false,
46
+ });
47
+ }
48
+ }
49
+ }
50
+ const compliant = controlStatuses.filter((s) => s.status === 'compliant').length;
51
+ const total = controlStatuses.length;
52
+ const overallScore = total > 0 ? (compliant / total) * 100 : 0;
53
+ return {
54
+ orgId: context.orgId,
55
+ timestamp: new Date().toISOString(),
56
+ framework: context.framework,
57
+ overallScore,
58
+ controlStatuses,
59
+ drift,
60
+ risks,
61
+ };
62
+ }
63
+ evaluateControl(control, context) {
64
+ const proof = [];
65
+ const reasoningPath = [];
66
+ const obligations = [];
67
+ const discharged = [];
68
+ const remaining = [];
69
+ reasoningPath.push(`Evaluating control ${control.code}: ${control.title}`);
70
+ const evidence = context.currentEvidence.get(control.id) ?? [];
71
+ const validEvidence = evidence.filter((e) => e.valid);
72
+ if (validEvidence.length === 0) {
73
+ proof.push(`No valid evidence found for control ${control.code}`);
74
+ remaining.push(`evidence-${control.id}`);
75
+ return {
76
+ control: control.id,
77
+ decision: 'unknown',
78
+ confidence: 0,
79
+ proof,
80
+ reasoningPath,
81
+ symbolicProof: { obligations: [], discharged: [], remaining, valid: false },
82
+ };
83
+ }
84
+ reasoningPath.push(`Found ${validEvidence.length} valid evidence items`);
85
+ let satisfied = true;
86
+ let partiallySatisfied = false;
87
+ for (const obligation of this.symbolicCheck(control, context)) {
88
+ obligations.push(obligation);
89
+ if (obligation.status === 'proven') {
90
+ discharged.push(obligation.id);
91
+ proof.push(`Obligation ${obligation.id} proven: ${obligation.formula}`);
92
+ }
93
+ else if (obligation.status === 'disproven') {
94
+ satisfied = false;
95
+ proof.push(`Obligation ${obligation.id} violated: ${obligation.formula}`);
96
+ }
97
+ else {
98
+ partiallySatisfied = true;
99
+ }
100
+ }
101
+ const confidence = this.calculateConfidence(control, evidence, obligations, context);
102
+ const decision = satisfied ? 'compliant' : partiallySatisfied ? 'partial' : 'non-compliant';
103
+ return {
104
+ control: control.id,
105
+ decision,
106
+ confidence,
107
+ proof,
108
+ reasoningPath,
109
+ symbolicProof: { obligations, discharged, remaining, valid: satisfied },
110
+ };
111
+ }
112
+ symbolicCheck(control, context) {
113
+ const obligations = [];
114
+ const { configurationState: state } = context;
115
+ switch (control.code) {
116
+ case 'A.8.2': // Privileged Access Rights
117
+ obligations.push({
118
+ id: 'priv-access-mfa',
119
+ formula: 'all_privileged_users.mfa_enabled = true',
120
+ status: state.iam.mfaEnabled ? 'proven' : 'disproven',
121
+ });
122
+ obligations.push({
123
+ id: 'priv-access-count',
124
+ formula: 'count(privileged_users) <= threshold',
125
+ status: state.iam.privilegedUsers.length <= 10 ? 'proven' : 'disproven',
126
+ });
127
+ obligations.push({
128
+ id: 'priv-access-rotation',
129
+ formula: 'password_age <= 90_days',
130
+ status: this.isPasswordFresh(state.iam.lastPasswordRotation, 90) ? 'proven' : 'disproven',
131
+ });
132
+ break;
133
+ case 'A.8.5': // Secure Authentication
134
+ obligations.push({
135
+ id: 'auth-mfa',
136
+ formula: 'mfa_enforcement_rate >= 95_percent',
137
+ status: state.iam.mfaEnforcementRate >= 0.95 ? 'proven' : 'disproven',
138
+ });
139
+ obligations.push({
140
+ id: 'auth-session',
141
+ formula: 'session_timeout <= 15_minutes',
142
+ status: state.iam.sessionTimeout <= 900 ? 'proven' : 'disproven',
143
+ });
144
+ break;
145
+ case 'A.8.9': // Configuration Management
146
+ obligations.push({
147
+ id: 'config-firewall',
148
+ formula: 'firewall_rules.count > 0',
149
+ status: state.network.firewallRules > 0 ? 'proven' : 'disproven',
150
+ });
151
+ obligations.push({
152
+ id: 'config-segmentation',
153
+ formula: 'network_segmentation.enabled = true',
154
+ status: state.network.segmentationEnabled ? 'proven' : 'disproven',
155
+ });
156
+ obligations.push({
157
+ id: 'config-tls',
158
+ formula: 'tls_version >= 1.2',
159
+ status: ['1.2', '1.3'].includes(state.network.tlsVersion) ? 'proven' : 'disproven',
160
+ });
161
+ break;
162
+ case 'A.8.16': // Monitoring Activities
163
+ obligations.push({
164
+ id: 'mon-siem',
165
+ formula: 'siem.enabled = true',
166
+ status: state.monitoring.siemEnabled ? 'proven' : 'disproven',
167
+ });
168
+ obligations.push({
169
+ id: 'mon-retention',
170
+ formula: 'log_retention_days >= 90',
171
+ status: state.monitoring.logRetentionDays >= 90 ? 'proven' : 'disproven',
172
+ });
173
+ obligations.push({
174
+ id: 'mon-alerting',
175
+ formula: 'alerting.enabled = true',
176
+ status: state.monitoring.alertingEnabled ? 'proven' : 'disproven',
177
+ });
178
+ break;
179
+ case 'CC6.1': // SOC 2 Logical Access
180
+ obligations.push({
181
+ id: 'soc2-access-mfa',
182
+ formula: 'mfa_enabled = true',
183
+ status: state.iam.mfaEnabled ? 'proven' : 'disproven',
184
+ });
185
+ obligations.push({
186
+ id: 'soc2-access-rbac',
187
+ formula: 'rbac_policy_version != null',
188
+ status: state.iam.rbacPolicyVersion.length > 0 ? 'proven' : 'disproven',
189
+ });
190
+ obligations.push({
191
+ id: 'soc2-access-encryption',
192
+ formula: 'encryption_in_transit = true',
193
+ status: state.data.encryptionInTransit ? 'proven' : 'disproven',
194
+ });
195
+ break;
196
+ case 'CC7.2': // SOC 2 Security Event Monitoring
197
+ obligations.push({
198
+ id: 'soc2-monitor-siem',
199
+ formula: 'siem_enabled = true',
200
+ status: state.monitoring.siemEnabled ? 'proven' : 'disproven',
201
+ });
202
+ obligations.push({
203
+ id: 'soc2-monitor-coverage',
204
+ formula: 'monitoring_coverage >= 80_percent',
205
+ status: state.monitoring.monitoringCoverage >= 80 ? 'proven' : 'disproven',
206
+ });
207
+ break;
208
+ case 'A.6.1': // ISO 42001 AI Risk Assessment
209
+ obligations.push({
210
+ id: 'ai-risk-assessment',
211
+ formula: 'risk_assessment_documented = true',
212
+ status: context.currentEvidence.has(control.id) ? 'proven' : 'disproven',
213
+ });
214
+ break;
215
+ case 'PR.AC': // NIST CSF Identity Management
216
+ obligations.push({
217
+ id: 'nist-iam-mfa',
218
+ formula: 'mfa_enforced = true',
219
+ status: state.iam.mfaEnabled ? 'proven' : 'disproven',
220
+ });
221
+ obligations.push({
222
+ id: 'nist-iam-session',
223
+ formula: 'session_timeout <= 900',
224
+ status: state.iam.sessionTimeout <= 900 ? 'proven' : 'disproven',
225
+ });
226
+ break;
227
+ case 'DE.CM': // NIST CSF Continuous Monitoring
228
+ obligations.push({
229
+ id: 'nist-monitor',
230
+ formula: 'siem_enabled AND alerting_enabled',
231
+ status: (state.monitoring.siemEnabled && state.monitoring.alertingEnabled) ? 'proven' : 'disproven',
232
+ });
233
+ break;
234
+ default:
235
+ obligations.push({
236
+ id: `default-${control.id}`,
237
+ formula: 'evidence_count > 0',
238
+ status: context.currentEvidence.has(control.id) ? 'proven' : 'disproven',
239
+ });
240
+ }
241
+ return obligations;
242
+ }
243
+ isPasswordFresh(rotationDate, maxAgeDays) {
244
+ const rotation = new Date(rotationDate);
245
+ const now = new Date();
246
+ const ageDays = (now.getTime() - rotation.getTime()) / (1000 * 60 * 60 * 24);
247
+ return ageDays <= maxAgeDays;
248
+ }
249
+ calculateConfidence(control, evidence, obligations, _context) {
250
+ let confidence = 0;
251
+ const validEvidence = evidence.filter((e) => e.valid);
252
+ const evidenceScore = Math.min(validEvidence.length / 3, 1) * 0.4;
253
+ confidence += evidenceScore;
254
+ const proven = obligations.filter((o) => o.status === 'proven').length;
255
+ const total = obligations.length;
256
+ const obligationScore = total > 0 ? (proven / total) * 0.5 : 0.5;
257
+ confidence += obligationScore;
258
+ const freshness = this.evidenceFreshnessScore(validEvidence);
259
+ confidence += freshness * 0.1;
260
+ return Math.min(confidence, 1);
261
+ }
262
+ evidenceFreshnessScore(evidence) {
263
+ if (evidence.length === 0)
264
+ return 0;
265
+ const now = Date.now();
266
+ const ages = evidence.map((e) => {
267
+ const age = (now - new Date(e.timestamp).getTime()) / (1000 * 60 * 60 * 24);
268
+ return age;
269
+ });
270
+ const avgAge = ages.reduce((a, b) => a + b, 0) / ages.length;
271
+ if (avgAge <= 7)
272
+ return 1;
273
+ if (avgAge <= 30)
274
+ return 0.8;
275
+ if (avgAge <= 90)
276
+ return 0.6;
277
+ if (avgAge <= 365)
278
+ return 0.4;
279
+ return 0.2;
280
+ }
281
+ mapDecisionToStatus(decision) {
282
+ switch (decision) {
283
+ case 'compliant': return 'compliant';
284
+ case 'non-compliant': return 'non-compliant';
285
+ case 'partial': return 'partial';
286
+ default: return 'not-tested';
287
+ }
288
+ }
289
+ assessRisk(control, result, context) {
290
+ const severityMap = { LOW: 1, MEDIUM: 3, HIGH: 7, CRITICAL: 10 };
291
+ const baseRisk = severityMap[control.severity] ?? 3;
292
+ const complianceRisk = result.decision === 'compliant' ? 0 : result.decision === 'partial' ? 3 : 7;
293
+ const likelihood = complianceRisk / 10;
294
+ const blastRadius = this.calculateBlastRadius(control, context);
295
+ const impact = baseRisk * blastRadius;
296
+ const riskScore = (likelihood * 50 + impact * 50) / 10;
297
+ const factors = [];
298
+ if (result.decision === 'non-compliant')
299
+ factors.push('control_non_compliant');
300
+ if (control.severity === 'CRITICAL')
301
+ factors.push('critical_severity');
302
+ if (blastRadius > 0.7)
303
+ factors.push('high_blast_radius');
304
+ if (context.previousState) {
305
+ const prev = context.previousState.controlStatuses.find((s) => s.controlId === control.id);
306
+ if (prev && prev.status === 'compliant')
307
+ factors.push('regression_detected');
308
+ }
309
+ return {
310
+ controlId: control.id,
311
+ riskScore,
312
+ blastRadius,
313
+ likelihood,
314
+ impact,
315
+ factors,
316
+ };
317
+ }
318
+ calculateBlastRadius(control, context) {
319
+ const ast = this.asts.get(context.framework);
320
+ if (!ast)
321
+ return 0.5;
322
+ const dependent = ast.controls.filter((c) => c.crossRefs.some((ref) => ref.includes(control.code)));
323
+ const total = ast.controls.length;
324
+ return Math.min(dependent.length / Math.max(total, 1) + 0.1, 1);
325
+ }
326
+ async detectDrift(context) {
327
+ if (!context.previousState)
328
+ return [];
329
+ const current = await this.reason(context);
330
+ const drifts = [];
331
+ for (const prev of context.previousState.controlStatuses) {
332
+ const curr = current.controlStatuses.find((s) => s.controlId === prev.controlId);
333
+ if (curr && prev.status === 'compliant' && curr.status !== 'compliant') {
334
+ drifts.push({
335
+ id: `drift-${prev.controlId}-${Date.now()}`,
336
+ controlId: prev.controlId,
337
+ detectedAt: new Date().toISOString(),
338
+ type: 'policy',
339
+ before: prev.status,
340
+ after: curr.status,
341
+ severity: 'HIGH',
342
+ autoRemediated: false,
343
+ });
344
+ }
345
+ }
346
+ return drifts;
347
+ }
348
+ async synthesizeRemediation(drift) {
349
+ return `REMEDIATION for ${drift.controlId}: Auto-remediation plan for ${drift.type} drift from ${drift.before} to ${drift.after}. Severity: ${drift.severity}. Apply configuration change and verify evidence.`;
350
+ }
351
+ }
352
+ //# sourceMappingURL=NeuroSymbolicReasoner.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"NeuroSymbolicReasoner.js","sourceRoot":"","sources":["../../src/reasoner/NeuroSymbolicReasoner.ts"],"names":[],"mappings":"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"}
package/dist/test.d.ts ADDED
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"test.d.ts","sourceRoot":"","sources":["../src/test.ts"],"names":[],"mappings":""}
package/dist/test.js ADDED
@@ -0,0 +1,117 @@
1
+ import { RegulationASTCompiler } from './compiler/RegulationASTCompiler.js';
2
+ import { NeuroSymbolicReasoner } from './reasoner/NeuroSymbolicReasoner.js';
3
+ import { UnifiedComplianceGraph } from './graph/UnifiedComplianceGraph.js';
4
+ import { ComplianceSuperOrchestrator } from './index.js';
5
+ async function testRegulationASTCompiler() {
6
+ console.log('\n=== Testing Regulation AST Compiler ===');
7
+ const compiler = new RegulationASTCompiler();
8
+ const isoAST = compiler.getAST('iso27001');
9
+ console.log(`ISO 27001 AST compiled: ${isoAST?.controls.length} controls`);
10
+ console.log(` Families: ${isoAST?.metadata.families.join(', ')}`);
11
+ console.log(` Crosswalks: ${isoAST?.crosswalks.length}`);
12
+ const soc2AST = compiler.getAST('soc2');
13
+ console.log(`SOC 2 AST compiled: ${soc2AST?.controls.length} controls`);
14
+ const iso42001AST = compiler.getAST('iso42001');
15
+ console.log(`ISO 42001 AST compiled: ${iso42001AST?.controls.length} controls`);
16
+ const euAiAST = compiler.getAST('eu-ai-act');
17
+ console.log(`EU AI Act AST compiled: ${euAiAST?.controls.length} controls`);
18
+ const doraAST = compiler.getAST('dora');
19
+ console.log(`DORA AST compiled: ${doraAST?.controls.length} controls`);
20
+ const equiv = compiler.findEquivalent('iso27001', 'A.8.2');
21
+ console.log(`Crosswalk A.8.2 → SOC 2: ${equiv.map((e) => `${e.targetFramework}:${e.targetControl}`).join(', ')}`);
22
+ const nl = compiler.compileNaturalLanguage('iso27001', 'Organization shall implement AI model governance');
23
+ console.log(`Natural language compiled: ${nl.id}`);
24
+ console.log('✓ Regulation AST Compiler tests passed');
25
+ }
26
+ async function testNeuroSymbolicReasoner() {
27
+ console.log('\n=== Testing Neuro-Symbolic Reasoner ===');
28
+ const compiler = new RegulationASTCompiler();
29
+ const asts = compiler.getAllASTs();
30
+ const astMap = new Map(asts.map((a) => [a.framework, a]));
31
+ const reasoner = new NeuroSymbolicReasoner(astMap);
32
+ const context = {
33
+ orgId: 'test-org',
34
+ framework: 'iso27001',
35
+ currentEvidence: new Map([
36
+ ['iso-a.8.2', [{ id: 'ev-1', controlId: 'iso-a.8.2', type: 'config', hash: 'abc123', timestamp: new Date().toISOString(), valid: true }]],
37
+ ['iso-a.8.5', [{ id: 'ev-2', controlId: 'iso-a.8.5', type: 'config', hash: 'def456', timestamp: new Date().toISOString(), valid: true }]],
38
+ ]),
39
+ configurationState: {
40
+ iam: { mfaEnabled: true, privilegedUsers: ['admin', 'ops'], sessionTimeout: 900, lastPasswordRotation: new Date(Date.now() - 30 * 24 * 60 * 60 * 1000).toISOString(), rbacPolicyVersion: '2.0', mfaEnforcementRate: 0.98 },
41
+ network: { firewallRules: 15, segmentationEnabled: true, idsEnabled: true, tlsVersion: '1.3', publicEndpoints: [] },
42
+ data: { encryptionAtRest: true, encryptionInTransit: true, backupEnabled: true, backupFrequency: 'daily', lastBackup: new Date().toISOString(), retentionDays: 90 },
43
+ monitoring: { siemEnabled: true, logRetentionDays: 180, alertingEnabled: true, mttr: 4, monitoringCoverage: 95 },
44
+ physical: { accessControl: true, cctvEnabled: true, environmentalMonitoring: true, visitorManagement: true },
45
+ },
46
+ riskTolerance: 'medium',
47
+ };
48
+ const state = await reasoner.reason(context);
49
+ console.log(`ISO 27001 compliance score: ${state.overallScore.toFixed(1)}%`);
50
+ console.log(` Controls evaluated: ${state.controlStatuses.length}`);
51
+ console.log(` Compliant: ${state.controlStatuses.filter((s) => s.status === 'compliant').length}`);
52
+ console.log(` Non-compliant: ${state.controlStatuses.filter((s) => s.status === 'non-compliant').length}`);
53
+ console.log(` Risks: ${state.risks.length}`);
54
+ for (const cs of state.controlStatuses.slice(0, 3)) {
55
+ console.log(` ${cs.controlId}: ${cs.status} (score: ${cs.score.toFixed(1)})`);
56
+ }
57
+ console.log('✓ Neuro-Symbolic Reasoner tests passed');
58
+ }
59
+ async function testUnifiedComplianceGraph() {
60
+ console.log('\n=== Testing Unified Compliance Graph ===');
61
+ const compiler = new RegulationASTCompiler();
62
+ const asts = compiler.getAllASTs();
63
+ const graph = new UnifiedComplianceGraph(asts);
64
+ console.log(`Graph nodes: ${graph.getGraphHash()}`);
65
+ const blastRadius = graph.calculateBlastRadius('control:iso27001:A.8.2');
66
+ console.log(`Blast radius for A.8.2: ${blastRadius.impactScore.toFixed(2)} (${blastRadius.affectedControls.length} controls)`);
67
+ const attackPaths = graph.traceAttackPaths('control:iso27001:A.8.2', 3);
68
+ console.log(`Attack paths found: ${attackPaths.length}`);
69
+ console.log('✓ Unified Compliance Graph tests passed');
70
+ }
71
+ async function testComplianceSuperOrchestrator() {
72
+ console.log('\n=== Testing Compliance Super Orchestrator ===');
73
+ const orchestrator = new ComplianceSuperOrchestrator({
74
+ orgId: 'test-org',
75
+ enabledFrameworks: ['iso27001', 'soc2', 'iso42001'],
76
+ riskTolerance: 'medium',
77
+ autoRemediate: false,
78
+ continuousScanInterval: 300000,
79
+ });
80
+ const contexts = new Map();
81
+ const baseEvidence = new Map([
82
+ ['iso-a.8.2', [{ id: 'ev-1', controlId: 'iso-a.8.2', type: 'config', hash: 'abc', timestamp: new Date().toISOString(), valid: true }]],
83
+ ]);
84
+ const baseConfig = {
85
+ iam: { mfaEnabled: true, privilegedUsers: ['admin'], sessionTimeout: 900, lastPasswordRotation: new Date(Date.now() - 30 * 24 * 60 * 60 * 1000).toISOString(), rbacPolicyVersion: '2.0', mfaEnforcementRate: 0.98 },
86
+ network: { firewallRules: 10, segmentationEnabled: true, idsEnabled: true, tlsVersion: '1.3', publicEndpoints: [] },
87
+ data: { encryptionAtRest: true, encryptionInTransit: true, backupEnabled: true, backupFrequency: 'daily', lastBackup: new Date().toISOString(), retentionDays: 90 },
88
+ monitoring: { siemEnabled: true, logRetentionDays: 180, alertingEnabled: true, mttr: 4, monitoringCoverage: 90 },
89
+ physical: { accessControl: true, cctvEnabled: true, environmentalMonitoring: true, visitorManagement: true },
90
+ };
91
+ contexts.set('iso27001', { orgId: 'test-org', framework: 'iso27001', currentEvidence: baseEvidence, configurationState: baseConfig, riskTolerance: 'medium' });
92
+ contexts.set('soc2', { orgId: 'test-org', framework: 'soc2', currentEvidence: baseEvidence, configurationState: baseConfig, riskTolerance: 'medium' });
93
+ contexts.set('iso42001', { orgId: 'test-org', framework: 'iso42001', currentEvidence: baseEvidence, configurationState: baseConfig, riskTolerance: 'medium' });
94
+ const result = await orchestrator.continuousComplianceLoop(contexts);
95
+ console.log(`Overall compliance score: ${result.overallScore.toFixed(1)}%`);
96
+ console.log(`Frameworks evaluated: ${result.states.length}`);
97
+ console.log(`Drift events: ${result.drift.length}`);
98
+ console.log(`Risks identified: ${result.risks.length}`);
99
+ const plan = await orchestrator.synthesizePlan('iso27001', result.states[0], 95);
100
+ console.log(`Remediation plan: ${plan.actions.length} actions, estimated ${plan.estimatedDuration}`);
101
+ const audit = await orchestrator.executeAudit('iso27001', contexts.get('iso27001'));
102
+ console.log(`Audit result: ${audit.summary.passed}/${audit.summary.totalControls} passed`);
103
+ console.log('✓ Compliance Super Orchestrator tests passed');
104
+ }
105
+ async function runAllTests() {
106
+ console.log('Starting Compliance Orchestrator Tests...\n');
107
+ console.log('='.repeat(60));
108
+ await testRegulationASTCompiler();
109
+ await testNeuroSymbolicReasoner();
110
+ await testUnifiedComplianceGraph();
111
+ await testComplianceSuperOrchestrator();
112
+ console.log('\n' + '='.repeat(60));
113
+ console.log('All Compliance Orchestrator tests passed! ✓');
114
+ console.log('='.repeat(60));
115
+ }
116
+ runAllTests().catch(console.error);
117
+ //# sourceMappingURL=test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"test.js","sourceRoot":"","sources":["../src/test.ts"],"names":[],"mappings":"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"}