@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
JavaScript
/**
* 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