@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.
77 lines • 9.34 kB
JavaScript
/**
* Gatekeeper Configuration
*
* Default configuration for the Gatekeeper Policy Engine.
* Contains tunable settings for verification strictness,
* timeouts, and other enforcement parameters.
*/
import { VerificationStrictness } from './GatekeeperTypes.js';
/**
* Default Gatekeeper configuration.
* These values provide a secure, user-friendly balance.
*/
export const DEFAULT_GATEKEEPER_CONFIG = {
strictness: VerificationStrictness.STANDARD,
verificationTimeoutMs: 60000, // 60 seconds
enableAuditLogging: true,
maxSessionConfirmations: 100,
allowElementPolicyOverrides: true,
requireDangerZoneVerification: true,
};
/**
* Gatekeeper configuration manager.
* Merges user config with defaults and provides type-safe access.
*/
export class GatekeeperConfig {
config;
constructor(options = {}) {
this.config = {
...DEFAULT_GATEKEEPER_CONFIG,
...options,
};
}
/**
* Get the verification strictness level.
*/
get strictness() {
return this.config.strictness;
}
/**
* Get the verification timeout in milliseconds.
*/
get verificationTimeoutMs() {
return this.config.verificationTimeoutMs;
}
/**
* Check if audit logging is enabled.
*/
get enableAuditLogging() {
return this.config.enableAuditLogging;
}
/**
* Get the maximum number of session confirmations to cache.
*/
get maxSessionConfirmations() {
return this.config.maxSessionConfirmations;
}
/**
* Whether element policies are permitted to override default operation permission levels.
* When `false`, Layer 2 of `Gatekeeper.enforce()` is skipped entirely (operator kill switch).
*/
get allowElementPolicyOverrides() {
return this.config.allowElementPolicyOverrides;
}
/**
* Check if danger zone operations require extra verification.
*/
get requireDangerZoneVerification() {
return this.config.requireDangerZoneVerification;
}
/**
* Get a copy of the full configuration.
*/
toJSON() {
return { ...this.config };
}
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiR2F0ZWtlZXBlckNvbmZpZy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9oYW5kbGVycy9tY3AtYXFsL0dhdGVrZWVwZXJDb25maWcudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7OztHQU1HO0FBRUgsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFzQzlEOzs7R0FHRztBQUNILE1BQU0sQ0FBQyxNQUFNLHlCQUF5QixHQUFzQztJQUMxRSxVQUFVLEVBQUUsc0JBQXNCLENBQUMsUUFBUTtJQUMzQyxxQkFBcUIsRUFBRSxLQUFLLEVBQUUsYUFBYTtJQUMzQyxrQkFBa0IsRUFBRSxJQUFJO0lBQ3hCLHVCQUF1QixFQUFFLEdBQUc7SUFDNUIsMkJBQTJCLEVBQUUsSUFBSTtJQUNqQyw2QkFBNkIsRUFBRSxJQUFJO0NBQ3BDLENBQUM7QUFFRjs7O0dBR0c7QUFDSCxNQUFNLE9BQU8sZ0JBQWdCO0lBQ1YsTUFBTSxDQUFvQztJQUUzRCxZQUFZLFVBQW1DLEVBQUU7UUFDL0MsSUFBSSxDQUFDLE1BQU0sR0FBRztZQUNaLEdBQUcseUJBQXlCO1lBQzVCLEdBQUcsT0FBTztTQUNYLENBQUM7SUFDSixDQUFDO0lBRUQ7O09BRUc7SUFDSCxJQUFJLFVBQVU7UUFDWixPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDO0lBQ2hDLENBQUM7SUFFRDs7T0FFRztJQUNILElBQUkscUJBQXFCO1FBQ3ZCLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxxQkFBcUIsQ0FBQztJQUMzQyxDQUFDO0lBRUQ7O09BRUc7SUFDSCxJQUFJLGtCQUFrQjtRQUNwQixPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsa0JBQWtCLENBQUM7SUFDeEMsQ0FBQztJQUVEOztPQUVHO0lBQ0gsSUFBSSx1QkFBdUI7UUFDekIsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLHVCQUF1QixDQUFDO0lBQzdDLENBQUM7SUFFRDs7O09BR0c7SUFDSCxJQUFJLDJCQUEyQjtRQUM3QixPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsMkJBQTJCLENBQUM7SUFDakQsQ0FBQztJQUVEOztPQUVHO0lBQ0gsSUFBSSw2QkFBNkI7UUFDL0IsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLDZCQUE2QixDQUFDO0lBQ25ELENBQUM7SUFFRDs7T0FFRztJQUNILE1BQU07UUFDSixPQUFPLEVBQUUsR0FBRyxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7SUFDNUIsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBHYXRla2VlcGVyIENvbmZpZ3VyYXRpb25cbiAqXG4gKiBEZWZhdWx0IGNvbmZpZ3VyYXRpb24gZm9yIHRoZSBHYXRla2VlcGVyIFBvbGljeSBFbmdpbmUuXG4gKiBDb250YWlucyB0dW5hYmxlIHNldHRpbmdzIGZvciB2ZXJpZmljYXRpb24gc3RyaWN0bmVzcyxcbiAqIHRpbWVvdXRzLCBhbmQgb3RoZXIgZW5mb3JjZW1lbnQgcGFyYW1ldGVycy5cbiAqL1xuXG5pbXBvcnQgeyBWZXJpZmljYXRpb25TdHJpY3RuZXNzIH0gZnJvbSAnLi9HYXRla2VlcGVyVHlwZXMuanMnO1xuXG4vKipcbiAqIEdhdGVrZWVwZXIgY29uZmlndXJhdGlvbiBpbnRlcmZhY2UuXG4gKiBBbGwgc2V0dGluZ3MgYXJlIG9wdGlvbmFsIGFuZCBmYWxsIGJhY2sgdG8gZGVmYXVsdHMuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgR2F0ZWtlZXBlckNvbmZpZ09wdGlvbnMge1xuICAvKiogVmVyaWZpY2F0aW9uIHN0cmljdG5lc3MgbGV2ZWwgKGRlZmF1bHQ6IFNUQU5EQVJEKSAqL1xuICBzdHJpY3RuZXNzPzogVmVyaWZpY2F0aW9uU3RyaWN0bmVzcztcbiAgLyoqIFRpbWVvdXQgZm9yIHZlcmlmaWNhdGlvbiBwcm9tcHRzIGluIG1pbGxpc2Vjb25kcyAoZGVmYXVsdDogNjAwMDApICovXG4gIHZlcmlmaWNhdGlvblRpbWVvdXRNcz86IG51bWJlcjtcbiAgLyoqIFdoZXRoZXIgdG8gZW5hYmxlIGF1ZGl0IGxvZ2dpbmcgKGRlZmF1bHQ6IHRydWUpICovXG4gIGVuYWJsZUF1ZGl0TG9nZ2luZz86IGJvb2xlYW47XG4gIC8qKiBNYXhpbXVtIG51bWJlciBvZiBzZXNzaW9uIGNvbmZpcm1hdGlvbnMgdG8gY2FjaGUgKGRlZmF1bHQ6IDEwMCkgKi9cbiAgbWF4U2Vzc2lvbkNvbmZpcm1hdGlvbnM/OiBudW1iZXI7XG4gIC8qKlxuICAgKiBXaGV0aGVyIGFjdGl2ZSBlbGVtZW50IHBvbGljaWVzIChhbGxvdy9jb25maXJtL2Rlbnkvc2NvcGVSZXN0cmljdGlvbnMpIGNhbiBvdmVycmlkZSB0aGVcbiAgICogZGVmYXVsdCBvcGVyYXRpb24gcGVybWlzc2lvbiBsZXZlbHMgKGRlZmF1bHQ6IHRydWUpLlxuICAgKlxuICAgKiBXaGVuIGB0cnVlYCAoZGVmYXVsdCk6IGVsZW1lbnRzIGxvYWRlZCBpbnRvIHRoZSBzZXNzaW9uIGNhbiBlbGV2YXRlIG9yIHJlc3RyaWN0IGFueVxuICAgKiBlbGV2YXRhYmxlIG9wZXJhdGlvbiB3aXRoaW4gdGhlIHBvbGljeSBoaWVyYXJjaHkgKGRlbnkgPiBjb25maXJtID4gYWxsb3cgPiByb3V0ZSBkZWZhdWx0KS5cbiAgICpcbiAgICogV2hlbiBgZmFsc2VgOiBMYXllciAyIG9mIGBHYXRla2VlcGVyLmVuZm9yY2UoKWAgaXMgYnlwYXNzZWQgZW50aXJlbHkuIE9ubHkgcm91dGUgdmFsaWRhdGlvblxuICAgKiBhbmQgZGVmYXVsdCBvcGVyYXRpb24gcGVybWlzc2lvbiBsZXZlbHMgYXBwbHkg4oCUIG5vIGVsZW1lbnQgY2FuIGVsZXZhdGUgb3IgcmVzdHJpY3QgYW55dGhpbmcuXG4gICAqXG4gICAqIFVzZSBjYXNlczpcbiAgICogLSAqKkVtZXJnZW5jeSBsb2NrZG93bioqOiBvcGVyYXRvciBkaXNhYmxlcyB0aGUgZWxlbWVudCBwb2xpY3kgbGF5ZXIgd2hlbiBhIGNvbXByb21pc2VkXG4gICAqICAgb3IgbWFsZm9ybWVkIGVsZW1lbnQgaXMgc3VzcGVjdGVkIG9mIGluZmx1ZW5jaW5nIGVuZm9yY2VtZW50IGRlY2lzaW9ucy5cbiAgICogLSAqKkhhcmRlbmVkIGRlcGxveW1lbnQqKjogaW5mcmFzdHJ1Y3R1cmUtbWFuYWdlZCBwb2xpY3kgb25seTsgZWxlbWVudHMgbXVzdCBuZXZlciB0b3VjaFxuICAgKiAgIHNlY3VyaXR5IHBvc3R1cmUgKHNldCB0aGlzIHZpYSBlbnYtdmFyIG9yIGRlcGxveSBjb25maWcpLlxuICAgKiAtICoqUG9saWN5IGRlYnVnZ2luZyoqOiBpc29sYXRlIHdoZXRoZXIgYSBnYXRla2VlcGVyIGRlY2lzaW9uIG9yaWdpbmF0ZXMgZnJvbSBlbGVtZW50XG4gICAqICAgcG9saWN5IG9yIGZyb20gdGhlIHJvdXRlIGRlZmF1bHQgYnkgdG9nZ2xpbmcgdGhpcyBmbGFnLlxuICAgKi9cbiAgYWxsb3dFbGVtZW50UG9saWN5T3ZlcnJpZGVzPzogYm9vbGVhbjtcbiAgLyoqIFdoZXRoZXIgZGFuZ2VyIHpvbmUgb3BlcmF0aW9ucyByZXF1aXJlIGV4dHJhIHZlcmlmaWNhdGlvbiAoZGVmYXVsdDogdHJ1ZSkgKi9cbiAgcmVxdWlyZURhbmdlclpvbmVWZXJpZmljYXRpb24/OiBib29sZWFuO1xufVxuXG4vKipcbiAqIERlZmF1bHQgR2F0ZWtlZXBlciBjb25maWd1cmF0aW9uLlxuICogVGhlc2UgdmFsdWVzIHByb3ZpZGUgYSBzZWN1cmUsIHVzZXItZnJpZW5kbHkgYmFsYW5jZS5cbiAqL1xuZXhwb3J0IGNvbnN0IERFRkFVTFRfR0FURUtFRVBFUl9DT05GSUc6IFJlcXVpcmVkPEdhdGVrZWVwZXJDb25maWdPcHRpb25zPiA9IHtcbiAgc3RyaWN0bmVzczogVmVyaWZpY2F0aW9uU3RyaWN0bmVzcy5TVEFOREFSRCxcbiAgdmVyaWZpY2F0aW9uVGltZW91dE1zOiA2MDAwMCwgLy8gNjAgc2Vjb25kc1xuICBlbmFibGVBdWRpdExvZ2dpbmc6IHRydWUsXG4gIG1heFNlc3Npb25Db25maXJtYXRpb25zOiAxMDAsXG4gIGFsbG93RWxlbWVudFBvbGljeU92ZXJyaWRlczogdHJ1ZSxcbiAgcmVxdWlyZURhbmdlclpvbmVWZXJpZmljYXRpb246IHRydWUsXG59O1xuXG4vKipcbiAqIEdhdGVrZWVwZXIgY29uZmlndXJhdGlvbiBtYW5hZ2VyLlxuICogTWVyZ2VzIHVzZXIgY29uZmlnIHdpdGggZGVmYXVsdHMgYW5kIHByb3ZpZGVzIHR5cGUtc2FmZSBhY2Nlc3MuXG4gKi9cbmV4cG9ydCBjbGFzcyBHYXRla2VlcGVyQ29uZmlnIHtcbiAgcHJpdmF0ZSByZWFkb25seSBjb25maWc6IFJlcXVpcmVkPEdhdGVrZWVwZXJDb25maWdPcHRpb25zPjtcblxuICBjb25zdHJ1Y3RvcihvcHRpb25zOiBHYXRla2VlcGVyQ29uZmlnT3B0aW9ucyA9IHt9KSB7XG4gICAgdGhpcy5jb25maWcgPSB7XG4gICAgICAuLi5ERUZBVUxUX0dBVEVLRUVQRVJfQ09ORklHLFxuICAgICAgLi4ub3B0aW9ucyxcbiAgICB9O1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCB0aGUgdmVyaWZpY2F0aW9uIHN0cmljdG5lc3MgbGV2ZWwuXG4gICAqL1xuICBnZXQgc3RyaWN0bmVzcygpOiBWZXJpZmljYXRpb25TdHJpY3RuZXNzIHtcbiAgICByZXR1cm4gdGhpcy5jb25maWcuc3RyaWN0bmVzcztcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgdGhlIHZlcmlmaWNhdGlvbiB0aW1lb3V0IGluIG1pbGxpc2Vjb25kcy5cbiAgICovXG4gIGdldCB2ZXJpZmljYXRpb25UaW1lb3V0TXMoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5jb25maWcudmVyaWZpY2F0aW9uVGltZW91dE1zO1xuICB9XG5cbiAgLyoqXG4gICAqIENoZWNrIGlmIGF1ZGl0IGxvZ2dpbmcgaXMgZW5hYmxlZC5cbiAgICovXG4gIGdldCBlbmFibGVBdWRpdExvZ2dpbmcoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuY29uZmlnLmVuYWJsZUF1ZGl0TG9nZ2luZztcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgdGhlIG1heGltdW0gbnVtYmVyIG9mIHNlc3Npb24gY29uZmlybWF0aW9ucyB0byBjYWNoZS5cbiAgICovXG4gIGdldCBtYXhTZXNzaW9uQ29uZmlybWF0aW9ucygpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLmNvbmZpZy5tYXhTZXNzaW9uQ29uZmlybWF0aW9ucztcbiAgfVxuXG4gIC8qKlxuICAgKiBXaGV0aGVyIGVsZW1lbnQgcG9saWNpZXMgYXJlIHBlcm1pdHRlZCB0byBvdmVycmlkZSBkZWZhdWx0IG9wZXJhdGlvbiBwZXJtaXNzaW9uIGxldmVscy5cbiAgICogV2hlbiBgZmFsc2VgLCBMYXllciAyIG9mIGBHYXRla2VlcGVyLmVuZm9yY2UoKWAgaXMgc2tpcHBlZCBlbnRpcmVseSAob3BlcmF0b3Iga2lsbCBzd2l0Y2gpLlxuICAgKi9cbiAgZ2V0IGFsbG93RWxlbWVudFBvbGljeU92ZXJyaWRlcygpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5jb25maWcuYWxsb3dFbGVtZW50UG9saWN5T3ZlcnJpZGVzO1xuICB9XG5cbiAgLyoqXG4gICAqIENoZWNrIGlmIGRhbmdlciB6b25lIG9wZXJhdGlvbnMgcmVxdWlyZSBleHRyYSB2ZXJpZmljYXRpb24uXG4gICAqL1xuICBnZXQgcmVxdWlyZURhbmdlclpvbmVWZXJpZmljYXRpb24oKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuY29uZmlnLnJlcXVpcmVEYW5nZXJab25lVmVyaWZpY2F0aW9uO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCBhIGNvcHkgb2YgdGhlIGZ1bGwgY29uZmlndXJhdGlvbi5cbiAgICovXG4gIHRvSlNPTigpOiBSZXF1aXJlZDxHYXRla2VlcGVyQ29uZmlnT3B0aW9ucz4ge1xuICAgIHJldHVybiB7IC4uLnRoaXMuY29uZmlnIH07XG4gIH1cbn1cbiJdfQ==