@mickdarling/dollhousemcp
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 • 3.49 kB
JavaScript
/**
* Security-related constants and limits
*/
// Security and performance limits
export const SECURITY_LIMITS = {
MAX_PERSONA_SIZE_BYTES: 1024 * 1024 * 2, // 2MB max persona file size
MAX_FILENAME_LENGTH: 255, // Max filename length
MAX_PATH_DEPTH: 10, // Max directory depth for paths
MAX_CONTENT_LENGTH: 500000, // Max persona content length (500KB)
RATE_LIMIT_REQUESTS: 100, // Max requests per window
RATE_LIMIT_WINDOW_MS: 60 * 1000, // 1 minute window
CACHE_TTL_MS: 5 * 60 * 1000, // 5 minute cache TTL
MAX_SEARCH_RESULTS: 50 // Max search results to return
};
// Input validation patterns
export const VALIDATION_PATTERNS = {
SAFE_FILENAME: /^[a-zA-Z0-9][a-zA-Z0-9\-_.]{0,250}[a-zA-Z0-9]$/,
SAFE_PATH: /^[a-zA-Z0-9\/\-_.]{1,500}$/,
SAFE_USERNAME: /^[a-zA-Z0-9][a-zA-Z0-9\-_.]{0,30}[a-zA-Z0-9]$/,
SAFE_CATEGORY: /^[a-zA-Z][a-zA-Z0-9\-_]{0,20}$/,
SAFE_EMAIL: /^[^\s@]{1,64}@[^\s@]{1,253}\.[^\s@]{1,63}$/ // RFC 5321 compliant limits
};
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uc3RhbnRzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3NlY3VyaXR5L2NvbnN0YW50cy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUVILGtDQUFrQztBQUNsQyxNQUFNLENBQUMsTUFBTSxlQUFlLEdBQUc7SUFDN0Isc0JBQXNCLEVBQUUsSUFBSSxHQUFHLElBQUksR0FBRyxDQUFDLEVBQUcsNEJBQTRCO0lBQ3RFLG1CQUFtQixFQUFFLEdBQUcsRUFBbUIsc0JBQXNCO0lBQ2pFLGNBQWMsRUFBRSxFQUFFLEVBQXdCLGdDQUFnQztJQUMxRSxrQkFBa0IsRUFBRSxNQUFNLEVBQWdCLHFDQUFxQztJQUMvRSxtQkFBbUIsRUFBRSxHQUFHLEVBQWtCLDBCQUEwQjtJQUNwRSxvQkFBb0IsRUFBRSxFQUFFLEdBQUcsSUFBSSxFQUFVLGtCQUFrQjtJQUMzRCxZQUFZLEVBQUUsQ0FBQyxHQUFHLEVBQUUsR0FBRyxJQUFJLEVBQWMscUJBQXFCO0lBQzlELGtCQUFrQixFQUFFLEVBQUUsQ0FBb0IsK0JBQStCO0NBQzFFLENBQUM7QUFFRiw0QkFBNEI7QUFDNUIsTUFBTSxDQUFDLE1BQU0sbUJBQW1CLEdBQUc7SUFDakMsYUFBYSxFQUFFLGdEQUFnRDtJQUMvRCxTQUFTLEVBQUUsNEJBQTRCO0lBQ3ZDLGFBQWEsRUFBRSwrQ0FBK0M7SUFDOUQsYUFBYSxFQUFFLGdDQUFnQztJQUMvQyxVQUFVLEVBQUUsNENBQTRDLENBQUUsNEJBQTRCO0NBQ3ZGLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIFNlY3VyaXR5LXJlbGF0ZWQgY29uc3RhbnRzIGFuZCBsaW1pdHNcbiAqL1xuXG4vLyBTZWN1cml0eSBhbmQgcGVyZm9ybWFuY2UgbGltaXRzXG5leHBvcnQgY29uc3QgU0VDVVJJVFlfTElNSVRTID0ge1xuICBNQVhfUEVSU09OQV9TSVpFX0JZVEVTOiAxMDI0ICogMTAyNCAqIDIsICAvLyAyTUIgbWF4IHBlcnNvbmEgZmlsZSBzaXplXG4gIE1BWF9GSUxFTkFNRV9MRU5HVEg6IDI1NSwgICAgICAgICAgICAgICAgICAvLyBNYXggZmlsZW5hbWUgbGVuZ3RoXG4gIE1BWF9QQVRIX0RFUFRIOiAxMCwgICAgICAgICAgICAgICAgICAgICAgIC8vIE1heCBkaXJlY3RvcnkgZGVwdGggZm9yIHBhdGhzXG4gIE1BWF9DT05URU5UX0xFTkdUSDogNTAwMDAwLCAgICAgICAgICAgICAgIC8vIE1heCBwZXJzb25hIGNvbnRlbnQgbGVuZ3RoICg1MDBLQilcbiAgUkFURV9MSU1JVF9SRVFVRVNUUzogMTAwLCAgICAgICAgICAgICAgICAgLy8gTWF4IHJlcXVlc3RzIHBlciB3aW5kb3dcbiAgUkFURV9MSU1JVF9XSU5ET1dfTVM6IDYwICogMTAwMCwgICAgICAgICAvLyAxIG1pbnV0ZSB3aW5kb3dcbiAgQ0FDSEVfVFRMX01TOiA1ICogNjAgKiAxMDAwLCAgICAgICAgICAgICAvLyA1IG1pbnV0ZSBjYWNoZSBUVExcbiAgTUFYX1NFQVJDSF9SRVNVTFRTOiA1MCAgICAgICAgICAgICAgICAgICAgLy8gTWF4IHNlYXJjaCByZXN1bHRzIHRvIHJldHVyblxufTtcblxuLy8gSW5wdXQgdmFsaWRhdGlvbiBwYXR0ZXJuc1xuZXhwb3J0IGNvbnN0IFZBTElEQVRJT05fUEFUVEVSTlMgPSB7XG4gIFNBRkVfRklMRU5BTUU6IC9eW2EtekEtWjAtOV1bYS16QS1aMC05XFwtXy5dezAsMjUwfVthLXpBLVowLTldJC8sXG4gIFNBRkVfUEFUSDogL15bYS16QS1aMC05XFwvXFwtXy5dezEsNTAwfSQvLFxuICBTQUZFX1VTRVJOQU1FOiAvXlthLXpBLVowLTldW2EtekEtWjAtOVxcLV8uXXswLDMwfVthLXpBLVowLTldJC8sXG4gIFNBRkVfQ0FURUdPUlk6IC9eW2EtekEtWl1bYS16QS1aMC05XFwtX117MCwyMH0kLyxcbiAgU0FGRV9FTUFJTDogL15bXlxcc0BdezEsNjR9QFteXFxzQF17MSwyNTN9XFwuW15cXHNAXXsxLDYzfSQvICAvLyBSRkMgNTMyMSBjb21wbGlhbnQgbGltaXRzXG59OyJdfQ==