UNPKG

framework-mcp

Version:

Dual-architecture server (MCP + HTTP API) for determining vendor tool capability roles against CIS Controls Framework. Supports Microsoft Copilot custom connectors and DigitalOcean App Services deployment.

74 lines (61 loc) • 2.24 kB
#!/usr/bin/env node /** * Data Structure Analysis Script * Compares original CIS_SAFEGUARDS with current SafeguardManager interface */ const fs = require('fs'); console.log('šŸ“Š CIS Safeguards Data Structure Analysis\n'); // Read original data const originalData = fs.readFileSync('/tmp/complete_cis_safeguards.ts', 'utf8'); console.log('āœ… Original data loaded:', originalData.split('\n').length, 'lines'); // Extract safeguard structure from first entry (1.1) const match = originalData.match(/"1\.1":\s*{([^}]+(?:{[^}]*}[^}]*)*)/); if (match) { console.log('āœ… Successfully parsed safeguard 1.1 structure\n'); // Extract field names from original data const fieldPattern = /(\w+):/g; const originalFields = new Set(); let fieldMatch; while ((fieldMatch = fieldPattern.exec(match[1])) !== null) { originalFields.add(fieldMatch[1]); } console.log('šŸ“‹ Original fields found:'); Array.from(originalFields).sort().forEach(field => { console.log(` - ${field}`); }); // Required fields for SafeguardElement interface const requiredFields = [ 'id', 'title', 'description', 'implementationGroup', 'assetType', 'securityFunction', 'governanceElements', 'coreRequirements', 'subTaxonomicalElements', 'implementationSuggestions', 'relatedSafeguards', 'keywords' ]; console.log('\nšŸ“‹ Required SafeguardElement fields:'); requiredFields.forEach(field => { const present = originalFields.has(field); console.log(` ${present ? 'āœ…' : 'āŒ'} ${field}`); }); // Check for extra fields const extraFields = Array.from(originalFields).filter(f => !requiredFields.includes(f)); if (extraFields.length > 0) { console.log('\nāš ļø Extra fields in original data:'); extraFields.forEach(field => console.log(` - ${field}`)); } console.log('\nšŸ“Š Compatibility Analysis:'); const missingFields = requiredFields.filter(f => !originalFields.has(f)); if (missingFields.length === 0) { console.log('āœ… Perfect compatibility - all required fields present'); } else { console.log('āŒ Missing fields:', missingFields); } } else { console.log('āŒ Failed to parse safeguard structure'); }