@dollhousemcp/mcp-server 1.5.2 → 1.6.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.
Files changed (272) hide show
  1. package/CHANGELOG.md +56 -0
  2. package/README.md +494 -111
  3. package/data/agents/code-reviewer.md +8 -1
  4. package/data/agents/research-assistant.md +8 -1
  5. package/data/agents/task-manager.md +8 -1
  6. package/data/ensembles/business-advisor.md +8 -1
  7. package/data/ensembles/creative-studio.md +8 -1
  8. package/data/ensembles/development-team.md +8 -1
  9. package/data/ensembles/security-analysis-team.md +8 -1
  10. package/data/memories/conversation-history.md +8 -1
  11. package/data/memories/learning-progress.md +8 -1
  12. package/data/memories/project-context.md +8 -1
  13. package/data/personas/business-consultant.md +8 -1
  14. package/data/personas/creative-writer.md +8 -1
  15. package/data/personas/debug-detective.md +8 -1
  16. package/data/personas/eli5-explainer.md +8 -1
  17. package/data/personas/security-analyst.md +8 -1
  18. package/data/personas/technical-analyst.md +8 -1
  19. package/data/skills/code-review.md +8 -1
  20. package/data/skills/creative-writing.md +8 -1
  21. package/data/skills/data-analysis.md +8 -1
  22. package/data/skills/penetration-testing.md +8 -1
  23. package/data/skills/research.md +8 -1
  24. package/data/skills/threat-modeling.md +8 -1
  25. package/data/skills/translation.md +8 -1
  26. package/data/templates/code-documentation.md +8 -1
  27. package/data/templates/email-professional.md +8 -1
  28. package/data/templates/meeting-notes.md +8 -1
  29. package/data/templates/penetration-test-report.md +8 -1
  30. package/data/templates/project-brief.md +8 -1
  31. package/data/templates/report-executive.md +8 -1
  32. package/data/templates/security-vulnerability-report.md +8 -1
  33. package/data/templates/threat-assessment-report.md +8 -1
  34. package/dist/auth/GitHubAuthManager.d.ts +6 -1
  35. package/dist/auth/GitHubAuthManager.d.ts.map +1 -1
  36. package/dist/auth/GitHubAuthManager.js +45 -18
  37. package/dist/benchmarks/IndexPerformanceBenchmark.d.ts +98 -0
  38. package/dist/benchmarks/IndexPerformanceBenchmark.d.ts.map +1 -0
  39. package/dist/benchmarks/IndexPerformanceBenchmark.js +531 -0
  40. package/dist/cache/CollectionCache.d.ts.map +1 -1
  41. package/dist/cache/CollectionCache.js +13 -3
  42. package/dist/cache/CollectionIndexCache.d.ts +77 -0
  43. package/dist/cache/CollectionIndexCache.d.ts.map +1 -0
  44. package/dist/cache/CollectionIndexCache.js +349 -0
  45. package/dist/cache/LRUCache.d.ts +93 -0
  46. package/dist/cache/LRUCache.d.ts.map +1 -0
  47. package/dist/cache/LRUCache.js +299 -0
  48. package/dist/cache/index.d.ts +1 -0
  49. package/dist/cache/index.d.ts.map +1 -1
  50. package/dist/cache/index.js +2 -1
  51. package/dist/collection/CollectionBrowser.d.ts +21 -1
  52. package/dist/collection/CollectionBrowser.d.ts.map +1 -1
  53. package/dist/collection/CollectionBrowser.js +130 -10
  54. package/dist/collection/CollectionIndexManager.d.ts +151 -0
  55. package/dist/collection/CollectionIndexManager.d.ts.map +1 -0
  56. package/dist/collection/CollectionIndexManager.js +499 -0
  57. package/dist/collection/CollectionSearch.d.ts +55 -0
  58. package/dist/collection/CollectionSearch.d.ts.map +1 -1
  59. package/dist/collection/CollectionSearch.js +338 -13
  60. package/dist/collection/CollectionSeeder.d.ts.map +1 -1
  61. package/dist/collection/CollectionSeeder.js +38 -1
  62. package/dist/collection/ElementInstaller.d.ts +31 -0
  63. package/dist/collection/ElementInstaller.d.ts.map +1 -1
  64. package/dist/collection/ElementInstaller.js +77 -15
  65. package/dist/collection/PersonaSubmitter.d.ts +1 -1
  66. package/dist/collection/PersonaSubmitter.d.ts.map +1 -1
  67. package/dist/collection/PersonaSubmitter.js +2 -2
  68. package/dist/collection/index.d.ts +1 -0
  69. package/dist/collection/index.d.ts.map +1 -1
  70. package/dist/collection/index.js +2 -1
  71. package/dist/config/ConfigManager.d.ts +78 -0
  72. package/dist/config/ConfigManager.d.ts.map +1 -0
  73. package/dist/config/ConfigManager.js +216 -0
  74. package/dist/config/element-types.d.ts +135 -0
  75. package/dist/config/element-types.d.ts.map +1 -0
  76. package/dist/config/element-types.js +108 -0
  77. package/dist/config/index.d.ts +2 -0
  78. package/dist/config/index.d.ts.map +1 -1
  79. package/dist/config/index.js +3 -1
  80. package/dist/config/portfolio-constants.d.ts +83 -0
  81. package/dist/config/portfolio-constants.d.ts.map +1 -0
  82. package/dist/config/portfolio-constants.js +99 -0
  83. package/dist/elements/BaseElement.d.ts +14 -2
  84. package/dist/elements/BaseElement.d.ts.map +1 -1
  85. package/dist/elements/BaseElement.js +88 -6
  86. package/dist/elements/agents/Agent.d.ts +10 -1
  87. package/dist/elements/agents/Agent.d.ts.map +1 -1
  88. package/dist/elements/agents/Agent.js +66 -19
  89. package/dist/elements/agents/AgentManager.d.ts +2 -0
  90. package/dist/elements/agents/AgentManager.d.ts.map +1 -1
  91. package/dist/elements/agents/AgentManager.js +12 -10
  92. package/dist/elements/skills/Skill.d.ts +10 -1
  93. package/dist/elements/skills/Skill.d.ts.map +1 -1
  94. package/dist/elements/skills/Skill.js +40 -3
  95. package/dist/elements/skills/SkillManager.d.ts +1 -0
  96. package/dist/elements/skills/SkillManager.d.ts.map +1 -1
  97. package/dist/elements/skills/SkillManager.js +10 -4
  98. package/dist/elements/templates/Template.d.ts +10 -1
  99. package/dist/elements/templates/Template.d.ts.map +1 -1
  100. package/dist/elements/templates/Template.js +35 -18
  101. package/dist/elements/templates/TemplateManager.d.ts +1 -1
  102. package/dist/elements/templates/TemplateManager.d.ts.map +1 -1
  103. package/dist/elements/templates/TemplateManager.js +6 -5
  104. package/dist/generated/version.d.ts +2 -2
  105. package/dist/generated/version.js +3 -3
  106. package/dist/index.barrel.d.ts +1 -2
  107. package/dist/index.barrel.d.ts.map +1 -1
  108. package/dist/index.barrel.js +2 -4
  109. package/dist/index.d.ts +143 -25
  110. package/dist/index.d.ts.map +1 -1
  111. package/dist/index.js +1883 -310
  112. package/dist/persona/PersonaElement.d.ts +10 -0
  113. package/dist/persona/PersonaElement.d.ts.map +1 -1
  114. package/dist/persona/PersonaElement.js +55 -32
  115. package/dist/persona/PersonaElementManager.d.ts.map +1 -1
  116. package/dist/persona/PersonaElementManager.js +13 -11
  117. package/dist/persona/PersonaLoader.d.ts.map +1 -1
  118. package/dist/persona/PersonaLoader.js +8 -2
  119. package/dist/persona/export-import/PersonaImporter.d.ts.map +1 -1
  120. package/dist/persona/export-import/PersonaImporter.js +24 -5
  121. package/dist/persona/export-import/PersonaSharer.d.ts +21 -0
  122. package/dist/persona/export-import/PersonaSharer.d.ts.map +1 -1
  123. package/dist/persona/export-import/PersonaSharer.js +198 -22
  124. package/dist/portfolio/DefaultElementProvider.d.ts +90 -0
  125. package/dist/portfolio/DefaultElementProvider.d.ts.map +1 -1
  126. package/dist/portfolio/DefaultElementProvider.js +499 -7
  127. package/dist/portfolio/GitHubPortfolioIndexer.d.ts +129 -0
  128. package/dist/portfolio/GitHubPortfolioIndexer.d.ts.map +1 -0
  129. package/dist/portfolio/GitHubPortfolioIndexer.js +475 -0
  130. package/dist/portfolio/MigrationManager.d.ts.map +1 -1
  131. package/dist/portfolio/MigrationManager.js +136 -3
  132. package/dist/portfolio/PortfolioIndexManager.d.ts +130 -0
  133. package/dist/portfolio/PortfolioIndexManager.d.ts.map +1 -0
  134. package/dist/portfolio/PortfolioIndexManager.js +478 -0
  135. package/dist/portfolio/PortfolioManager.d.ts +5 -0
  136. package/dist/portfolio/PortfolioManager.d.ts.map +1 -1
  137. package/dist/portfolio/PortfolioManager.js +61 -20
  138. package/dist/portfolio/PortfolioRepoManager.d.ts +75 -0
  139. package/dist/portfolio/PortfolioRepoManager.d.ts.map +1 -0
  140. package/dist/portfolio/PortfolioRepoManager.js +337 -0
  141. package/dist/portfolio/UnifiedIndexManager.d.ts +388 -0
  142. package/dist/portfolio/UnifiedIndexManager.d.ts.map +1 -0
  143. package/dist/portfolio/UnifiedIndexManager.js +1434 -0
  144. package/dist/portfolio/index.d.ts +15 -0
  145. package/dist/portfolio/index.d.ts.map +1 -0
  146. package/dist/portfolio/index.js +15 -0
  147. package/dist/portfolio/types.d.ts +7 -0
  148. package/dist/portfolio/types.d.ts.map +1 -1
  149. package/dist/portfolio/types.js +6 -1
  150. package/dist/security/InputValidator.d.ts.map +1 -1
  151. package/dist/security/InputValidator.js +50 -48
  152. package/dist/security/audit/SecurityAuditor.d.ts.map +1 -1
  153. package/dist/security/audit/SecurityAuditor.js +17 -9
  154. package/dist/security/audit/config/suppressions.d.ts.map +1 -1
  155. package/dist/security/audit/config/suppressions.js +19 -3
  156. package/dist/security/contentValidator.d.ts +2 -0
  157. package/dist/security/contentValidator.d.ts.map +1 -1
  158. package/dist/security/contentValidator.js +115 -4
  159. package/dist/security/secureYamlParser.d.ts +1 -0
  160. package/dist/security/secureYamlParser.d.ts.map +1 -1
  161. package/dist/security/secureYamlParser.js +29 -7
  162. package/dist/security/securityMonitor.d.ts +1 -1
  163. package/dist/security/securityMonitor.d.ts.map +1 -1
  164. package/dist/security/securityMonitor.js +1 -1
  165. package/dist/security/tokenManager.d.ts +1 -1
  166. package/dist/security/tokenManager.d.ts.map +1 -1
  167. package/dist/security/tokenManager.js +30 -10
  168. package/dist/server/ServerSetup.d.ts +22 -2
  169. package/dist/server/ServerSetup.d.ts.map +1 -1
  170. package/dist/server/ServerSetup.js +77 -12
  171. package/dist/server/tools/AuthTools.d.ts.map +1 -1
  172. package/dist/server/tools/AuthTools.js +33 -1
  173. package/dist/server/tools/BuildInfoTools.d.ts +25 -0
  174. package/dist/server/tools/BuildInfoTools.d.ts.map +1 -0
  175. package/dist/server/tools/BuildInfoTools.js +36 -0
  176. package/dist/server/tools/CollectionTools.d.ts.map +1 -1
  177. package/dist/server/tools/CollectionTools.js +55 -46
  178. package/dist/server/tools/ConfigTools.d.ts.map +1 -1
  179. package/dist/server/tools/ConfigTools.js +29 -1
  180. package/dist/server/tools/PersonaTools.d.ts +4 -2
  181. package/dist/server/tools/PersonaTools.d.ts.map +1 -1
  182. package/dist/server/tools/PersonaTools.js +5 -152
  183. package/dist/server/tools/PortfolioTools.d.ts +12 -0
  184. package/dist/server/tools/PortfolioTools.d.ts.map +1 -0
  185. package/dist/server/tools/PortfolioTools.js +221 -0
  186. package/dist/server/tools/index.d.ts +3 -1
  187. package/dist/server/tools/index.d.ts.map +1 -1
  188. package/dist/server/tools/index.js +4 -2
  189. package/dist/server/types.d.ts +40 -5
  190. package/dist/server/types.d.ts.map +1 -1
  191. package/dist/server/types.js +1 -1
  192. package/dist/services/BuildInfoService.d.ts +84 -0
  193. package/dist/services/BuildInfoService.d.ts.map +1 -0
  194. package/dist/services/BuildInfoService.js +271 -0
  195. package/dist/tools/portfolio/PortfolioElementAdapter.d.ts +54 -0
  196. package/dist/tools/portfolio/PortfolioElementAdapter.d.ts.map +1 -0
  197. package/dist/tools/portfolio/PortfolioElementAdapter.js +229 -0
  198. package/dist/tools/portfolio/submitToPortfolioTool.d.ts +164 -0
  199. package/dist/tools/portfolio/submitToPortfolioTool.d.ts.map +1 -0
  200. package/dist/tools/portfolio/submitToPortfolioTool.js +1523 -0
  201. package/dist/tools/portfolio/types.d.ts +41 -0
  202. package/dist/tools/portfolio/types.d.ts.map +1 -0
  203. package/dist/tools/portfolio/types.js +15 -0
  204. package/dist/types/collection.d.ts +51 -0
  205. package/dist/types/collection.d.ts.map +1 -1
  206. package/dist/types/collection.js +1 -1
  207. package/dist/utils/EarlyTerminationSearch.d.ts +41 -0
  208. package/dist/utils/EarlyTerminationSearch.d.ts.map +1 -0
  209. package/dist/utils/EarlyTerminationSearch.js +164 -0
  210. package/dist/utils/ErrorHandler.d.ts +86 -0
  211. package/dist/utils/ErrorHandler.d.ts.map +1 -0
  212. package/dist/utils/ErrorHandler.js +201 -0
  213. package/dist/utils/FileDiscoveryUtil.d.ts +53 -0
  214. package/dist/utils/FileDiscoveryUtil.d.ts.map +1 -0
  215. package/dist/utils/FileDiscoveryUtil.js +169 -0
  216. package/dist/utils/GitHubRateLimiter.d.ts +88 -0
  217. package/dist/utils/GitHubRateLimiter.d.ts.map +1 -0
  218. package/dist/utils/GitHubRateLimiter.js +315 -0
  219. package/dist/utils/PerformanceMonitor.d.ts +134 -0
  220. package/dist/utils/PerformanceMonitor.d.ts.map +1 -0
  221. package/dist/utils/PerformanceMonitor.js +347 -0
  222. package/dist/utils/RateLimiter.d.ts.map +1 -0
  223. package/dist/utils/RateLimiter.js +172 -0
  224. package/dist/utils/SecureDownloader.d.ts +241 -0
  225. package/dist/utils/SecureDownloader.d.ts.map +1 -0
  226. package/dist/utils/SecureDownloader.js +759 -0
  227. package/dist/utils/ToolCache.d.ts +82 -0
  228. package/dist/utils/ToolCache.d.ts.map +1 -0
  229. package/dist/utils/ToolCache.js +196 -0
  230. package/dist/utils/errorCodes.d.ts +136 -0
  231. package/dist/utils/errorCodes.d.ts.map +1 -0
  232. package/dist/utils/errorCodes.js +87 -0
  233. package/dist/utils/index.d.ts +3 -0
  234. package/dist/utils/index.d.ts.map +1 -1
  235. package/dist/utils/index.js +4 -1
  236. package/dist/utils/installation.d.ts +1 -1
  237. package/dist/utils/installation.d.ts.map +1 -1
  238. package/dist/utils/installation.js +9 -8
  239. package/dist/utils/searchUtils.d.ts +31 -0
  240. package/dist/utils/searchUtils.d.ts.map +1 -1
  241. package/dist/utils/searchUtils.js +62 -1
  242. package/package.json +17 -7
  243. package/dist/config/updateConfig.d.ts +0 -84
  244. package/dist/config/updateConfig.d.ts.map +0 -1
  245. package/dist/config/updateConfig.js +0 -148
  246. package/dist/server/tools/UpdateTools.d.ts +0 -10
  247. package/dist/server/tools/UpdateTools.d.ts.map +0 -1
  248. package/dist/server/tools/UpdateTools.js +0 -85
  249. package/dist/update/BackupManager.d.ts +0 -63
  250. package/dist/update/BackupManager.d.ts.map +0 -1
  251. package/dist/update/BackupManager.js +0 -370
  252. package/dist/update/DependencyChecker.d.ts +0 -41
  253. package/dist/update/DependencyChecker.d.ts.map +0 -1
  254. package/dist/update/DependencyChecker.js +0 -132
  255. package/dist/update/RateLimiter.d.ts.map +0 -1
  256. package/dist/update/RateLimiter.js +0 -172
  257. package/dist/update/SignatureVerifier.d.ts +0 -71
  258. package/dist/update/SignatureVerifier.d.ts.map +0 -1
  259. package/dist/update/SignatureVerifier.js +0 -214
  260. package/dist/update/UpdateChecker.d.ts +0 -132
  261. package/dist/update/UpdateChecker.d.ts.map +0 -1
  262. package/dist/update/UpdateChecker.js +0 -506
  263. package/dist/update/UpdateManager.d.ts +0 -60
  264. package/dist/update/UpdateManager.d.ts.map +0 -1
  265. package/dist/update/UpdateManager.js +0 -730
  266. package/dist/update/VersionManager.d.ts +0 -31
  267. package/dist/update/VersionManager.d.ts.map +0 -1
  268. package/dist/update/VersionManager.js +0 -181
  269. package/dist/update/index.d.ts +0 -9
  270. package/dist/update/index.d.ts.map +0 -1
  271. package/dist/update/index.js +0 -9
  272. /package/dist/{update → utils}/RateLimiter.d.ts +0 -0
