{"_id":"@aimf/compliance","_rev":"2-c7996231f77ed5e267c23537d3b8bbb1","name":"@aimf/compliance","dist-tags":{"latest":"0.1.1"},"versions":{"0.1.0":{"name":"@aimf/compliance","version":"0.1.0","_id":"@aimf/compliance@0.1.0","maintainers":[{"name":"vetriselvans","email":"vetriselvans029@gmail.com"}],"dist":{"shasum":"6d5cd6882bcc9cec9214869e07f13082ba1886d4","tarball":"https://registry.npmjs.org/@aimf/compliance/-/compliance-0.1.0.tgz","fileCount":26,"integrity":"sha512-TtrjFJsTjKeSqIqL669oQyFfS+1lHUjxcR84PtKpZI4W5DikZ9SNqZikOC4ob8GZPLXbMOA+O41Jg5aJgz1z3A==","signatures":[{"sig":"MEQCIHe6x7Mni5GSz6c2cpTFNlclwbKuchbmN5lSl8vNmGcdAiBtjz2Mz/5JzuhLGnTGK77teCO9F36bmpDNL0UVc3vbTw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":108504},"main":"dist/index.js","type":"module","_from":"file:aimf-compliance-0.1.0.tgz","types":"dist/index.d.ts","scripts":{"lint":"eslint src/","test":"vitest run","build":"tsc","clean":"rimraf dist","typecheck":"tsc --noEmit"},"_npmUser":{"name":"vetriselvans","email":"vetriselvans029@gmail.com"},"_resolved":"C:\\Users\\I9159~1.LAP\\AppData\\Local\\Temp\\9bc7153e0fc4e7089fbaa905438b52e1\\aimf-compliance-0.1.0.tgz","_integrity":"sha512-TtrjFJsTjKeSqIqL669oQyFfS+1lHUjxcR84PtKpZI4W5DikZ9SNqZikOC4ob8GZPLXbMOA+O41Jg5aJgz1z3A==","_npmVersion":"10.9.0","description":"GDPR Compliance, Data Retention, and Audit Logging","directories":{},"_nodeVersion":"22.12.0","dependencies":{"@aimf/shared":"0.1.0","@aimf/event-mesh":"0.1.0"},"_hasShrinkwrap":false,"devDependencies":{"rimraf":"^6.0.1","vitest":"^2.1.9","typescript":"^5.7.2","@types/node":"^22.10.1"},"_npmOperationalInternal":{"tmp":"tmp/compliance_0.1.0_1765129021122_0.6108465563311747","host":"s3://npm-registry-packages-npm-production"}},"0.1.1":{"name":"@aimf/compliance","version":"0.1.1","description":"GDPR Compliance, Data Retention, and Audit Logging","type":"module","main":"dist/index.js","types":"dist/index.d.ts","dependencies":{"@aimf/shared":"0.1.1","@aimf/event-mesh":"0.1.1"},"devDependencies":{"@types/node":"^22.10.1","rimraf":"^6.0.1","typescript":"^5.7.2","vitest":"^2.1.9"},"scripts":{"build":"tsc","test":"vitest run","lint":"eslint src/","clean":"rimraf dist","typecheck":"tsc --noEmit"},"_id":"@aimf/compliance@0.1.1","_integrity":"sha512-R+T2E9vZFyCdZznuiuIwcj506I+16DbQOZuIpcP/+HQZcTaRJx2WAAZ4E557oEOSYeJURMu/Se83fNQzj1t8uQ==","_resolved":"C:\\Users\\I9159~1.LAP\\AppData\\Local\\Temp\\abe9da49c81248d3d20e440ceffd787d\\aimf-compliance-0.1.1.tgz","_from":"file:aimf-compliance-0.1.1.tgz","_nodeVersion":"22.12.0","_npmVersion":"10.9.0","dist":{"integrity":"sha512-R+T2E9vZFyCdZznuiuIwcj506I+16DbQOZuIpcP/+HQZcTaRJx2WAAZ4E557oEOSYeJURMu/Se83fNQzj1t8uQ==","shasum":"4ba266de6980284d729a0846dafc78776eb691f1","tarball":"https://registry.npmjs.org/@aimf/compliance/-/compliance-0.1.1.tgz","fileCount":26,"unpackedSize":108504,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIHDdYNbgQlj6H9lYg/ZnXUZZDsPjcKwoQ8KuD1f6lS1KAiEAyQsyUqy65VAjUh8waiyJpAXdfJUsuqUsJxBA5JN+5Sk="}]},"_npmUser":{"name":"vetriselvans","email":"vetriselvans029@gmail.com"},"directories":{},"maintainers":[{"name":"vetriselvans","email":"vetriselvans029@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/compliance_0.1.1_1765130885805_0.06630296576875327"},"_hasShrinkwrap":false}},"time":{"created":"2025-12-07T17:37:01.023Z","modified":"2025-12-07T18:08:06.147Z","0.1.0":"2025-12-07T17:37:01.261Z","0.1.1":"2025-12-07T18:08:05.938Z"},"description":"GDPR Compliance, Data Retention, and Audit Logging","maintainers":[{"name":"vetriselvans","email":"vetriselvans029@gmail.com"}],"readme":"# @aimf/compliance\r\n\r\nGDPR Compliance, Data Retention, and Audit Logging module for the AI-MCP Framework (AIMF).\r\n\r\n## Features\r\n\r\n- **Audit Logger**: Immutable, signed audit trail for all data operations\r\n- **Consent Manager**: GDPR-compliant consent management with versioning\r\n- **DSR Handler**: Data Subject Rights handling (access, erasure, portability, rectification)\r\n- **Retention Manager**: Automated data lifecycle and retention policy enforcement\r\n\r\n## Installation\r\n\r\n```bash\r\npnpm add @aimf/compliance\r\n```\r\n\r\n## Quick Start\r\n\r\n### Audit Logger\r\n\r\n```typescript\r\nimport { createAuditLogger } from \"@aimf/compliance\";\r\n\r\nconst logger = createAuditLogger({\r\n  signEntries: true,\r\n  hashSensitiveData: true,\r\n});\r\n\r\n// Log data access\r\nawait logger.logAccess(\r\n  { type: \"user\", id: \"user-123\", ip: \"192.168.1.1\" },\r\n  { type: \"document\", id: \"doc-456\", category: \"personal\" },\r\n  true // success\r\n);\r\n\r\n// Query audit trail\r\nconst entries = logger.query({\r\n  action: \"read\",\r\n  actorId: \"user-123\",\r\n  startTime: Date.now() - 86400000, // Last 24 hours\r\n});\r\n\r\n// Export for compliance\r\nconst report = logger.export(\"csv\");\r\n```\r\n\r\n### Consent Manager\r\n\r\n```typescript\r\nimport { createConsentManager } from \"@aimf/compliance\";\r\n\r\nconst manager = createConsentManager({\r\n  requireExplicit: true,\r\n  consentVersioning: true,\r\n});\r\n\r\n// Register consent purposes\r\nmanager.registerPurpose({\r\n  id: \"marketing\",\r\n  name: \"Marketing Communications\",\r\n  description: \"Receive marketing emails and newsletters\",\r\n  required: false,\r\n  legalBasis: \"consent\",\r\n});\r\n\r\n// Grant consent\r\nawait manager.grantConsent(\"user-123\", [\"marketing\"], {\r\n  proof: \"checkbox-clicked\",\r\n});\r\n\r\n// Check consent\r\nif (manager.hasConsent(\"user-123\", \"marketing\")) {\r\n  // Process marketing data\r\n}\r\n\r\n// Revoke consent\r\nawait manager.revokeConsent(\"user-123\", [\"marketing\"]);\r\n```\r\n\r\n### Data Subject Rights (DSR) Handler\r\n\r\n```typescript\r\nimport { createDSRHandler } from \"@aimf/compliance\";\r\n\r\nconst handler = createDSRHandler({\r\n  responseDeadlineDays: 30, // GDPR requirement\r\n});\r\n\r\n// Submit access request\r\nconst request = await handler.submitRequest(\r\n  \"access\",\r\n  \"user-123\",\r\n  { type: \"user\", id: \"user-123\" }\r\n);\r\n\r\n// Process access request\r\nconst { data } = await handler.processAccessRequest(\r\n  request.id,\r\n  async () => ({\r\n    personalData: { name: \"John Doe\", email: \"john@example.com\" },\r\n    activityLog: [...],\r\n  })\r\n);\r\n\r\n// Check for overdue requests\r\nconst overdue = handler.getOverdueRequests();\r\n```\r\n\r\n### Retention Manager\r\n\r\n```typescript\r\nimport { createRetentionManager } from \"@aimf/compliance\";\r\n\r\nconst manager = createRetentionManager({\r\n  defaultRetentionDays: 365,\r\n  gracePeriodDays: 30,\r\n});\r\n\r\n// Register retention policy\r\nmanager.registerPolicy({\r\n  id: \"personal-30\",\r\n  name: \"Personal Data - 30 days\",\r\n  dataCategory: \"personal\",\r\n  retentionDays: 30,\r\n  archivePolicy: \"delete\",\r\n  enabled: true,\r\n});\r\n\r\n// Track data\r\nmanager.trackData(\"doc-123\", \"personal\");\r\n\r\n// Check retention status\r\nconst status = manager.getRetentionStatus(\"doc-123\");\r\nconsole.log(`Days remaining: ${status.daysRemaining}`);\r\n\r\n// Start auto enforcement\r\nmanager.startAutoEnforcement(24); // Check every 24 hours\r\n\r\n// Generate compliance report\r\nconst report = manager.generateReport();\r\n```\r\n\r\n## Integration Example\r\n\r\n```typescript\r\nimport {\r\n  createAuditLogger,\r\n  createConsentManager,\r\n  createDSRHandler,\r\n  createRetentionManager,\r\n} from \"@aimf/compliance\";\r\n\r\n// Create integrated compliance stack\r\nconst auditLogger = createAuditLogger({ signEntries: true });\r\nconst consentManager = createConsentManager();\r\nconst dsrHandler = createDSRHandler({}, undefined, auditLogger);\r\nconst retentionManager = createRetentionManager();\r\n\r\n// Complete data subject workflow\r\nasync function handleUserDataRequest(userId: string) {\r\n  // 1. Check consent\r\n  if (!consentManager.hasLegalBasis(userId, \"data-processing\").valid) {\r\n    throw new Error(\"No legal basis for processing\");\r\n  }\r\n\r\n  // 2. Log the access\r\n  await auditLogger.logAccess(\r\n    { type: \"system\", id: \"api-server\" },\r\n    { type: \"user-data\", id: userId, category: \"personal\" },\r\n    true\r\n  );\r\n\r\n  // 3. Submit access request\r\n  const request = await dsrHandler.submitRequest(\r\n    \"access\",\r\n    userId,\r\n    { type: \"user\", id: userId }\r\n  );\r\n\r\n  // 4. Process and return data\r\n  return dsrHandler.processAccessRequest(request.id, async () => ({\r\n    consents: consentManager.exportConsents(userId),\r\n    auditTrail: auditLogger.getActorAuditTrail(userId),\r\n  }));\r\n}\r\n```\r\n\r\n## GDPR Compliance Features\r\n\r\n- **Article 7**: Consent management with proof of consent\r\n- **Article 15**: Right of access (access requests)\r\n- **Article 16**: Right to rectification (rectification requests)\r\n- **Article 17**: Right to erasure (erasure requests)\r\n- **Article 20**: Right to data portability (portability requests)\r\n- **Article 30**: Records of processing activities (audit log)\r\n\r\n## API Reference\r\n\r\n### AuditLogger\r\n\r\n| Method | Description |\r\n|--------|-------------|\r\n| `log()` | Create an audit entry |\r\n| `logAccess()` | Log data access |\r\n| `logModification()` | Log data modification |\r\n| `logConsentChange()` | Log consent change |\r\n| `logSubjectRequest()` | Log DSR submission |\r\n| `query()` | Query audit entries |\r\n| `export()` | Export audit log |\r\n| `verifyEntry()` | Verify entry signature |\r\n\r\n### ConsentManager\r\n\r\n| Method | Description |\r\n|--------|-------------|\r\n| `registerPurpose()` | Register consent purpose |\r\n| `grantConsent()` | Grant consent |\r\n| `revokeConsent()` | Revoke consent |\r\n| `hasConsent()` | Check consent validity |\r\n| `hasLegalBasis()` | Check legal basis |\r\n| `exportConsents()` | Export consent data |\r\n\r\n### DSRHandler\r\n\r\n| Method | Description |\r\n|--------|-------------|\r\n| `submitRequest()` | Submit new request |\r\n| `startProcessing()` | Mark as processing |\r\n| `completeRequest()` | Complete request |\r\n| `rejectRequest()` | Reject request |\r\n| `processAccessRequest()` | Process access request |\r\n| `processErasureRequest()` | Process erasure request |\r\n| `processPortabilityRequest()` | Process portability request |\r\n\r\n### RetentionManager\r\n\r\n| Method | Description |\r\n|--------|-------------|\r\n| `registerPolicy()` | Register retention policy |\r\n| `trackData()` | Start tracking data |\r\n| `getRetentionStatus()` | Get data status |\r\n| `enforceRetention()` | Run enforcement |\r\n| `startAutoEnforcement()` | Start scheduled checks |\r\n| `generateReport()` | Generate compliance report |\r\n\r\n## License\r\n\r\nMIT\r\n","readmeFilename":"README.md"}