@contextgraph/compliance

Compliance reporting and GDPR features.

Installation

pnpm add @contextgraph/compliance

Overview

Support regulatory compliance:

  • Audit reports
  • Access reports
  • Decision reports
  • GDPR data subject rights

Audit Reports

import { ComplianceReporter } from '@contextgraph/compliance';

const reporter = new ComplianceReporter(ckg, dtg, provenance, storage);

const report = await reporter.generateAuditReport({
  from: startDate,
  to: endDate,
  format: 'json', // or 'pdf', 'csv'
  include: ['entities', 'claims', 'decisions', 'provenance'],
});

Access Reports

// Who accessed what
const accessReport = await reporter.generateAccessReport({
  entityId: entityId,
  from: startDate,
  to: endDate,
});

Decision Reports

// Decision analytics
const decisionReport = await reporter.generateDecisionReport({
  from: startDate,
  to: endDate,
  groupBy: 'agent', // or 'type', 'status'
});

GDPR Support

Data Subject Access

// Get all data for a person
const subjectData = await reporter.getDataSubjectData(personId);

Data Portability

// Export data in portable format
const exportData = await reporter.exportDataSubjectData(personId, {
  format: 'json',
  include: ['profile', 'claims', 'decisions'],
});

Right to Erasure

// Delete with provenance tracking
await reporter.deleteDataSubjectData(personId, {
  reason: 'GDPR Article 17 request',
  requestId: 'gdpr_req_123',
  retainAudit: true, // Keep audit trail
});
// Record consent
await reporter.recordConsent(personId, {
  purpose: 'marketing',
  granted: true,
  timestamp: createTimestamp(),
});

// Check consent
const hasConsent = await reporter.hasConsent(personId, 'marketing');

// Withdraw consent
await reporter.withdrawConsent(personId, 'marketing');

Report Formats

FormatDescription
jsonMachine-readable JSON
csvSpreadsheet-compatible
pdfHuman-readable document

Scheduling Reports

// Schedule daily compliance report
await reporter.schedule({
  type: 'audit',
  frequency: 'daily',
  recipients: ['compliance@example.com'],
  format: 'pdf',
});