UNPKG

@ansvar/singapore-law-mcp

Version:

Complete Singapore law database — 523 Acts, 28K+ provisions from Singapore Statutes Online (sso.agc.gov.sg) with full-text search, definitions, and citation support

98 lines 3.89 kB
/** * validate_eu_compliance — Check EU/international compliance status for a Singapore statute. */ import { resolveDocumentId } from '../utils/statute-id.js'; import { generateResponseMetadata } from '../utils/metadata.js'; export async function validateEUCompliance(db, input) { const resolvedId = resolveDocumentId(db, input.document_id); if (!resolvedId) { return { results: { document_id: input.document_id, document_title: 'Unknown', compliance_status: 'not_applicable', eu_references_found: 0, warnings: [`Document not found: "${input.document_id}"`], recommendations: [], }, _metadata: generateResponseMetadata(db), }; } const doc = db.prepare('SELECT id, title, status FROM legal_documents WHERE id = ?').get(resolvedId); const warnings = []; const recommendations = []; // Check if EU reference tables exist let euRefCount = 0; try { let sql = 'SELECT COUNT(*) as count FROM eu_references WHERE document_id = ?'; const params = [resolvedId]; if (input.eu_document_id) { sql += ' AND eu_document_id = ?'; params.push(input.eu_document_id); } const row = db.prepare(sql).get(...params); euRefCount = row.count; } catch { return { results: { document_id: resolvedId, document_title: doc.title, compliance_status: 'not_applicable', eu_references_found: 0, warnings: ['EU/international references not available in this database tier'], recommendations: [], }, _metadata: generateResponseMetadata(db), }; } if (euRefCount === 0) { return { results: { document_id: resolvedId, document_title: doc.title, compliance_status: 'not_applicable', eu_references_found: 0, warnings: [], recommendations: ['No EU/international cross-references found for this statute. This may be a purely domestic law.'], }, _metadata: generateResponseMetadata(db), }; } if (doc.status === 'repealed') { warnings.push('This statute has been repealed.'); recommendations.push('Check for replacement legislation.'); } // Check implementation status const statuses = db.prepare('SELECT implementation_status, COUNT(*) as count FROM eu_references WHERE document_id = ? GROUP BY implementation_status').all(resolvedId); const statusMap = new Map(statuses.map(s => [s.implementation_status, s.count])); const completeCount = statusMap.get('complete') ?? 0; const partialCount = statusMap.get('partial') ?? 0; const unknownCount = statusMap.get('unknown') ?? 0; let compliance_status; if (completeCount > 0 && partialCount === 0 && unknownCount === 0) { compliance_status = 'compliant'; } else if (partialCount > 0) { compliance_status = 'partial'; warnings.push(`${partialCount} EU/international reference(s) have partial implementation status.`); } else { compliance_status = 'unclear'; if (unknownCount > 0) { recommendations.push(`${unknownCount} EU/international reference(s) have unknown implementation status. Manual review recommended.`); } } return { results: { document_id: resolvedId, document_title: doc.title, compliance_status, eu_references_found: euRefCount, warnings, recommendations, }, _metadata: generateResponseMetadata(db), }; } //# sourceMappingURL=validate-eu-compliance.js.map