Files
smom-dbis-138/packages/integration-foundation/dist/compliance/ComplianceDecisionEngine.js
defiQUG d717b504a6
Some checks failed
CI/CD Pipeline / Solidity Contracts (push) Failing after 1m12s
CI/CD Pipeline / Security Scanning (push) Successful in 2m21s
CI/CD Pipeline / Lint and Format (push) Failing after 36s
CI/CD Pipeline / Terraform Validation (push) Failing after 22s
CI/CD Pipeline / Kubernetes Validation (push) Successful in 25s
HYBX OMNL TypeScript & anchor / token-aggregation build + reconcile artifact (push) Failing after 23s
Validation / validate-genesis (push) Successful in 26s
Validation / validate-terraform (push) Failing after 21s
Validation / validate-kubernetes (push) Failing after 9s
Validation / validate-smart-contracts (push) Failing after 8s
Validation / validate-security (push) Failing after 1m15s
Validation / validate-documentation (push) Failing after 15s
OMNL reconcile anchor / Run omnl:reconcile and upload artifacts (push) Failing after 26s
Verify Deployment / Verify Deployment (push) Failing after 56s
feat(omnl): settlement terminal, compliance gates, and HYBX integration foundation
Add operator settlement terminal UI/API, swift-listener service, compliance
idempotency gates, GRU reserve dashboards, and @dbis/integration-foundation
for typed HYBX/ISO adapter contracts.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-06-07 21:51:32 -07:00

91 lines
3.0 KiB
JavaScript

"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.MockComplianceDecisionEngine = void 0;
let auditCounter = 0;
function nextAuditId() {
auditCounter += 1;
return `audit-mock-${auditCounter}`;
}
class MockComplianceDecisionEngine {
blockAmountThreshold;
constructor(options) {
this.blockAmountThreshold = options?.blockAmountThreshold ?? 1_000_000;
}
async evaluateTransaction(input) {
const amount = Number(input.amount);
const hints = input.riskHints ?? [];
if (hints.includes('sanctions_hit')) {
return {
decision: 'block',
risk_score: 100,
reason_codes: ['SANCTIONS_HIT'],
evidence_refs: ['mock-evidence-sanctions'],
manual_review_required: true,
audit_event_id: nextAuditId(),
};
}
if (hints.includes('pep_match')) {
return {
decision: 'review',
risk_score: 75,
reason_codes: ['PEP_MATCH'],
evidence_refs: ['mock-evidence-pep'],
manual_review_required: true,
audit_event_id: nextAuditId(),
};
}
if (amount >= this.blockAmountThreshold) {
return {
decision: 'hold',
risk_score: 60,
reason_codes: ['AMOUNT_THRESHOLD'],
evidence_refs: ['mock-evidence-threshold'],
manual_review_required: true,
audit_event_id: nextAuditId(),
};
}
return {
decision: 'allow',
risk_score: 10,
reason_codes: ['CLEAR'],
evidence_refs: [],
manual_review_required: false,
audit_event_id: nextAuditId(),
};
}
async evaluateEntity(entityId, tenantId) {
if (entityId.startsWith('blocked-')) {
return {
decision: 'reject',
risk_score: 90,
reason_codes: ['ENTITY_BLOCKED'],
evidence_refs: [`mock-entity-${tenantId}-${entityId}`],
manual_review_required: true,
audit_event_id: nextAuditId(),
};
}
return {
decision: 'allow',
risk_score: 5,
reason_codes: ['ENTITY_CLEAR'],
evidence_refs: [],
manual_review_required: false,
audit_event_id: nextAuditId(),
};
}
async evaluateCounterparty(counterpartyId, tenantId) {
if (counterpartyId.includes('high-risk')) {
return {
decision: 'review',
risk_score: 70,
reason_codes: ['COUNTERPARTY_HIGH_RISK'],
evidence_refs: [`mock-cp-${tenantId}`],
manual_review_required: true,
audit_event_id: nextAuditId(),
};
}
return this.evaluateEntity(counterpartyId, tenantId);
}
}
exports.MockComplianceDecisionEngine = MockComplianceDecisionEngine;