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