UNPKG

@dollhousemcp/mcp-server

Version:

DollhouseMCP - A Model Context Protocol (MCP) server that enables dynamic AI persona management from markdown files, allowing Claude and other compatible AI assistants to activate and switch between different behavioral personas.

56 lines 7.22 kB
/** * Collects aggregate security-event counts from SecurityMonitor, broken down * by severity and event type. Accepts an injectable report function so the * collector can be tested without a live SecurityMonitor singleton. */ import { SecurityMonitor } from '../../security/securityMonitor.js'; const SOURCE = 'SecurityMonitor'; export class SecurityMonitorCollector { name = 'security-monitor'; description = 'Total security events and per-severity/per-type breakdowns from SecurityMonitor'; reportFn; constructor(reportFn) { this.reportFn = reportFn ?? (() => SecurityMonitor.generateSecurityReport()); } collect() { try { const report = this.reportFn(); const entries = []; entries.push({ type: 'counter', name: 'security.monitor.events_total', source: SOURCE, unit: 'count', description: 'Total number of security events recorded', value: report.totalEvents, }); for (const [severity, count] of Object.entries(report.eventsBySeverity)) { entries.push({ type: 'gauge', name: 'security.monitor.events_by_severity', source: SOURCE, unit: 'count', description: 'Security event count grouped by severity level', labels: { severity }, value: count, }); } for (const [type, count] of Object.entries(report.eventsByType)) { entries.push({ type: 'gauge', name: 'security.monitor.events_by_type', source: SOURCE, unit: 'count', description: 'Security event count grouped by event type', labels: { type }, value: count, }); } return entries; } catch { return []; } } } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiU2VjdXJpdHlNb25pdG9yQ29sbGVjdG9yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL21ldHJpY3MvY29sbGVjdG9ycy9TZWN1cml0eU1vbml0b3JDb2xsZWN0b3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7R0FJRztBQUdILE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUVwRSxNQUFNLE1BQU0sR0FBRyxpQkFBMEIsQ0FBQztBQVMxQyxNQUFNLE9BQU8sd0JBQXdCO0lBQzFCLElBQUksR0FBRyxrQkFBa0IsQ0FBQztJQUMxQixXQUFXLEdBQ2xCLGlGQUFpRixDQUFDO0lBRW5FLFFBQVEsQ0FBdUI7SUFFaEQsWUFBWSxRQUErQjtRQUN6QyxJQUFJLENBQUMsUUFBUSxHQUFHLFFBQVEsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDLGVBQWUsQ0FBQyxzQkFBc0IsRUFBRSxDQUFDLENBQUM7SUFDL0UsQ0FBQztJQUVELE9BQU87UUFDTCxJQUFJLENBQUM7WUFDSCxNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7WUFDL0IsTUFBTSxPQUFPLEdBQWtCLEVBQUUsQ0FBQztZQUVsQyxPQUFPLENBQUMsSUFBSSxDQUFDO2dCQUNYLElBQUksRUFBRSxTQUFrQjtnQkFDeEIsSUFBSSxFQUFFLCtCQUErQjtnQkFDckMsTUFBTSxFQUFFLE1BQU07Z0JBQ2QsSUFBSSxFQUFFLE9BQWdCO2dCQUN0QixXQUFXLEVBQUUsMENBQTBDO2dCQUN2RCxLQUFLLEVBQUUsTUFBTSxDQUFDLFdBQVc7YUFDMUIsQ0FBQyxDQUFDO1lBRUgsS0FBSyxNQUFNLENBQUMsUUFBUSxFQUFFLEtBQUssQ0FBQyxJQUFJLE1BQU0sQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLGdCQUFnQixDQUFDLEVBQUUsQ0FBQztnQkFDeEUsT0FBTyxDQUFDLElBQUksQ0FBQztvQkFDWCxJQUFJLEVBQUUsT0FBZ0I7b0JBQ3RCLElBQUksRUFBRSxxQ0FBcUM7b0JBQzNDLE1BQU0sRUFBRSxNQUFNO29CQUNkLElBQUksRUFBRSxPQUFnQjtvQkFDdEIsV0FBVyxFQUFFLGdEQUFnRDtvQkFDN0QsTUFBTSxFQUFFLEVBQUUsUUFBUSxFQUFFO29CQUNwQixLQUFLLEVBQUUsS0FBSztpQkFDYixDQUFDLENBQUM7WUFDTCxDQUFDO1lBRUQsS0FBSyxNQUFNLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxJQUFJLE1BQU0sQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLFlBQVksQ0FBQyxFQUFFLENBQUM7Z0JBQ2hFLE9BQU8sQ0FBQyxJQUFJLENBQUM7b0JBQ1gsSUFBSSxFQUFFLE9BQWdCO29CQUN0QixJQUFJLEVBQUUsaUNBQWlDO29CQUN2QyxNQUFNLEVBQUUsTUFBTTtvQkFDZCxJQUFJLEVBQUUsT0FBZ0I7b0JBQ3RCLFdBQVcsRUFBRSw0Q0FBNEM7b0JBQ3pELE1BQU0sRUFBRSxFQUFFLElBQUksRUFBRTtvQkFDaEIsS0FBSyxFQUFFLEtBQUs7aUJBQ2IsQ0FBQyxDQUFDO1lBQ0wsQ0FBQztZQUVELE9BQU8sT0FBTyxDQUFDO1FBQ2pCLENBQUM7UUFBQyxNQUFNLENBQUM7WUFDUCxPQUFPLEVBQUUsQ0FBQztRQUNaLENBQUM7SUFDSCxDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIENvbGxlY3RzIGFnZ3JlZ2F0ZSBzZWN1cml0eS1ldmVudCBjb3VudHMgZnJvbSBTZWN1cml0eU1vbml0b3IsIGJyb2tlbiBkb3duXG4gKiBieSBzZXZlcml0eSBhbmQgZXZlbnQgdHlwZS4gQWNjZXB0cyBhbiBpbmplY3RhYmxlIHJlcG9ydCBmdW5jdGlvbiBzbyB0aGVcbiAqIGNvbGxlY3RvciBjYW4gYmUgdGVzdGVkIHdpdGhvdXQgYSBsaXZlIFNlY3VyaXR5TW9uaXRvciBzaW5nbGV0b24uXG4gKi9cblxuaW1wb3J0IHR5cGUgeyBJTWV0cmljQ29sbGVjdG9yLCBNZXRyaWNFbnRyeSB9IGZyb20gJy4uL3R5cGVzLmpzJztcbmltcG9ydCB7IFNlY3VyaXR5TW9uaXRvciB9IGZyb20gJy4uLy4uL3NlY3VyaXR5L3NlY3VyaXR5TW9uaXRvci5qcyc7XG5cbmNvbnN0IFNPVVJDRSA9ICdTZWN1cml0eU1vbml0b3InIGFzIGNvbnN0O1xuXG5pbnRlcmZhY2UgU2VjdXJpdHlSZXBvcnQge1xuICB0b3RhbEV2ZW50czogbnVtYmVyO1xuICBldmVudHNCeVNldmVyaXR5OiBSZWNvcmQ8c3RyaW5nLCBudW1iZXI+O1xuICBldmVudHNCeVR5cGU6IFJlY29yZDxzdHJpbmcsIG51bWJlcj47XG4gIHJlY2VudENyaXRpY2FsRXZlbnRzOiB1bmtub3duW107XG59XG5cbmV4cG9ydCBjbGFzcyBTZWN1cml0eU1vbml0b3JDb2xsZWN0b3IgaW1wbGVtZW50cyBJTWV0cmljQ29sbGVjdG9yIHtcbiAgcmVhZG9ubHkgbmFtZSA9ICdzZWN1cml0eS1tb25pdG9yJztcbiAgcmVhZG9ubHkgZGVzY3JpcHRpb24gPVxuICAgICdUb3RhbCBzZWN1cml0eSBldmVudHMgYW5kIHBlci1zZXZlcml0eS9wZXItdHlwZSBicmVha2Rvd25zIGZyb20gU2VjdXJpdHlNb25pdG9yJztcblxuICBwcml2YXRlIHJlYWRvbmx5IHJlcG9ydEZuOiAoKSA9PiBTZWN1cml0eVJlcG9ydDtcblxuICBjb25zdHJ1Y3RvcihyZXBvcnRGbj86ICgpID0+IFNlY3VyaXR5UmVwb3J0KSB7XG4gICAgdGhpcy5yZXBvcnRGbiA9IHJlcG9ydEZuID8/ICgoKSA9PiBTZWN1cml0eU1vbml0b3IuZ2VuZXJhdGVTZWN1cml0eVJlcG9ydCgpKTtcbiAgfVxuXG4gIGNvbGxlY3QoKTogTWV0cmljRW50cnlbXSB7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHJlcG9ydCA9IHRoaXMucmVwb3J0Rm4oKTtcbiAgICAgIGNvbnN0IGVudHJpZXM6IE1ldHJpY0VudHJ5W10gPSBbXTtcblxuICAgICAgZW50cmllcy5wdXNoKHtcbiAgICAgICAgdHlwZTogJ2NvdW50ZXInIGFzIGNvbnN0LFxuICAgICAgICBuYW1lOiAnc2VjdXJpdHkubW9uaXRvci5ldmVudHNfdG90YWwnLFxuICAgICAgICBzb3VyY2U6IFNPVVJDRSxcbiAgICAgICAgdW5pdDogJ2NvdW50JyBhcyBjb25zdCxcbiAgICAgICAgZGVzY3JpcHRpb246ICdUb3RhbCBudW1iZXIgb2Ygc2VjdXJpdHkgZXZlbnRzIHJlY29yZGVkJyxcbiAgICAgICAgdmFsdWU6IHJlcG9ydC50b3RhbEV2ZW50cyxcbiAgICAgIH0pO1xuXG4gICAgICBmb3IgKGNvbnN0IFtzZXZlcml0eSwgY291bnRdIG9mIE9iamVjdC5lbnRyaWVzKHJlcG9ydC5ldmVudHNCeVNldmVyaXR5KSkge1xuICAgICAgICBlbnRyaWVzLnB1c2goe1xuICAgICAgICAgIHR5cGU6ICdnYXVnZScgYXMgY29uc3QsXG4gICAgICAgICAgbmFtZTogJ3NlY3VyaXR5Lm1vbml0b3IuZXZlbnRzX2J5X3NldmVyaXR5JyxcbiAgICAgICAgICBzb3VyY2U6IFNPVVJDRSxcbiAgICAgICAgICB1bml0OiAnY291bnQnIGFzIGNvbnN0LFxuICAgICAgICAgIGRlc2NyaXB0aW9uOiAnU2VjdXJpdHkgZXZlbnQgY291bnQgZ3JvdXBlZCBieSBzZXZlcml0eSBsZXZlbCcsXG4gICAgICAgICAgbGFiZWxzOiB7IHNldmVyaXR5IH0sXG4gICAgICAgICAgdmFsdWU6IGNvdW50LFxuICAgICAgICB9KTtcbiAgICAgIH1cblxuICAgICAgZm9yIChjb25zdCBbdHlwZSwgY291bnRdIG9mIE9iamVjdC5lbnRyaWVzKHJlcG9ydC5ldmVudHNCeVR5cGUpKSB7XG4gICAgICAgIGVudHJpZXMucHVzaCh7XG4gICAgICAgICAgdHlwZTogJ2dhdWdlJyBhcyBjb25zdCxcbiAgICAgICAgICBuYW1lOiAnc2VjdXJpdHkubW9uaXRvci5ldmVudHNfYnlfdHlwZScsXG4gICAgICAgICAgc291cmNlOiBTT1VSQ0UsXG4gICAgICAgICAgdW5pdDogJ2NvdW50JyBhcyBjb25zdCxcbiAgICAgICAgICBkZXNjcmlwdGlvbjogJ1NlY3VyaXR5IGV2ZW50IGNvdW50IGdyb3VwZWQgYnkgZXZlbnQgdHlwZScsXG4gICAgICAgICAgbGFiZWxzOiB7IHR5cGUgfSxcbiAgICAgICAgICB2YWx1ZTogY291bnQsXG4gICAgICAgIH0pO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gZW50cmllcztcbiAgICB9IGNhdGNoIHtcbiAgICAgIHJldHVybiBbXTtcbiAgICB9XG4gIH1cbn1cbiJdfQ==