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.

23 lines 2.53 kB
/** * Simple sliding-window rate limiter. * Tracks timestamps of recent requests and evicts entries older than the window. */ export class SlidingWindowRateLimiter { maxRequests; windowMs; timestamps = []; constructor(maxRequests, windowMs) { this.maxRequests = maxRequests; this.windowMs = windowMs; } /** Returns true if the request is allowed, false if rate-limited. */ tryAcquire() { const now = Date.now(); this.timestamps = this.timestamps.filter(t => now - t < this.windowMs); if (this.timestamps.length >= this.maxRequests) return false; this.timestamps.push(now); return true; } } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiU2xpZGluZ1dpbmRvd1JhdGVMaW1pdGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3V0aWxzL1NsaWRpbmdXaW5kb3dSYXRlTGltaXRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7O0dBR0c7QUFDSCxNQUFNLE9BQU8sd0JBQXdCO0lBR2hCO0lBQ0E7SUFIWCxVQUFVLEdBQWEsRUFBRSxDQUFDO0lBQ2xDLFlBQ21CLFdBQW1CLEVBQ25CLFFBQWdCO1FBRGhCLGdCQUFXLEdBQVgsV0FBVyxDQUFRO1FBQ25CLGFBQVEsR0FBUixRQUFRLENBQVE7SUFDaEMsQ0FBQztJQUVKLHFFQUFxRTtJQUNyRSxVQUFVO1FBQ1IsTUFBTSxHQUFHLEdBQUcsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDO1FBQ3ZCLElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUN2RSxJQUFJLElBQUksQ0FBQyxVQUFVLENBQUMsTUFBTSxJQUFJLElBQUksQ0FBQyxXQUFXO1lBQUUsT0FBTyxLQUFLLENBQUM7UUFDN0QsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDMUIsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIFNpbXBsZSBzbGlkaW5nLXdpbmRvdyByYXRlIGxpbWl0ZXIuXG4gKiBUcmFja3MgdGltZXN0YW1wcyBvZiByZWNlbnQgcmVxdWVzdHMgYW5kIGV2aWN0cyBlbnRyaWVzIG9sZGVyIHRoYW4gdGhlIHdpbmRvdy5cbiAqL1xuZXhwb3J0IGNsYXNzIFNsaWRpbmdXaW5kb3dSYXRlTGltaXRlciB7XG4gIHByaXZhdGUgdGltZXN0YW1wczogbnVtYmVyW10gPSBbXTtcbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSByZWFkb25seSBtYXhSZXF1ZXN0czogbnVtYmVyLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgd2luZG93TXM6IG51bWJlcixcbiAgKSB7fVxuXG4gIC8qKiBSZXR1cm5zIHRydWUgaWYgdGhlIHJlcXVlc3QgaXMgYWxsb3dlZCwgZmFsc2UgaWYgcmF0ZS1saW1pdGVkLiAqL1xuICB0cnlBY3F1aXJlKCk6IGJvb2xlYW4ge1xuICAgIGNvbnN0IG5vdyA9IERhdGUubm93KCk7XG4gICAgdGhpcy50aW1lc3RhbXBzID0gdGhpcy50aW1lc3RhbXBzLmZpbHRlcih0ID0+IG5vdyAtIHQgPCB0aGlzLndpbmRvd01zKTtcbiAgICBpZiAodGhpcy50aW1lc3RhbXBzLmxlbmd0aCA+PSB0aGlzLm1heFJlcXVlc3RzKSByZXR1cm4gZmFsc2U7XG4gICAgdGhpcy50aW1lc3RhbXBzLnB1c2gobm93KTtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxufVxuIl19