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.

76 lines 9.35 kB
export class GatekeeperMetricsCollector { tracker; name = 'gatekeeper-metrics'; description = 'Gatekeeper policy enforcement: allowed/denied/confirmed, policy sources, permission levels.'; constructor(tracker) { this.tracker = tracker; } collect() { try { const m = this.tracker.getMetrics(); const entries = [ { type: 'counter', name: 'gatekeeper.decisions_total', source: 'GatekeeperMetricsTracker', unit: 'operations', description: 'Total Gatekeeper policy decisions.', value: m.totalDecisions, }, { type: 'counter', name: 'gatekeeper.allowed_total', source: 'GatekeeperMetricsTracker', unit: 'operations', description: 'Operations allowed by Gatekeeper.', value: m.allowed, }, { type: 'counter', name: 'gatekeeper.denied_total', source: 'GatekeeperMetricsTracker', unit: 'operations', description: 'Operations denied by Gatekeeper.', value: m.denied, }, { type: 'counter', name: 'gatekeeper.confirmations_requested_total', source: 'GatekeeperMetricsTracker', unit: 'operations', description: 'Total operations that requested user confirmation.', value: m.confirmationsPending, }, ]; // Per-policy-source gauges for (const [source, count] of m.byPolicySource) { entries.push({ type: 'gauge', name: 'gatekeeper.by_policy_source', source: 'GatekeeperMetricsTracker', unit: 'operations', description: `Decisions from policy source: ${source}.`, labels: { policy_source: source }, value: count, }); } // Per-permission-level gauges for (const [level, count] of m.byPermissionLevel) { entries.push({ type: 'gauge', name: 'gatekeeper.by_permission_level', source: 'GatekeeperMetricsTracker', unit: 'operations', description: `Decisions at permission level: ${level}.`, labels: { permission_level: level }, value: count, }); } return entries; } catch { return []; } } } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiR2F0ZWtlZXBlck1ldHJpY3NDb2xsZWN0b3IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbWV0cmljcy9jb2xsZWN0b3JzL0dhdGVrZWVwZXJNZXRyaWNzQ29sbGVjdG9yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQVNBLE1BQU0sT0FBTywwQkFBMEI7SUFJUjtJQUhwQixJQUFJLEdBQUcsb0JBQW9CLENBQUM7SUFDNUIsV0FBVyxHQUFHLDZGQUE2RixDQUFDO0lBRXJILFlBQTZCLE9BQWlDO1FBQWpDLFlBQU8sR0FBUCxPQUFPLENBQTBCO0lBQUcsQ0FBQztJQUVsRSxPQUFPO1FBQ0wsSUFBSSxDQUFDO1lBQ0gsTUFBTSxDQUFDLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxVQUFVLEVBQUUsQ0FBQztZQUVwQyxNQUFNLE9BQU8sR0FBa0I7Z0JBQzdCO29CQUNFLElBQUksRUFBRSxTQUFrQjtvQkFDeEIsSUFBSSxFQUFFLDRCQUE0QjtvQkFDbEMsTUFBTSxFQUFFLDBCQUEwQjtvQkFDbEMsSUFBSSxFQUFFLFlBQXFCO29CQUMzQixXQUFXLEVBQUUsb0NBQW9DO29CQUNqRCxLQUFLLEVBQUUsQ0FBQyxDQUFDLGNBQWM7aUJBQ3hCO2dCQUNEO29CQUNFLElBQUksRUFBRSxTQUFrQjtvQkFDeEIsSUFBSSxFQUFFLDBCQUEwQjtvQkFDaEMsTUFBTSxFQUFFLDBCQUEwQjtvQkFDbEMsSUFBSSxFQUFFLFlBQXFCO29CQUMzQixXQUFXLEVBQUUsbUNBQW1DO29CQUNoRCxLQUFLLEVBQUUsQ0FBQyxDQUFDLE9BQU87aUJBQ2pCO2dCQUNEO29CQUNFLElBQUksRUFBRSxTQUFrQjtvQkFDeEIsSUFBSSxFQUFFLHlCQUF5QjtvQkFDL0IsTUFBTSxFQUFFLDBCQUEwQjtvQkFDbEMsSUFBSSxFQUFFLFlBQXFCO29CQUMzQixXQUFXLEVBQUUsa0NBQWtDO29CQUMvQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLE1BQU07aUJBQ2hCO2dCQUNEO29CQUNFLElBQUksRUFBRSxTQUFrQjtvQkFDeEIsSUFBSSxFQUFFLDBDQUEwQztvQkFDaEQsTUFBTSxFQUFFLDBCQUEwQjtvQkFDbEMsSUFBSSxFQUFFLFlBQXFCO29CQUMzQixXQUFXLEVBQUUsb0RBQW9EO29CQUNqRSxLQUFLLEVBQUUsQ0FBQyxDQUFDLG9CQUFvQjtpQkFDOUI7YUFDRixDQUFDO1lBRUYsMkJBQTJCO1lBQzNCLEtBQUssTUFBTSxDQUFDLE1BQU0sRUFBRSxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsY0FBYyxFQUFFLENBQUM7Z0JBQy9DLE9BQU8sQ0FBQyxJQUFJLENBQUM7b0JBQ1gsSUFBSSxFQUFFLE9BQWdCO29CQUN0QixJQUFJLEVBQUUsNkJBQTZCO29CQUNuQyxNQUFNLEVBQUUsMEJBQTBCO29CQUNsQyxJQUFJLEVBQUUsWUFBcUI7b0JBQzNCLFdBQVcsRUFBRSxpQ0FBaUMsTUFBTSxHQUFHO29CQUN2RCxNQUFNLEVBQUUsRUFBRSxhQUFhLEVBQUUsTUFBTSxFQUFFO29CQUNqQyxLQUFLLEVBQUUsS0FBSztpQkFDYixDQUFDLENBQUM7WUFDTCxDQUFDO1lBRUQsOEJBQThCO1lBQzlCLEtBQUssTUFBTSxDQUFDLEtBQUssRUFBRSxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztnQkFDakQsT0FBTyxDQUFDLElBQUksQ0FBQztvQkFDWCxJQUFJLEVBQUUsT0FBZ0I7b0JBQ3RCLElBQUksRUFBRSxnQ0FBZ0M7b0JBQ3RDLE1BQU0sRUFBRSwwQkFBMEI7b0JBQ2xDLElBQUksRUFBRSxZQUFxQjtvQkFDM0IsV0FBVyxFQUFFLGtDQUFrQyxLQUFLLEdBQUc7b0JBQ3ZELE1BQU0sRUFBRSxFQUFFLGdCQUFnQixFQUFFLEtBQUssRUFBRTtvQkFDbkMsS0FBSyxFQUFFLEtBQUs7aUJBQ2IsQ0FBQyxDQUFDO1lBQ0wsQ0FBQztZQUVELE9BQU8sT0FBTyxDQUFDO1FBQ2pCLENBQUM7UUFBQyxNQUFNLENBQUM7WUFDUCxPQUFPLEVBQUUsQ0FBQztRQUNaLENBQUM7SUFDSCxDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIENvbGxlY3RvciBmb3IgR2F0ZWtlZXBlciBwb2xpY3kgZW5mb3JjZW1lbnQgbWV0cmljcy5cbiAqXG4gKiBSZWFkcyBmcm9tIEdhdGVrZWVwZXJNZXRyaWNzVHJhY2tlciBhbmQgZW1pdHMgY291bnRlciBhbmQgZ2F1Z2VcbiAqIG1ldHJpYyBlbnRyaWVzIGZvciB0aGUgTWV0cmljc01hbmFnZXIgcGlwZWxpbmUuXG4gKi9cbmltcG9ydCB0eXBlIHsgSU1ldHJpY0NvbGxlY3RvciwgTWV0cmljRW50cnkgfSBmcm9tICcuLi90eXBlcy5qcyc7XG5pbXBvcnQgdHlwZSB7IEdhdGVrZWVwZXJNZXRyaWNzVHJhY2tlciB9IGZyb20gJy4uL0dhdGVrZWVwZXJNZXRyaWNzVHJhY2tlci5qcyc7XG5cbmV4cG9ydCBjbGFzcyBHYXRla2VlcGVyTWV0cmljc0NvbGxlY3RvciBpbXBsZW1lbnRzIElNZXRyaWNDb2xsZWN0b3Ige1xuICByZWFkb25seSBuYW1lID0gJ2dhdGVrZWVwZXItbWV0cmljcyc7XG4gIHJlYWRvbmx5IGRlc2NyaXB0aW9uID0gJ0dhdGVrZWVwZXIgcG9saWN5IGVuZm9yY2VtZW50OiBhbGxvd2VkL2RlbmllZC9jb25maXJtZWQsIHBvbGljeSBzb3VyY2VzLCBwZXJtaXNzaW9uIGxldmVscy4nO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgcmVhZG9ubHkgdHJhY2tlcjogR2F0ZWtlZXBlck1ldHJpY3NUcmFja2VyKSB7fVxuXG4gIGNvbGxlY3QoKTogTWV0cmljRW50cnlbXSB7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IG0gPSB0aGlzLnRyYWNrZXIuZ2V0TWV0cmljcygpO1xuXG4gICAgICBjb25zdCBlbnRyaWVzOiBNZXRyaWNFbnRyeVtdID0gW1xuICAgICAgICB7XG4gICAgICAgICAgdHlwZTogJ2NvdW50ZXInIGFzIGNvbnN0LFxuICAgICAgICAgIG5hbWU6ICdnYXRla2VlcGVyLmRlY2lzaW9uc190b3RhbCcsXG4gICAgICAgICAgc291cmNlOiAnR2F0ZWtlZXBlck1ldHJpY3NUcmFja2VyJyxcbiAgICAgICAgICB1bml0OiAnb3BlcmF0aW9ucycgYXMgY29uc3QsXG4gICAgICAgICAgZGVzY3JpcHRpb246ICdUb3RhbCBHYXRla2VlcGVyIHBvbGljeSBkZWNpc2lvbnMuJyxcbiAgICAgICAgICB2YWx1ZTogbS50b3RhbERlY2lzaW9ucyxcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIHR5cGU6ICdjb3VudGVyJyBhcyBjb25zdCxcbiAgICAgICAgICBuYW1lOiAnZ2F0ZWtlZXBlci5hbGxvd2VkX3RvdGFsJyxcbiAgICAgICAgICBzb3VyY2U6ICdHYXRla2VlcGVyTWV0cmljc1RyYWNrZXInLFxuICAgICAgICAgIHVuaXQ6ICdvcGVyYXRpb25zJyBhcyBjb25zdCxcbiAgICAgICAgICBkZXNjcmlwdGlvbjogJ09wZXJhdGlvbnMgYWxsb3dlZCBieSBHYXRla2VlcGVyLicsXG4gICAgICAgICAgdmFsdWU6IG0uYWxsb3dlZCxcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIHR5cGU6ICdjb3VudGVyJyBhcyBjb25zdCxcbiAgICAgICAgICBuYW1lOiAnZ2F0ZWtlZXBlci5kZW5pZWRfdG90YWwnLFxuICAgICAgICAgIHNvdXJjZTogJ0dhdGVrZWVwZXJNZXRyaWNzVHJhY2tlcicsXG4gICAgICAgICAgdW5pdDogJ29wZXJhdGlvbnMnIGFzIGNvbnN0LFxuICAgICAgICAgIGRlc2NyaXB0aW9uOiAnT3BlcmF0aW9ucyBkZW5pZWQgYnkgR2F0ZWtlZXBlci4nLFxuICAgICAgICAgIHZhbHVlOiBtLmRlbmllZCxcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIHR5cGU6ICdjb3VudGVyJyBhcyBjb25zdCxcbiAgICAgICAgICBuYW1lOiAnZ2F0ZWtlZXBlci5jb25maXJtYXRpb25zX3JlcXVlc3RlZF90b3RhbCcsXG4gICAgICAgICAgc291cmNlOiAnR2F0ZWtlZXBlck1ldHJpY3NUcmFja2VyJyxcbiAgICAgICAgICB1bml0OiAnb3BlcmF0aW9ucycgYXMgY29uc3QsXG4gICAgICAgICAgZGVzY3JpcHRpb246ICdUb3RhbCBvcGVyYXRpb25zIHRoYXQgcmVxdWVzdGVkIHVzZXIgY29uZmlybWF0aW9uLicsXG4gICAgICAgICAgdmFsdWU6IG0uY29uZmlybWF0aW9uc1BlbmRpbmcsXG4gICAgICAgIH0sXG4gICAgICBdO1xuXG4gICAgICAvLyBQZXItcG9saWN5LXNvdXJjZSBnYXVnZXNcbiAgICAgIGZvciAoY29uc3QgW3NvdXJjZSwgY291bnRdIG9mIG0uYnlQb2xpY3lTb3VyY2UpIHtcbiAgICAgICAgZW50cmllcy5wdXNoKHtcbiAgICAgICAgICB0eXBlOiAnZ2F1Z2UnIGFzIGNvbnN0LFxuICAgICAgICAgIG5hbWU6ICdnYXRla2VlcGVyLmJ5X3BvbGljeV9zb3VyY2UnLFxuICAgICAgICAgIHNvdXJjZTogJ0dhdGVrZWVwZXJNZXRyaWNzVHJhY2tlcicsXG4gICAgICAgICAgdW5pdDogJ29wZXJhdGlvbnMnIGFzIGNvbnN0LFxuICAgICAgICAgIGRlc2NyaXB0aW9uOiBgRGVjaXNpb25zIGZyb20gcG9saWN5IHNvdXJjZTogJHtzb3VyY2V9LmAsXG4gICAgICAgICAgbGFiZWxzOiB7IHBvbGljeV9zb3VyY2U6IHNvdXJjZSB9LFxuICAgICAgICAgIHZhbHVlOiBjb3VudCxcbiAgICAgICAgfSk7XG4gICAgICB9XG5cbiAgICAgIC8vIFBlci1wZXJtaXNzaW9uLWxldmVsIGdhdWdlc1xuICAgICAgZm9yIChjb25zdCBbbGV2ZWwsIGNvdW50XSBvZiBtLmJ5UGVybWlzc2lvbkxldmVsKSB7XG4gICAgICAgIGVudHJpZXMucHVzaCh7XG4gICAgICAgICAgdHlwZTogJ2dhdWdlJyBhcyBjb25zdCxcbiAgICAgICAgICBuYW1lOiAnZ2F0ZWtlZXBlci5ieV9wZXJtaXNzaW9uX2xldmVsJyxcbiAgICAgICAgICBzb3VyY2U6ICdHYXRla2VlcGVyTWV0cmljc1RyYWNrZXInLFxuICAgICAgICAgIHVuaXQ6ICdvcGVyYXRpb25zJyBhcyBjb25zdCxcbiAgICAgICAgICBkZXNjcmlwdGlvbjogYERlY2lzaW9ucyBhdCBwZXJtaXNzaW9uIGxldmVsOiAke2xldmVsfS5gLFxuICAgICAgICAgIGxhYmVsczogeyBwZXJtaXNzaW9uX2xldmVsOiBsZXZlbCB9LFxuICAgICAgICAgIHZhbHVlOiBjb3VudCxcbiAgICAgICAgfSk7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBlbnRyaWVzO1xuICAgIH0gY2F0Y2gge1xuICAgICAgcmV0dXJuIFtdO1xuICAgIH1cbiAgfVxufVxuIl19