@@ -0,0 +1,241 @@
1
+ /**
2
+ * SecureDownloader - Reusable utility for safe content downloads
3
+ *
4
+ * Implements the validate-before-write pattern with comprehensive security features:
5
+ * - Content validation hooks (customizable validators)
6
+ * - Atomic file operations with temp files
7
+ * - Guaranteed cleanup on failure
8
+ * - Memory-efficient streaming for large files
9
+ * - Size limits to prevent DoS attacks
10
+ * - Path validation to prevent traversal
11
+ * - Timeout handling for network operations
12
+ * - Content type validation
13
+ *
14
+ * Usage Examples:
15
+ *
16
+ * // Basic download with validation
17
+ * const downloader = new SecureDownloader();
18
+ * await downloader.downloadToFile(
19
+ * 'https://example.com/file.md',
20
+ * './downloads/file.md',
21
+ * {
22
+ * validator: async (content) => ({
23
+ * isValid: !content.includes('malicious'),
24
+ * errorMessage: content.includes('malicious') ? 'Malicious content detected' : undefined
25
+ * }),
26
+ * maxSize: 1024 * 1024, // 1MB limit
27
+ * timeout: 30000 // 30 second timeout
28
+ * }
29
+ * );
30
+ *
31
+ * // Download to memory with validation
32
+ * const content = await downloader.downloadToMemory(
33
+ * 'https://example.com/data.json',
34
+ * {
35
+ * validator: async (content) => {
36
+ * try {
37
+ * JSON.parse(content);
38
+ * return { isValid: true };
39
+ * } catch {
40
+ * return { isValid: false, errorMessage: 'Invalid JSON format' };
41
+ * }
42
+ * }
43
+ * }
44
+ * );
45
+ *
46
+ * // Streaming download for large files
47
+ * await downloader.downloadStream(
48
+ * 'https://example.com/large-file.zip',
49
+ * './downloads/large-file.zip',
50
+ * {
51
+ * streamValidator: (chunk) => !chunk.includes(Buffer.from('VIRUS')),
52
+ * maxSize: 100 * 1024 * 1024, // 100MB limit
53
+ * timeout: 300000 // 5 minute timeout
54
+ * }
55
+ * );
56
+ */
57
+ /**
58
+ * Result of content validation
59
+ */
60
+ export interface ValidationResult {
61
+ /** Whether the content is valid and safe */
62
+ isValid: boolean;
63
+ /** Error message if validation failed */
64
+ errorMessage?: string;
65
+ /** Severity of any detected issues */
66
+ severity?: 'low' | 'medium' | 'high' | 'critical';
67
+ /** Additional metadata about validation */
68
+ metadata?: Record<string, any>;
69
+ }
70
+ /**
71
+ * Content validator function type
72
+ */
73
+ export type ContentValidatorFunction = (content: string) => Promise<ValidationResult>;
74
+ /**
75
+ * Stream chunk validator function type
76
+ */
77
+ export type StreamValidator = (chunk: Uint8Array) => boolean;
78
+ /**
79
+ * Options for download operations
80
+ */
81
+ export interface DownloadOptions {
82
+ /** Custom content validator function */
83
+ validator?: ContentValidatorFunction;
84
+ /** Maximum file size in bytes (default: SECURITY_LIMITS.MAX_FILE_SIZE) */
85
+ maxSize?: number;
86
+ /** Network timeout in milliseconds (default: 30000) */
87
+ timeout?: number;
88
+ /** Whether to use atomic file operations (default: true) */
89
+ atomic?: boolean;
90
+ /** Expected content type (for validation) */
91
+ expectedContentType?: string;
92
+ /** Custom HTTP headers */
93
+ headers?: Record<string, string>;
94
+ /** Expected SHA-256 checksum for integrity validation */
95
+ expectedChecksum?: string;
96
+ }
97
+ /**
98
+ * Options for streaming downloads
99
+ */
100
+ export interface StreamDownloadOptions {
101
+ /** Chunk-level validator for streaming validation */
102
+ streamValidator?: StreamValidator;
103
+ /** Maximum file size in bytes (default: SECURITY_LIMITS.MAX_FILE_SIZE) */
104
+ maxSize?: number;
105
+ /** Network timeout in milliseconds (default: 30000) */
106
+ timeout?: number;
107
+ /** Custom HTTP headers */
108
+ headers?: Record<string, string>;
109
+ }
110
+ /**
111
+ * Custom error types for different failure scenarios
112
+ */
113
+ export declare class DownloadError extends Error {
114
+ readonly code: string;
115
+ readonly originalError?: Error | undefined;
116
+ constructor(message: string, code: string, originalError?: Error | undefined);
117
+ static networkError(message: string, originalError?: Error): DownloadError;
118
+ static validationError(message: string): DownloadError;
119
+ static securityError(message: string): DownloadError;
120
+ static timeoutError(message: string): DownloadError;
121
+ static filesystemError(message: string, originalError?: Error): DownloadError;
122
+ }
123
+ /**
124
+ * SecureDownloader - Implements validate-before-write pattern for safe downloads
125
+ *
126
+ * Key Security Features:
127
+ * 1. VALIDATE-BEFORE-WRITE: All content validation occurs before any disk operations
128
+ * 2. ATOMIC OPERATIONS: Uses temporary files with atomic rename to prevent corruption
129
+ * 3. GUARANTEED CLEANUP: Automatic cleanup of temporary files on any failure
130
+ * 4. SIZE LIMITS: Prevents DoS attacks through large file downloads
131
+ * 5. PATH VALIDATION: Prevents directory traversal attacks
132
+ * 6. TIMEOUT PROTECTION: Prevents hanging network operations
133
+ * 7. CONTENT VALIDATION: Extensible validation system for different content types
134
+ */
135
+ export declare class SecureDownloader {
136
+ private readonly defaultTimeout;
137
+ private readonly defaultMaxSize;
138
+ private readonly tempDir;
139
+ private readonly globalRateLimiter;
140
+ private readonly urlRateLimiters;
141
+ constructor(options?: {
142
+ defaultTimeout?: number;
143
+ defaultMaxSize?: number;
144
+ tempDir?: string;
145
+ rateLimitOptions?: {
146
+ maxRequestsPerUrl?: number;
147
+ maxGlobalRequests?: number;
148
+ windowMs?: number;
149
+ };
150
+ });
151
+ /**
152
+ * Download content to a file with validation
153
+ *
154
+ * SECURITY: Implements validate-before-write pattern:
155
+ * 1. Download content to memory
156
+ * 2. Validate all content
157
+ * 3. Only then write to disk atomically
158
+ *
159
+ * @param url - URL to download from
160
+ * @param destinationPath - Local file path to save to
161
+ * @param options - Download and validation options
162
+ */
163
+ downloadToFile(url: string, destinationPath: string, options?: DownloadOptions): Promise<void>;
164
+ /**
165
+ * Download content to memory with validation
166
+ *
167
+ * @param url - URL to download from
168
+ * @param options - Download and validation options
169
+ * @returns Validated content as string
170
+ */
171
+ downloadToMemory(url: string, options?: DownloadOptions): Promise<string>;
172
+ /**
173
+ * Download large files using streaming with chunk-level validation
174
+ *
175
+ * @param url - URL to download from
176
+ * @param destinationPath - Local file path to save to
177
+ * @param options - Streaming download options
178
+ */
179
+ downloadStream(url: string, destinationPath: string, options?: StreamDownloadOptions): Promise<void>;
180
+ /**
181
+ * Validate URL format and security with Unicode normalization
182
+ */
183
+ private validateUrl;
184
+ /**
185
+ * Validate destination path for security
186
+ */
187
+ private validateDestinationPath;
188
+ /**
189
+ * Fetch content with size and timeout limits
190
+ */
191
+ private fetchWithLimits;
192
+ /**
193
+ * Validate content type if specified
194
+ */
195
+ private validateContentType;
196
+ /**
197
+ * Atomic file write using FileLockManager
198
+ */
199
+ private atomicWriteFile;
200
+ /**
201
+ * Direct file write (non-atomic, for when atomic is disabled)
202
+ */
203
+ private directWriteFile;
204
+ /**
205
+ * Generate temporary file path for atomic operations
206
+ */
207
+ private getTempFilePath;
208
+ /**
209
+ * Check rate limits for downloads
210
+ */
211
+ private checkRateLimit;
212
+ /**
213
+ * Validate content checksum for integrity verification
214
+ */
215
+ private validateChecksum;
216
+ /**
217
+ * Create a content validator that combines multiple validators
218
+ */
219
+ static combineValidators(...validators: ContentValidatorFunction[]): ContentValidatorFunction;
220
+ /**
221
+ * Create a content validator for JSON content
222
+ */
223
+ static jsonValidator(): ContentValidatorFunction;
224
+ /**
225
+ * Create a content validator for YAML content
226
+ */
227
+ static yamlValidator(): ContentValidatorFunction;
228
+ /**
229
+ * Create a content validator for markdown content
230
+ */
231
+ static markdownValidator(): ContentValidatorFunction;
232
+ /**
233
+ * Create a content validator with size limits
234
+ */
235
+ static sizeValidator(maxSize: number): ContentValidatorFunction;
236
+ /**
237
+ * Create a content validator that checks for forbidden patterns
238
+ */
239
+ static patternValidator(forbiddenPatterns: RegExp[], errorMessage?: string): ContentValidatorFunction;
240
+ }
241
+ //# sourceMappingURL=SecureDownloader.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SecureDownloader.d.ts","sourceRoot":"","sources":["../../src/utils/SecureDownloader.ts"],"names":[],"mappings":"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"}