@dollhousemcp/mcp-server 1.8.0 → 1.9.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +118 -0
- package/README.github.md +126 -8
- package/README.md +1 -1
- package/README.md.backup +50 -795
- package/README.npm.md +1 -1
- package/dist/collection/CollectionBrowser.d.ts.map +1 -1
- package/dist/collection/CollectionBrowser.js +6 -5
- package/dist/config/ConfigWizardDisplay.d.ts +64 -0
- package/dist/config/ConfigWizardDisplay.d.ts.map +1 -0
- package/dist/config/ConfigWizardDisplay.js +150 -0
- package/dist/config/WizardFirstResponse.d.ts +25 -0
- package/dist/config/WizardFirstResponse.d.ts.map +1 -0
- package/dist/config/WizardFirstResponse.js +118 -0
- package/dist/elements/memories/Memory.d.ts +190 -0
- package/dist/elements/memories/Memory.d.ts.map +1 -0
- package/dist/elements/memories/Memory.js +627 -0
- package/dist/elements/memories/MemoryManager.d.ts +136 -0
- package/dist/elements/memories/MemoryManager.d.ts.map +1 -0
- package/dist/elements/memories/MemoryManager.js +607 -0
- package/dist/elements/memories/MemorySearchIndex.d.ts +156 -0
- package/dist/elements/memories/MemorySearchIndex.d.ts.map +1 -0
- package/dist/elements/memories/MemorySearchIndex.js +690 -0
- package/dist/elements/memories/constants.d.ts +95 -0
- package/dist/elements/memories/constants.d.ts.map +1 -0
- package/dist/elements/memories/constants.js +102 -0
- package/dist/elements/memories/index.d.ts +7 -0
- package/dist/elements/memories/index.d.ts.map +1 -0
- package/dist/elements/memories/index.js +7 -0
- package/dist/elements/memories/utils.d.ts +68 -0
- package/dist/elements/memories/utils.d.ts.map +1 -0
- package/dist/elements/memories/utils.js +137 -0
- package/dist/generated/version.d.ts +2 -2
- package/dist/generated/version.js +3 -3
- package/dist/scripts/scripts/run-config-wizard.js +57 -0
- package/dist/scripts/src/config/ConfigManager.js +799 -0
- package/dist/scripts/src/config/ConfigWizard.js +368 -0
- package/dist/scripts/src/errors/SecurityError.js +47 -0
- package/dist/scripts/src/security/constants.js +28 -0
- package/dist/scripts/src/security/contentValidator.js +415 -0
- package/dist/scripts/src/security/errors.js +32 -0
- package/dist/scripts/src/security/regexValidator.js +217 -0
- package/dist/scripts/src/security/secureYamlParser.js +272 -0
- package/dist/scripts/src/security/securityMonitor.js +111 -0
- package/dist/scripts/src/security/validators/unicodeValidator.js +315 -0
- package/dist/scripts/src/utils/logger.js +288 -0
- package/dist/security/audit/SecurityAuditor.d.ts.map +1 -1
- package/dist/security/audit/SecurityAuditor.js +24 -2
- package/dist/security/audit/config/suppressions.d.ts.map +1 -1
- package/dist/security/audit/config/suppressions.js +91 -1
- package/dist/security/securityMonitor.d.ts +1 -1
- package/dist/security/securityMonitor.d.ts.map +1 -1
- package/dist/security/securityMonitor.js +1 -1
- package/dist/tools/getWelcomeMessage.d.ts +41 -0
- package/dist/tools/getWelcomeMessage.d.ts.map +1 -0
- package/dist/tools/getWelcomeMessage.js +109 -0
- package/package.json +1 -1
|
@@ -0,0 +1,136 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* MemoryManager - Implementation of IElementManager for Memory elements
|
|
3
|
+
* Handles CRUD operations and lifecycle management for memories implementing IElement
|
|
4
|
+
*
|
|
5
|
+
* FIXES IMPLEMENTED:
|
|
6
|
+
* 1. CRITICAL: Fixed race conditions in file operations by using FileLockManager for atomic reads/writes
|
|
7
|
+
* 2. HIGH: Fixed unvalidated YAML parsing vulnerability by using SecureYamlParser
|
|
8
|
+
* 3. MEDIUM: All user inputs are now validated and sanitized
|
|
9
|
+
* 4. MEDIUM: Audit logging added for security operations
|
|
10
|
+
* 5. MEDIUM: Path validation prevents directory traversal attacks
|
|
11
|
+
*/
|
|
12
|
+
import { Memory, MemoryMetadata } from './Memory.js';
|
|
13
|
+
import { IElementManager } from '../../types/elements/IElementManager.js';
|
|
14
|
+
import { ElementValidationResult } from '../../types/elements/IElement.js';
|
|
15
|
+
import { ElementType } from '../../portfolio/types.js';
|
|
16
|
+
export declare class MemoryManager implements IElementManager<Memory> {
|
|
17
|
+
private portfolioManager;
|
|
18
|
+
private memoriesDir;
|
|
19
|
+
private memoryCache;
|
|
20
|
+
private contentHashIndex;
|
|
21
|
+
private dateFoldersCache;
|
|
22
|
+
private dateFoldersCacheTimestamp;
|
|
23
|
+
constructor();
|
|
24
|
+
/**
|
|
25
|
+
* Load a memory from file
|
|
26
|
+
* SECURITY FIX #1: Uses FileLockManager.atomicReadFile() instead of fs.readFile()
|
|
27
|
+
* to prevent race conditions and ensure atomic file operations
|
|
28
|
+
* @param filePath Path to the memory file to load
|
|
29
|
+
* @returns Promise resolving to the loaded Memory instance
|
|
30
|
+
* @throws {Error} When file cannot be found or path validation fails
|
|
31
|
+
* @throws {Error} When YAML parsing fails or content is malformed
|
|
32
|
+
* @throws {Error} When memory validation fails after loading
|
|
33
|
+
*/
|
|
34
|
+
load(filePath: string): Promise<Memory>;
|
|
35
|
+
/**
|
|
36
|
+
* Generate date-based path for memory storage
|
|
37
|
+
* Creates YYYY-MM-DD folder structure to prevent flat directory issues
|
|
38
|
+
* @param element Memory element to save
|
|
39
|
+
* @param fileName Optional custom filename
|
|
40
|
+
* @returns Full path to memory file
|
|
41
|
+
*/
|
|
42
|
+
private generateMemoryPath;
|
|
43
|
+
/**
|
|
44
|
+
* Calculate SHA-256 hash of memory content for deduplication
|
|
45
|
+
* Implements Issue #994 - Content-based deduplication
|
|
46
|
+
*/
|
|
47
|
+
private calculateContentHash;
|
|
48
|
+
/**
|
|
49
|
+
* Get all date folders in memories directory
|
|
50
|
+
* PERFORMANCE IMPROVEMENT: Uses cache to avoid repeated directory scanning
|
|
51
|
+
* Cache is invalidated when new folders are created or after 60 seconds
|
|
52
|
+
* @returns Array of date folder names
|
|
53
|
+
*/
|
|
54
|
+
private getDateFolders;
|
|
55
|
+
/**
|
|
56
|
+
* Save a memory to file
|
|
57
|
+
* SECURITY FIX #1: Uses FileLockManager.atomicWriteFile() for atomic operations
|
|
58
|
+
* @param element Memory element to save
|
|
59
|
+
* @param filePath Optional custom file path, defaults to date-based path
|
|
60
|
+
* @returns Promise that resolves when save is complete
|
|
61
|
+
* @throws {Error} When memory validation fails before saving
|
|
62
|
+
* @throws {Error} When path validation fails or file system errors occur
|
|
63
|
+
* @throws {Error} When atomic write operation fails
|
|
64
|
+
*/
|
|
65
|
+
save(element: Memory, filePath?: string): Promise<void>;
|
|
66
|
+
/**
|
|
67
|
+
* List all available memories
|
|
68
|
+
*/
|
|
69
|
+
list(): Promise<Memory[]>;
|
|
70
|
+
/**
|
|
71
|
+
* Find memories matching a predicate
|
|
72
|
+
*/
|
|
73
|
+
find(predicate: (element: Memory) => boolean): Promise<Memory | undefined>;
|
|
74
|
+
/**
|
|
75
|
+
* Find multiple memories matching a predicate
|
|
76
|
+
*/
|
|
77
|
+
findMany(predicate: (element: Memory) => boolean): Promise<Memory[]>;
|
|
78
|
+
/**
|
|
79
|
+
* Delete a memory file
|
|
80
|
+
* SECURITY: Validates path and logs deletion
|
|
81
|
+
*/
|
|
82
|
+
delete(filePath: string): Promise<void>;
|
|
83
|
+
/**
|
|
84
|
+
* Check if a memory file exists
|
|
85
|
+
*/
|
|
86
|
+
exists(filePath: string): Promise<boolean>;
|
|
87
|
+
/**
|
|
88
|
+
* Create a new memory with metadata
|
|
89
|
+
*/
|
|
90
|
+
create(metadata: Partial<MemoryMetadata>): Promise<Memory>;
|
|
91
|
+
/**
|
|
92
|
+
* Import a memory from JSON/YAML string
|
|
93
|
+
* SECURITY: Full validation of imported content
|
|
94
|
+
* @param data JSON or YAML string containing memory data
|
|
95
|
+
* @param format Format of the input data ('json' or 'yaml')
|
|
96
|
+
* @returns Promise resolving to the imported Memory instance
|
|
97
|
+
* @throws {Error} When JSON/YAML parsing fails
|
|
98
|
+
* @throws {Error} When imported data is missing required fields
|
|
99
|
+
* @throws {Error} When YAML content exceeds maximum allowed size
|
|
100
|
+
* @throws {Error} When imported memory fails validation
|
|
101
|
+
*/
|
|
102
|
+
importElement(data: string, format?: 'json' | 'yaml'): Promise<Memory>;
|
|
103
|
+
/**
|
|
104
|
+
* Export a memory to YAML string
|
|
105
|
+
*/
|
|
106
|
+
exportElement(element: Memory): Promise<string>;
|
|
107
|
+
/**
|
|
108
|
+
* Validate a memory element
|
|
109
|
+
*/
|
|
110
|
+
validate(element: Memory): ElementValidationResult;
|
|
111
|
+
/**
|
|
112
|
+
* Validate and resolve a file path
|
|
113
|
+
* SECURITY: Prevents directory traversal attacks
|
|
114
|
+
*/
|
|
115
|
+
validatePath(filePath: string): boolean;
|
|
116
|
+
/**
|
|
117
|
+
* Get the element type this manager handles
|
|
118
|
+
*/
|
|
119
|
+
getElementType(): ElementType;
|
|
120
|
+
/**
|
|
121
|
+
* Get the file extension for memory files
|
|
122
|
+
*/
|
|
123
|
+
getFileExtension(): string;
|
|
124
|
+
/**
|
|
125
|
+
* Validate and resolve a file path to prevent security issues
|
|
126
|
+
* @param filePath Path to validate and resolve
|
|
127
|
+
* @returns Promise resolving to the validated full path
|
|
128
|
+
* @throws {Error} When path contains traversal attempts (../)
|
|
129
|
+
* @throws {Error} When path is absolute or invalid
|
|
130
|
+
* @throws {Error} When file extension is not allowed (.md, .yaml, .yml)
|
|
131
|
+
* @throws {Error} When resolved path would be outside memories directory
|
|
132
|
+
*/
|
|
133
|
+
private validateAndResolvePath;
|
|
134
|
+
private parseMemoryFile;
|
|
135
|
+
}
|
|
136
|
+
//# sourceMappingURL=MemoryManager.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"MemoryManager.d.ts","sourceRoot":"","sources":["../../../src/elements/memories/MemoryManager.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,EAAE,MAAM,EAAE,cAAc,EAAe,MAAM,aAAa,CAAC;AAClE,OAAO,EAAE,eAAe,EAAE,MAAM,yCAAyC,CAAC;AAC1E,OAAO,EAAE,uBAAuB,EAAE,MAAM,kCAAkC,CAAC;AAC3E,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAavD,qBAAa,aAAc,YAAW,eAAe,CAAC,MAAM,CAAC;IAC3D,OAAO,CAAC,gBAAgB,CAAmB;IAC3C,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,WAAW,CAAkC;IACrD,OAAO,CAAC,gBAAgB,CAAkC;IAI1D,OAAO,CAAC,gBAAgB,CAAyB;IACjD,OAAO,CAAC,yBAAyB,CAAa;;IAO9C;;;;;;;;;OASG;IACG,IAAI,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IA6F7C;;;;;;OAMG;YACW,kBAAkB;IAyBhC;;;OAGG;IACH,OAAO,CAAC,oBAAoB;IAQ5B;;;;;OAKG;YACW,cAAc;IAkC5B;;;;;;;;;OASG;IACG,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IA0F7D;;OAEG;IACG,IAAI,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;IA4D/B;;OAEG;IACG,IAAI,CAAC,SAAS,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,OAAO,GAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC;IAKhF;;OAEG;IACG,QAAQ,CAAC,SAAS,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,OAAO,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;IAK1E;;;OAGG;IACG,MAAM,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IA6B7C;;OAEG;IACG,MAAM,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAUhD;;OAEG;IACG,MAAM,CAAC,QAAQ,EAAE,OAAO,CAAC,cAAc,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC;IAIhE;;;;;;;;;;OAUG;IACG,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,GAAE,MAAM,GAAG,MAAe,GAAG,OAAO,CAAC,MAAM,CAAC;IA0EpF;;OAEG;IACG,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAuBrD;;OAEG;IACH,QAAQ,CAAC,OAAO,EAAE,MAAM,GAAG,uBAAuB;IAIlD;;;OAGG;IACH,YAAY,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO;IAqBvC;;OAEG;IACH,cAAc,IAAI,WAAW;IAI7B;;OAEG;IACH,gBAAgB,IAAI,MAAM;IAM1B;;;;;;;;OAQG;YACW,sBAAsB;IAgCpC,OAAO,CAAC,eAAe;CA0BxB"}
|