@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.
68 lines • 2.46 kB
TypeScript
/**
* Utility functions for Memory element operations
*
* PERFORMANCE CONSIDERATIONS:
* - ID generation should be fast (<1ms)
* - Hash functions optimized for memory verification
* - Index operations designed for O(log n) complexity
*
* SECURITY CONSIDERATIONS:
* - Hash functions normalize Unicode to prevent bypass attempts
* - Content verification detects external modifications
* - Protects against manual editing and tampering
*/
/**
* Generate a unique ID for memory entries
* Format: mem_{timestamp}_{random}
*
* @returns Unique memory entry ID
* @example
* generateMemoryId() // "mem_1699234567890_x7k2n9p4m"
*/
export declare function generateMemoryId(): string;
/**
* Generate a content hash for memory integrity verification
* Uses SHA-256 for cryptographic strength with Unicode normalization
*
* SECURITY: Normalizes content to prevent Unicode-based bypass attempts
* where attackers use homographs or invisible characters to create
* content that appears identical but has a different hash
*
* @param content - The content to hash (will be normalized)
* @returns Hex-encoded hash string
*/
export declare function generateContentHash(content: string): string;
/**
* Verify memory content integrity
*
* SECURITY: This function detects:
* - External tool modifications (didn't use our hash function)
* - Manual human editing of YAML files
* - Filesystem corruption
* - Tampering attempts (including Unicode tricks)
*
* @param content - The content to verify (will be normalized)
* @param expectedHash - The expected hash value
* @returns True if content matches hash after normalization
*/
export declare function verifyContentIntegrity(content: string, expectedHash: string): boolean;
/**
* Calculate shard key for memory distribution
* Used for distributing memories across multiple files
*
* SECURITY: Normalizes input to ensure consistent sharding
* regardless of Unicode representation
*
* @param memoryId - The memory ID (will be normalized)
* @param shardCount - Number of shards (default 16)
* @returns Shard index (0 to shardCount-1)
*/
export declare function calculateShardKey(memoryId: string, shardCount?: number): number;
/**
* Parse memory ID to extract timestamp
*
* @param memoryId - The memory ID to parse
* @returns Timestamp or null if invalid format
*/
export declare function parseMemoryTimestamp(memoryId: string): number | null;
//# sourceMappingURL=utils.d.ts.map