@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,82 @@
1
+ /**
2
+ * Generic caching utility for tool discovery with TTL and memory limits
3
+ */
4
+ import { Tool } from "@modelcontextprotocol/sdk/types.js";
5
+ export interface CacheEntry<T> {
6
+ value: T;
7
+ timestamp: number;
8
+ hits: number;
9
+ }
10
+ export interface CacheStats {
11
+ hits: number;
12
+ misses: number;
13
+ size: number;
14
+ maxSize: number;
15
+ hitRate: number;
16
+ }
17
+ /**
18
+ * Generic cache with TTL support and memory limit protection
19
+ */
20
+ export declare class ToolCache<T = any> {
21
+ private cache;
22
+ private readonly maxEntries;
23
+ private readonly ttlMs;
24
+ private stats;
25
+ constructor(maxEntries?: number, ttlMinutes?: number);
26
+ /**
27
+ * Get cached value if valid, otherwise return undefined
28
+ */
29
+ get(key: string): T | undefined;
30
+ /**
31
+ * Set cached value with automatic memory limit enforcement
32
+ */
33
+ set(key: string, value: T): void;
34
+ /**
35
+ * Check if key exists and is not expired
36
+ */
37
+ has(key: string): boolean;
38
+ /**
39
+ * Clear specific cache entry
40
+ */
41
+ delete(key: string): boolean;
42
+ /**
43
+ * Clear all cached entries
44
+ */
45
+ clear(): void;
46
+ /**
47
+ * Get cache statistics
48
+ */
49
+ getStats(): CacheStats;
50
+ /**
51
+ * Remove oldest entries when cache is full
52
+ */
53
+ private evictOldest;
54
+ /**
55
+ * Clean up expired entries (can be called periodically)
56
+ */
57
+ cleanup(): number;
58
+ }
59
+ /**
60
+ * Specialized cache for MCP Tool discovery results
61
+ */
62
+ export declare class ToolDiscoveryCache extends ToolCache<Tool[]> {
63
+ private static readonly CACHE_KEY;
64
+ constructor();
65
+ /**
66
+ * Get cached tool list
67
+ */
68
+ getToolList(): Tool[] | undefined;
69
+ /**
70
+ * Cache tool list
71
+ */
72
+ setToolList(tools: Tool[]): void;
73
+ /**
74
+ * Invalidate cached tool list
75
+ */
76
+ invalidateToolList(): void;
77
+ /**
78
+ * Log performance metrics
79
+ */
80
+ logPerformance(): void;
81
+ }
82
+ //# sourceMappingURL=ToolCache.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ToolCache.d.ts","sourceRoot":"","sources":["../../src/utils/ToolCache.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,IAAI,EAAE,MAAM,oCAAoC,CAAC;AAG1D,MAAM,WAAW,UAAU,CAAC,CAAC;IAC3B,KAAK,EAAE,CAAC,CAAC;IACT,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED;;GAEG;AACH,qBAAa,SAAS,CAAC,CAAC,GAAG,GAAG;IAC5B,OAAO,CAAC,KAAK,CAAyC;IACtD,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAS;IACpC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAS;IAC/B,OAAO,CAAC,KAAK,CAGX;gBAEU,UAAU,GAAE,MAAY,EAAE,UAAU,GAAE,MAAU;IAK5D;;OAEG;IACH,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,CAAC,GAAG,SAAS;IAwB/B;;OAEG;IACH,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,GAAG,IAAI;IAiBhC;;OAEG;IACH,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO;IAIzB;;OAEG;IACH,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO;IAQ5B;;OAEG;IACH,KAAK,IAAI,IAAI;IAOb;;OAEG;IACH,QAAQ,IAAI,UAAU;IAWtB;;OAEG;IACH,OAAO,CAAC,WAAW;IAoBnB;;OAEG;IACH,OAAO,IAAI,MAAM;CAiBlB;AAED;;GAEG;AACH,qBAAa,kBAAmB,SAAQ,SAAS,CAAC,IAAI,EAAE,CAAC;IACvD,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,SAAS,CAAyB;;IAO1D;;OAEG;IACH,WAAW,IAAI,IAAI,EAAE,GAAG,SAAS;IAgBjC;;OAEG;IACH,WAAW,CAAC,KAAK,EAAE,IAAI,EAAE,GAAG,IAAI;IAYhC;;OAEG;IACH,kBAAkB,IAAI,IAAI;IAO1B;;OAEG;IACH,cAAc,IAAI,IAAI;CAUvB"}
@@ -0,0 +1,196 @@
1
+ /**
2
+ * Generic caching utility for tool discovery with TTL and memory limits
3
+ */
4
+ import { logger } from './logger.js';
5
+ /**
6
+ * Generic cache with TTL support and memory limit protection
7
+ */
8
+ export class ToolCache {
9
+ cache = new Map();
10
+ maxEntries;
11
+ ttlMs;
12
+ stats = {
13
+ hits: 0,
14
+ misses: 0
15
+ };
16
+ constructor(maxEntries = 100, ttlMinutes = 1) {
17
+ this.maxEntries = maxEntries;
18
+ this.ttlMs = ttlMinutes * 60 * 1000; // Convert minutes to milliseconds
19
+ }
20
+ /**
21
+ * Get cached value if valid, otherwise return undefined
22
+ */
23
+ get(key) {
24
+ const entry = this.cache.get(key);
25
+ if (!entry) {
26
+ this.stats.misses++;
27
+ return undefined;
28
+ }
29
+ // Check if entry has expired
30
+ const now = Date.now();
31
+ if (now - entry.timestamp > this.ttlMs) {
32
+ this.cache.delete(key);
33
+ this.stats.misses++;
34
+ logger.debug('ToolCache: Cache entry expired', { key, age: now - entry.timestamp });
35
+ return undefined;
36
+ }
37
+ // Entry is valid
38
+ entry.hits++;
39
+ this.stats.hits++;
40
+ logger.debug('ToolCache: Cache hit', { key, hits: entry.hits, age: now - entry.timestamp });
41
+ return entry.value;
42
+ }
43
+ /**
44
+ * Set cached value with automatic memory limit enforcement
45
+ */
46
+ set(key, value) {
47
+ const now = Date.now();
48
+ // Enforce memory limit by removing oldest entries if needed
49
+ while (this.cache.size >= this.maxEntries && !this.cache.has(key)) {
50
+ this.evictOldest();
51
+ }
52
+ this.cache.set(key, {
53
+ value,
54
+ timestamp: now,
55
+ hits: 0
56
+ });
57
+ logger.debug('ToolCache: Cache set', { key, cacheSize: this.cache.size });
58
+ }
59
+ /**
60
+ * Check if key exists and is not expired
61
+ */
62
+ has(key) {
63
+ return this.get(key) !== undefined;
64
+ }
65
+ /**
66
+ * Clear specific cache entry
67
+ */
68
+ delete(key) {
69
+ const deleted = this.cache.delete(key);
70
+ if (deleted) {
71
+ logger.debug('ToolCache: Cache entry deleted', { key });
72
+ }
73
+ return deleted;
74
+ }
75
+ /**
76
+ * Clear all cached entries
77
+ */
78
+ clear() {
79
+ this.cache.clear();
80
+ this.stats.hits = 0;
81
+ this.stats.misses = 0;
82
+ logger.debug('ToolCache: Cache cleared');
83
+ }
84
+ /**
85
+ * Get cache statistics
86
+ */
87
+ getStats() {
88
+ const totalRequests = this.stats.hits + this.stats.misses;
89
+ return {
90
+ hits: this.stats.hits,
91
+ misses: this.stats.misses,
92
+ size: this.cache.size,
93
+ maxSize: this.maxEntries,
94
+ hitRate: totalRequests > 0 ? this.stats.hits / totalRequests : 0
95
+ };
96
+ }
97
+ /**
98
+ * Remove oldest entries when cache is full
99
+ */
100
+ evictOldest() {
101
+ if (this.cache.size === 0)
102
+ return;
103
+ // Find the oldest entry (lowest timestamp)
104
+ let oldestKey;
105
+ let oldestTimestamp = Date.now();
106
+ for (const [key, entry] of this.cache.entries()) {
107
+ if (entry.timestamp < oldestTimestamp) {
108
+ oldestTimestamp = entry.timestamp;
109
+ oldestKey = key;
110
+ }
111
+ }
112
+ if (oldestKey) {
113
+ this.cache.delete(oldestKey);
114
+ logger.debug('ToolCache: Evicted oldest entry', { key: oldestKey, age: Date.now() - oldestTimestamp });
115
+ }
116
+ }
117
+ /**
118
+ * Clean up expired entries (can be called periodically)
119
+ */
120
+ cleanup() {
121
+ const now = Date.now();
122
+ let cleaned = 0;
123
+ for (const [key, entry] of this.cache.entries()) {
124
+ if (now - entry.timestamp > this.ttlMs) {
125
+ this.cache.delete(key);
126
+ cleaned++;
127
+ }
128
+ }
129
+ if (cleaned > 0) {
130
+ logger.debug('ToolCache: Cleaned up expired entries', { cleaned, remaining: this.cache.size });
131
+ }
132
+ return cleaned;
133
+ }
134
+ }
135
+ /**
136
+ * Specialized cache for MCP Tool discovery results
137
+ */
138
+ export class ToolDiscoveryCache extends ToolCache {
139
+ static CACHE_KEY = 'tool_discovery_list';
140
+ constructor() {
141
+ // 1-minute TTL, max 100 entries (though we'll likely only use 1 key)
142
+ super(100, 1);
143
+ }
144
+ /**
145
+ * Get cached tool list
146
+ */
147
+ getToolList() {
148
+ const startTime = Date.now();
149
+ const result = this.get(ToolDiscoveryCache.CACHE_KEY);
150
+ const duration = Date.now() - startTime;
151
+ if (result) {
152
+ logger.info('ToolDiscoveryCache: Retrieved cached tool list', {
153
+ toolCount: result.length,
154
+ duration: `${duration}ms`,
155
+ stats: this.getStats()
156
+ });
157
+ }
158
+ return result;
159
+ }
160
+ /**
161
+ * Cache tool list
162
+ */
163
+ setToolList(tools) {
164
+ const startTime = Date.now();
165
+ this.set(ToolDiscoveryCache.CACHE_KEY, tools);
166
+ const duration = Date.now() - startTime;
167
+ logger.info('ToolDiscoveryCache: Cached tool list', {
168
+ toolCount: tools.length,
169
+ duration: `${duration}ms`,
170
+ stats: this.getStats()
171
+ });
172
+ }
173
+ /**
174
+ * Invalidate cached tool list
175
+ */
176
+ invalidateToolList() {
177
+ const deleted = this.delete(ToolDiscoveryCache.CACHE_KEY);
178
+ if (deleted) {
179
+ logger.info('ToolDiscoveryCache: Invalidated cached tool list');
180
+ }
181
+ }
182
+ /**
183
+ * Log performance metrics
184
+ */
185
+ logPerformance() {
186
+ const stats = this.getStats();
187
+ logger.info('ToolDiscoveryCache: Performance metrics', {
188
+ hitRate: `${(stats.hitRate * 100).toFixed(1)}%`,
189
+ hits: stats.hits,
190
+ misses: stats.misses,
191
+ cacheSize: stats.size,
192
+ efficiency: stats.hits > 0 ? 'GOOD' : 'NEEDS_WARMUP'
193
+ });
194
+ }
195
+ }
196
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiVG9vbENhY2hlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3V0aWxzL1Rvb2xDYWNoZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7R0FFRztBQUdILE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFnQnJDOztHQUVHO0FBQ0gsTUFBTSxPQUFPLFNBQVM7SUFDWixLQUFLLEdBQStCLElBQUksR0FBRyxFQUFFLENBQUM7SUFDckMsVUFBVSxDQUFTO0lBQ25CLEtBQUssQ0FBUztJQUN2QixLQUFLLEdBQUc7UUFDZCxJQUFJLEVBQUUsQ0FBQztRQUNQLE1BQU0sRUFBRSxDQUFDO0tBQ1YsQ0FBQztJQUVGLFlBQVksYUFBcUIsR0FBRyxFQUFFLGFBQXFCLENBQUM7UUFDMUQsSUFBSSxDQUFDLFVBQVUsR0FBRyxVQUFVLENBQUM7UUFDN0IsSUFBSSxDQUFDLEtBQUssR0FBRyxVQUFVLEdBQUcsRUFBRSxHQUFHLElBQUksQ0FBQyxDQUFDLGtDQUFrQztJQUN6RSxDQUFDO0lBRUQ7O09BRUc7SUFDSCxHQUFHLENBQUMsR0FBVztRQUNiLE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBRWxDLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUNYLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxFQUFFLENBQUM7WUFDcEIsT0FBTyxTQUFTLENBQUM7UUFDbkIsQ0FBQztRQUVELDZCQUE2QjtRQUM3QixNQUFNLEdBQUcsR0FBRyxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUM7UUFDdkIsSUFBSSxHQUFHLEdBQUcsS0FBSyxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7WUFDdkMsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUM7WUFDdkIsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLEVBQUUsQ0FB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S0FBSyxDQUFDLENBQUM7UUFDOUMsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLEdBQUcsRUFBRSxHQUFHLFNBQVMsQ0FBQztRQUV4QyxNQUFNLENBQUMsSUFBSSxDQUFDLHNDQUFzQyxFQUFFO1lBQ2xELFNBQVMsRUFBRSxLQUFLLENBQUMsTUFBTTtZQUN2QixRQUFRLEVBQUUsR0FBRyxRQUFRLElBQUk7WUFDekIsS0FBSyxFQUFFLElBQUksQ0FBQyxRQUFRLEVBQUU7U0FDdkIsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVEOztPQUVHO0lBQ0gsa0JBQWtCO1FBQ2hCLE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsa0JBQWtCLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDMUQsSUFBSSxPQUFPLEVBQUUsQ0FBQztZQUNaLE1BQU0sQ0FBQyxJQUFJLENBQUMsa0RBQWtELENBQUMsQ0FBQztRQUNsRSxDQUFDO0lBQ0gsQ0FBQztJQUVEOztPQUVHO0lBQ0gsY0FBYztRQUNaLE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUM5QixNQUFNLENBQUMsSUFBSSxDQUFDLHlDQUF5QyxFQUFFO1lBQ3JELE9BQU8sRUFBRSxHQUFHLENBQUMsS0FBSyxDQUFDLE9BQU8sR0FBRyxHQUFHLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEdBQUc7WUFDL0MsSUFBSSxFQUFFLEtBQUssQ0FBQyxJQUFJO1lBQ2hCLE1BQU0sRUFBRSxLQUFLLENBQUMsTUFBTTtZQUNwQixTQUFTLEVBQUUsS0FBSyxDQUFDLElBQUk7WUFDckIsVUFBVSxFQUFFLEtBQUssQ0FBQyxJQUFJLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLGNBQWM7U0FDckQsQ0FBQyxDQUFDO0lBQ0wsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogR2VuZXJpYyBjYWNoaW5nIHV0aWxpdHkgZm9yIHRvb2wgZGlzY292ZXJ5IHdpdGggVFRMIGFuZCBtZW1vcnkgbGltaXRzXG4gKi9cblxuaW1wb3J0IHsgVG9vbCB9IGZyb20gXCJAbW9kZWxjb250ZXh0cHJvdG9jb2wvc2RrL3R5cGVzLmpzXCI7XG5pbXBvcnQgeyBsb2dnZXIgfSBmcm9tICcuL2xvZ2dlci5qcyc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ2FjaGVFbnRyeTxUPiB7XG4gIHZhbHVlOiBUO1xuICB0aW1lc3RhbXA6IG51bWJlcjtcbiAgaGl0czogbnVtYmVyO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIENhY2hlU3RhdHMge1xuICBoaXRzOiBudW1iZXI7XG4gIG1pc3NlczogbnVtYmVyO1xuICBzaXplOiBudW1iZXI7XG4gIG1heFNpemU6IG51bWJlcjtcbiAgaGl0UmF0ZTogbnVtYmVyO1xufVxuXG4vKipcbiAqIEdlbmVyaWMgY2FjaGUgd2l0aCBUVEwgc3VwcG9ydCBhbmQgbWVtb3J5IGxpbWl0IHByb3RlY3Rpb25cbiAqL1xuZXhwb3J0IGNsYXNzIFRvb2xDYWNoZTxUID0gYW55PiB7XG4gIHByaXZhdGUgY2FjaGU6IE1hcDxzdHJpbmcsIENhY2hlRW50cnk8VD4+ID0gbmV3IE1hcCgpO1xuICBwcml2YXRlIHJlYWRvbmx5IG1heEVudHJpZXM6IG51bWJlcjtcbiAgcHJpdmF0ZSByZWFkb25seSB0dGxNczogbnVtYmVyO1xuICBwcml2YXRlIHN0YXRzID0ge1xuICAgIGhpdHM6IDAsXG4gICAgbWlzc2VzOiAwXG4gIH07XG5cbiAgY29uc3RydWN0b3IobWF4RW50cmllczogbnVtYmVyID0gMTAwLCB0dGxNaW51dGVzOiBudW1iZXIgPSAxKSB7XG4gICAgdGhpcy5tYXhFbnRyaWVzID0gbWF4RW50cmllcztcbiAgICB0aGlzLnR0bE1zID0gdHRsTWludXRlcyAqIDYwICogMTAwMDsgLy8gQ29udmVydCBtaW51dGVzIHRvIG1pbGxpc2Vjb25kc1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCBjYWNoZWQgdmFsdWUgaWYgdmFsaWQsIG90aGVyd2lzZSByZXR1cm4gdW5kZWZpbmVkXG4gICAqL1xuICBnZXQoa2V5OiBzdHJpbmcpOiBUIHwgdW5kZWZpbmVkIHtcbiAgICBjb25zdCBlbnRyeSA9IHRoaXMuY2FjaGUuZ2V0KGtleSk7XG4gICAgXG4gICAgaWYgKCFlbnRyeSkge1xuICAgICAgdGhpcy5zdGF0cy5taXNzZXMrKztcbiAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfVxuXG4gICAgLy8gQ2hlY2sgaWYgZW50cnkgaGFzIGV4cGlyZWRcbiAgICBjb25zdCBub3cgPSBEYXRlLm5vdygpO1xuICAgIGlmIChub3cgLSBlbnRyeS50aW1lc3RhbXAgPiB0aGlzLnR0bE1zKSB7XG4gICAgICB0aGlzLmNhY2hlLmRlbGV0ZShrZXkpO1xuICAgICAgdGhpcy5zdGF0cy5taXNzZXMrKztcbiAgICAgIGxvZ2dlci5kZWJ1ZygnVG9vbENhY2hlOiBDYWNoZSBlbnRyeSBleHBpcmVkJywgeyBrZXksIGFnZTogbm93IC0gZW50cnkudGltZXN0YW1wIH0pO1xuICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9XG5cbiAgICAvLyBFbnRyeSBpcyB2YWxpZFxuICAgIGVudHJ5LmhpdHMrKztcbiAgICB0aGlzLnN0YXRzLmhpdHMrKztcbiAgICBsb2dnZXIuZGVidWcoJ1Rvb2xDYWNoZTogQ2FjaGUgaGl0JywgeyBrZXksIGhpdHM6IGVudHJ5LmhpdHMsIGFnZTogbm93IC0gZW50cnkudGltZXN0YW1wIH0pO1xuICAgIHJldHVybiBlbnRyeS52YWx1ZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXQgY2FjaGVkIHZhbHVlIHdpdGggYXV0b21hdGljIG1lbW9yeSBsaW1pdCBlbmZvcmNlbWVudFxuICAgKi9cbiAgc2V0KGtleTogc3RyaW5nLCB2YWx1ZTogVCk6IHZvaWQge1xuICAgIGNvbnN0IG5vdyA9IERhdGUubm93KCk7XG4gICAgXG4gICAgLy8gRW5mb3JjZSBtZW1vcnkgbGltaXQgYnkgcmVtb3Zpbmcgb2xkZXN0IGVudHJpZXMgaWYgbmVlZGVkXG4gICAgd2hpbGUgKHRoaXMuY2FjaGUuc2l6ZSA+PSB0aGlzLm1heEVudHJpZXMgJiYgIXRoaXMuY2FjaGUuaGFzKGtleSkpIHtcbiAgICAgIHRoaXMuZXZpY3RPbGRlc3QoKTtcbiAgICB9XG5cbiAgICB0aGlzLmNhY2hlLnNldChrZXksIHtcbiAgICAgIHZhbHVlLFxuICAgICAgdGltZXN0YW1wOiBub3csXG4gICAgICBoaXRzOiAwXG4gICAgfSk7XG5cbiAgICBsb2dnZXIuZGVidWcoJ1Rvb2xDYWNoZTogQ2FjaGUgc2V0JywgeyBrZXksIGNhY2hlU2l6ZTogdGhpcy5jYWNoZS5zaXplIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIENoZWNrIGlmIGtleSBleGlzdHMgYW5kIGlzIG5vdCBleHBpcmVkXG4gICAqL1xuICBoYXMoa2V5OiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5nZXQoa2V5KSAhPT0gdW5kZWZpbmVkO1xuICB9XG5cbiAgLyoqXG4gICAqIENsZWFyIHNwZWNpZmljIGNhY2hlIGVudHJ5XG4gICAqL1xuICBkZWxldGUoa2V5OiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICBjb25zdCBkZWxldGVkID0gdGhpcy5jYWNoZS5kZWxldGUoa2V5KTtcbiAgICBpZiAoZGVsZXRlZCkge1xuICAgICAgbG9nZ2VyLmRlYnVnKCdUb29sQ2FjaGU6IENhY2hlIGVudHJ5IGRlbGV0ZWQnLCB7IGtleSB9KTtcbiAgICB9XG4gICAgcmV0dXJuIGRlbGV0ZWQ7XG4gIH1cblxuICAvKipcbiAgICogQ2xlYXIgYWxsIGNhY2hlZCBlbnRyaWVzXG4gICAqL1xuICBjbGVhcigpOiB2b2lkIHtcbiAgICB0aGlzLmNhY2hlLmNsZWFyKCk7XG4gICAgdGhpcy5zdGF0cy5oaXRzID0gMDtcbiAgICB0aGlzLnN0YXRzLm1pc3NlcyA9IDA7XG4gICAgbG9nZ2VyLmRlYnVnKCdUb29sQ2FjaGU6IENhY2hlIGNsZWFyZWQnKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgY2FjaGUgc3RhdGlzdGljc1xuICAgKi9cbiAgZ2V0U3RhdHMoKTogQ2FjaGVTdGF0cyB7XG4gICAgY29uc3QgdG90YWxSZXF1ZXN0cyA9IHRoaXMuc3RhdHMuaGl0cyArIHRoaXMuc3RhdHMubWlzc2VzO1xuICAgIHJldHVybiB7XG4gICAgICBoaXRzOiB0aGlzLnN0YXRzLmhpdHMsXG4gICAgICBtaXNzZXM6IHRoaXMuc3RhdHMubWlzc2VzLFxuICAgICAgc2l6ZTogdGhpcy5jYWNoZS5zaXplLFxuICAgICAgbWF4U2l6ZTogdGhpcy5tYXhFbnRyaWVzLFxuICAgICAgaGl0UmF0ZTogdG90YWxSZXF1ZXN0cyA+IDAgPyB0aGlzLnN0YXRzLmhpdHMgLyB0b3RhbFJlcXVlc3RzIDogMFxuICAgIH07XG4gIH1cblxuICAvKipcbiAgICogUmVtb3ZlIG9sZGVzdCBlbnRyaWVzIHdoZW4gY2FjaGUgaXMgZnVsbFxuICAgKi9cbiAgcHJpdmF0ZSBldmljdE9sZGVzdCgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5jYWNoZS5zaXplID09PSAwKSByZXR1cm47XG5cbiAgICAvLyBGaW5kIHRoZSBvbGRlc3QgZW50cnkgKGxvd2VzdCB0aW1lc3RhbXApXG4gICAgbGV0IG9sZGVzdEtleTogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICAgIGxldCBvbGRlc3RUaW1lc3RhbXAgPSBEYXRlLm5vdygpO1xuXG4gICAgZm9yIChjb25zdCBba2V5LCBlbnRyeV0gb2YgdGhpcy5jYWNoZS5lbnRyaWVzKCkpIHtcbiAgICAgIGlmIChlbnRyeS50aW1lc3RhbXAgPCBvbGRlc3RUaW1lc3RhbXApIHtcbiAgICAgICAgb2xkZXN0VGltZXN0YW1wID0gZW50cnkudGltZXN0YW1wO1xuICAgICAgICBvbGRlc3RLZXkgPSBrZXk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKG9sZGVzdEtleSkge1xuICAgICAgdGhpcy5jYWNoZS5kZWxldGUob2xkZXN0S2V5KTtcbiAgICAgIGxvZ2dlci5kZWJ1ZygnVG9vbENhY2hlOiBFdmljdGVkIG9sZGVzdCBlbnRyeScsIHsga2V5OiBvbGRlc3RLZXksIGFnZTogRGF0ZS5ub3coKSAtIG9sZGVzdFRpbWVzdGFtcCB9KTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogQ2xlYW4gdXAgZXhwaXJlZCBlbnRyaWVzIChjYW4gYmUgY2FsbGVkIHBlcmlvZGljYWxseSlcbiAgICovXG4gIGNsZWFudXAoKTogbnVtYmVyIHtcbiAgICBjb25zdCBub3cgPSBEYXRlLm5vdygpO1xuICAgIGxldCBjbGVhbmVkID0gMDtcblxuICAgIGZvciAoY29uc3QgW2tleSwgZW50cnldIG9mIHRoaXMuY2FjaGUuZW50cmllcygpKSB7XG4gICAgICBpZiAobm93IC0gZW50cnkudGltZXN0YW1wID4gdGhpcy50dGxNcykge1xuICAgICAgICB0aGlzLmNhY2hlLmRlbGV0ZShrZXkpO1xuICAgICAgICBjbGVhbmVkKys7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKGNsZWFuZWQgPiAwKSB7XG4gICAgICBsb2dnZXIuZGVidWcoJ1Rvb2xDYWNoZTogQ2xlYW5lZCB1cCBleHBpcmVkIGVudHJpZXMnLCB7IGNsZWFuZWQsIHJlbWFpbmluZzogdGhpcy5jYWNoZS5zaXplIH0pO1xuICAgIH1cblxuICAgIHJldHVybiBjbGVhbmVkO1xuICB9XG59XG5cbi8qKlxuICogU3BlY2lhbGl6ZWQgY2FjaGUgZm9yIE1DUCBUb29sIGRpc2NvdmVyeSByZXN1bHRzXG4gKi9cbmV4cG9ydCBjbGFzcyBUb29sRGlzY292ZXJ5Q2FjaGUgZXh0ZW5kcyBUb29sQ2FjaGU8VG9vbFtdPiB7XG4gIHByaXZhdGUgc3RhdGljIHJlYWRvbmx5IENBQ0hFX0tFWSA9ICd0b29sX2Rpc2NvdmVyeV9saXN0JztcblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICAvLyAxLW1pbnV0ZSBUVEwsIG1heCAxMDAgZW50cmllcyAodGhvdWdoIHdlJ2xsIGxpa2VseSBvbmx5IHVzZSAxIGtleSlcbiAgICBzdXBlcigxMDAsIDEpO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCBjYWNoZWQgdG9vbCBsaXN0XG4gICAqL1xuICBnZXRUb29sTGlzdCgpOiBUb29sW10gfCB1bmRlZmluZWQge1xuICAgIGNvbnN0IHN0YXJ0VGltZSA9IERhdGUubm93KCk7XG4gICAgY29uc3QgcmVzdWx0ID0gdGhpcy5nZXQoVG9vbERpc2NvdmVyeUNhY2hlLkNBQ0hFX0tFWSk7XG4gICAgY29uc3QgZHVyYXRpb24gPSBEYXRlLm5vdygpIC0gc3RhcnRUaW1lO1xuICAgIFxuICAgIGlmIChyZXN1bHQpIHtcbiAgICAgIGxvZ2dlci5pbmZvKCdUb29sRGlzY292ZXJ5Q2FjaGU6IFJldHJpZXZlZCBjYWNoZWQgdG9vbCBsaXN0JywgeyBcbiAgICAgICAgdG9vbENvdW50OiByZXN1bHQubGVuZ3RoLCBcbiAgICAgICAgZHVyYXRpb246IGAke2R1cmF0aW9ufW1zYCxcbiAgICAgICAgc3RhdHM6IHRoaXMuZ2V0U3RhdHMoKVxuICAgICAgfSk7XG4gICAgfVxuICAgIFxuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cblxuICAvKipcbiAgICogQ2FjaGUgdG9vbCBsaXN0XG4gICAqL1xuICBzZXRUb29sTGlzdCh0b29sczogVG9vbFtdKTogdm9pZCB7XG4gICAgY29uc3Qgc3RhcnRUaW1lID0gRGF0ZS5ub3coKTtcbiAgICB0aGlzLnNldChUb29sRGlzY292ZXJ5Q2FjaGUuQ0FDSEVfS0VZLCB0b29scyk7XG4gICAgY29uc3QgZHVyYXRpb24gPSBEYXRlLm5vdygpIC0gc3RhcnRUaW1lO1xuICAgIFxuICAgIGxvZ2dlci5pbmZvKCdUb29sRGlzY292ZXJ5Q2FjaGU6IENhY2hlZCB0b29sIGxpc3QnLCB7IFxuICAgICAgdG9vbENvdW50OiB0b29scy5sZW5ndGgsIFxuICAgICAgZHVyYXRpb246IGAke2R1cmF0aW9ufW1zYCxcbiAgICAgIHN0YXRzOiB0aGlzLmdldFN0YXRzKClcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBJbnZhbGlkYXRlIGNhY2hlZCB0b29sIGxpc3RcbiAgICovXG4gIGludmFsaWRhdGVUb29sTGlzdCgpOiB2b2lkIHtcbiAgICBjb25zdCBkZWxldGVkID0gdGhpcy5kZWxldGUoVG9vbERpc2NvdmVyeUNhY2hlLkNBQ0hFX0tFWSk7XG4gICAgaWYgKGRlbGV0ZWQpIHtcbiAgICAgIGxvZ2dlci5pbmZvKCdUb29sRGlzY292ZXJ5Q2FjaGU6IEludmFsaWRhdGVkIGNhY2hlZCB0b29sIGxpc3QnKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogTG9nIHBlcmZvcm1hbmNlIG1ldHJpY3NcbiAgICovXG4gIGxvZ1BlcmZvcm1hbmNlKCk6IHZvaWQge1xuICAgIGNvbnN0IHN0YXRzID0gdGhpcy5nZXRTdGF0cygpO1xuICAgIGxvZ2dlci5pbmZvKCdUb29sRGlzY292ZXJ5Q2FjaGU6IFBlcmZvcm1hbmNlIG1ldHJpY3MnLCB7XG4gICAgICBoaXRSYXRlOiBgJHsoc3RhdHMuaGl0UmF0ZSAqIDEwMCkudG9GaXhlZCgxKX0lYCxcbiAgICAgIGhpdHM6IHN0YXRzLmhpdHMsXG4gICAgICBtaXNzZXM6IHN0YXRzLm1pc3NlcyxcbiAgICAgIGNhY2hlU2l6ZTogc3RhdHMuc2l6ZSxcbiAgICAgIGVmZmljaWVuY3k6IHN0YXRzLmhpdHMgPiAwID8gJ0dPT0QnIDogJ05FRURTX1dBUk1VUCdcbiAgICB9KTtcbiAgfVxufSJdfQ==
@@ -0,0 +1,136 @@
1
+ /**
2
+ * Centralized error codes for consistent error handling across the application.
3
+ * Error codes follow the pattern: CATEGORY_SPECIFIC_ERROR
4
+ */
5
+ /**
6
+ * Validation error codes - Input validation failures
7
+ */
8
+ export declare const ValidationErrorCodes: {
9
+ readonly INVALID_INPUT: "VALIDATION_INVALID_INPUT";
10
+ readonly REQUIRED_FIELD: "VALIDATION_REQUIRED_FIELD";
11
+ readonly INVALID_FORMAT: "VALIDATION_INVALID_FORMAT";
12
+ readonly INVALID_LENGTH: "VALIDATION_INVALID_LENGTH";
13
+ readonly INVALID_RANGE: "VALIDATION_INVALID_RANGE";
14
+ readonly INVALID_TYPE: "VALIDATION_INVALID_TYPE";
15
+ readonly INVALID_PERSONA_ID: "VALIDATION_INVALID_PERSONA_ID";
16
+ readonly INVALID_SEARCH_QUERY: "VALIDATION_INVALID_SEARCH_QUERY";
17
+ readonly INVALID_COLLECTION_PATH: "VALIDATION_INVALID_COLLECTION_PATH";
18
+ readonly INVALID_URL: "VALIDATION_INVALID_URL";
19
+ readonly INVALID_FILENAME: "VALIDATION_INVALID_FILENAME";
20
+ readonly INVALID_PATH: "VALIDATION_INVALID_PATH";
21
+ readonly PATH_TRAVERSAL: "VALIDATION_PATH_TRAVERSAL";
22
+ readonly INVALID_CHARACTER: "VALIDATION_INVALID_CHARACTER";
23
+ readonly CONFIRMATION_REQUIRED: "VALIDATION_CONFIRMATION_REQUIRED";
24
+ readonly INVALID_CATEGORY: "VALIDATION_INVALID_CATEGORY";
25
+ readonly CONTENT_TOO_LARGE: "VALIDATION_CONTENT_TOO_LARGE";
26
+ readonly TEMPLATE_TOO_LARGE: "VALIDATION_TEMPLATE_TOO_LARGE";
27
+ readonly TOO_MANY_VARIABLES: "VALIDATION_TOO_MANY_VARIABLES";
28
+ readonly INVALID_INCLUDE_PATH: "VALIDATION_INVALID_INCLUDE_PATH";
29
+ readonly MAX_INCLUDE_DEPTH: "VALIDATION_MAX_INCLUDE_DEPTH";
30
+ readonly REQUIRED_VARIABLE: "VALIDATION_REQUIRED_VARIABLE";
31
+ readonly DANGEROUS_PATTERN: "VALIDATION_DANGEROUS_PATTERN";
32
+ readonly PATTERN_TOO_COMPLEX: "VALIDATION_PATTERN_TOO_COMPLEX";
33
+ readonly PATTERN_MISMATCH: "VALIDATION_PATTERN_MISMATCH";
34
+ readonly INVALID_PATTERN: "VALIDATION_INVALID_PATTERN";
35
+ readonly INVALID_OPTIONS: "VALIDATION_INVALID_OPTIONS";
36
+ readonly INVALID_NUMBER: "VALIDATION_INVALID_NUMBER";
37
+ readonly INVALID_DATE: "VALIDATION_INVALID_DATE";
38
+ readonly INVALID_ARRAY: "VALIDATION_INVALID_ARRAY";
39
+ readonly INVALID_OBJECT: "VALIDATION_INVALID_OBJECT";
40
+ readonly INVALID_FRAMEWORK: "VALIDATION_INVALID_FRAMEWORK";
41
+ readonly INVALID_RISK_TOLERANCE: "VALIDATION_INVALID_RISK_TOLERANCE";
42
+ readonly MAX_GOALS_EXCEEDED: "VALIDATION_MAX_GOALS_EXCEEDED";
43
+ readonly GOAL_TOO_SHORT: "VALIDATION_GOAL_TOO_SHORT";
44
+ readonly HARMFUL_CONTENT: "VALIDATION_HARMFUL_CONTENT";
45
+ readonly DEPENDENCY_CYCLE: "VALIDATION_DEPENDENCY_CYCLE";
46
+ readonly GOAL_NOT_FOUND: "VALIDATION_GOAL_NOT_FOUND";
47
+ readonly INVALID_GOAL_STATUS: "VALIDATION_INVALID_GOAL_STATUS";
48
+ readonly CONTEXT_TOO_LARGE: "VALIDATION_CONTEXT_TOO_LARGE";
49
+ readonly STATE_TOO_LARGE: "VALIDATION_STATE_TOO_LARGE";
50
+ };
51
+ /**
52
+ * Network error codes - API and network failures
53
+ */
54
+ export declare const NetworkErrorCodes: {
55
+ readonly REQUEST_FAILED: "NETWORK_REQUEST_FAILED";
56
+ readonly INVALID_RESPONSE: "NETWORK_INVALID_RESPONSE";
57
+ readonly RESPONSE_TOO_LARGE: "NETWORK_RESPONSE_TOO_LARGE";
58
+ readonly API_ERROR: "NETWORK_API_ERROR";
59
+ readonly RATE_LIMIT_EXCEEDED: "NETWORK_RATE_LIMIT_EXCEEDED";
60
+ readonly FETCH_FAILED: "NETWORK_FETCH_FAILED";
61
+ };
62
+ /**
63
+ * System error codes - Internal system failures
64
+ */
65
+ export declare const SystemErrorCodes: {
66
+ readonly LOAD_FAILED: "SYSTEM_LOAD_FAILED";
67
+ readonly SAVE_FAILED: "SYSTEM_SAVE_FAILED";
68
+ readonly DELETE_FAILED: "SYSTEM_DELETE_FAILED";
69
+ readonly IMPORT_FAILED: "SYSTEM_IMPORT_FAILED";
70
+ readonly EXPORT_FAILED: "SYSTEM_EXPORT_FAILED";
71
+ readonly DESERIALIZATION_FAILED: "SYSTEM_DESERIALIZATION_FAILED";
72
+ readonly UNKNOWN_FRAMEWORK: "SYSTEM_UNKNOWN_FRAMEWORK";
73
+ readonly UNSUPPORTED_FORMAT: "SYSTEM_UNSUPPORTED_FORMAT";
74
+ };
75
+ /**
76
+ * All error codes combined for easy access
77
+ */
78
+ export declare const ErrorCodes: {
79
+ readonly LOAD_FAILED: "SYSTEM_LOAD_FAILED";
80
+ readonly SAVE_FAILED: "SYSTEM_SAVE_FAILED";
81
+ readonly DELETE_FAILED: "SYSTEM_DELETE_FAILED";
82
+ readonly IMPORT_FAILED: "SYSTEM_IMPORT_FAILED";
83
+ readonly EXPORT_FAILED: "SYSTEM_EXPORT_FAILED";
84
+ readonly DESERIALIZATION_FAILED: "SYSTEM_DESERIALIZATION_FAILED";
85
+ readonly UNKNOWN_FRAMEWORK: "SYSTEM_UNKNOWN_FRAMEWORK";
86
+ readonly UNSUPPORTED_FORMAT: "SYSTEM_UNSUPPORTED_FORMAT";
87
+ readonly REQUEST_FAILED: "NETWORK_REQUEST_FAILED";
88
+ readonly INVALID_RESPONSE: "NETWORK_INVALID_RESPONSE";
89
+ readonly RESPONSE_TOO_LARGE: "NETWORK_RESPONSE_TOO_LARGE";
90
+ readonly API_ERROR: "NETWORK_API_ERROR";
91
+ readonly RATE_LIMIT_EXCEEDED: "NETWORK_RATE_LIMIT_EXCEEDED";
92
+ readonly FETCH_FAILED: "NETWORK_FETCH_FAILED";
93
+ readonly INVALID_INPUT: "VALIDATION_INVALID_INPUT";
94
+ readonly REQUIRED_FIELD: "VALIDATION_REQUIRED_FIELD";
95
+ readonly INVALID_FORMAT: "VALIDATION_INVALID_FORMAT";
96
+ readonly INVALID_LENGTH: "VALIDATION_INVALID_LENGTH";
97
+ readonly INVALID_RANGE: "VALIDATION_INVALID_RANGE";
98
+ readonly INVALID_TYPE: "VALIDATION_INVALID_TYPE";
99
+ readonly INVALID_PERSONA_ID: "VALIDATION_INVALID_PERSONA_ID";
100
+ readonly INVALID_SEARCH_QUERY: "VALIDATION_INVALID_SEARCH_QUERY";
101
+ readonly INVALID_COLLECTION_PATH: "VALIDATION_INVALID_COLLECTION_PATH";
102
+ readonly INVALID_URL: "VALIDATION_INVALID_URL";
103
+ readonly INVALID_FILENAME: "VALIDATION_INVALID_FILENAME";
104
+ readonly INVALID_PATH: "VALIDATION_INVALID_PATH";
105
+ readonly PATH_TRAVERSAL: "VALIDATION_PATH_TRAVERSAL";
106
+ readonly INVALID_CHARACTER: "VALIDATION_INVALID_CHARACTER";
107
+ readonly CONFIRMATION_REQUIRED: "VALIDATION_CONFIRMATION_REQUIRED";
108
+ readonly INVALID_CATEGORY: "VALIDATION_INVALID_CATEGORY";
109
+ readonly CONTENT_TOO_LARGE: "VALIDATION_CONTENT_TOO_LARGE";
110
+ readonly TEMPLATE_TOO_LARGE: "VALIDATION_TEMPLATE_TOO_LARGE";
111
+ readonly TOO_MANY_VARIABLES: "VALIDATION_TOO_MANY_VARIABLES";
112
+ readonly INVALID_INCLUDE_PATH: "VALIDATION_INVALID_INCLUDE_PATH";
113
+ readonly MAX_INCLUDE_DEPTH: "VALIDATION_MAX_INCLUDE_DEPTH";
114
+ readonly REQUIRED_VARIABLE: "VALIDATION_REQUIRED_VARIABLE";
115
+ readonly DANGEROUS_PATTERN: "VALIDATION_DANGEROUS_PATTERN";
116
+ readonly PATTERN_TOO_COMPLEX: "VALIDATION_PATTERN_TOO_COMPLEX";
117
+ readonly PATTERN_MISMATCH: "VALIDATION_PATTERN_MISMATCH";
118
+ readonly INVALID_PATTERN: "VALIDATION_INVALID_PATTERN";
119
+ readonly INVALID_OPTIONS: "VALIDATION_INVALID_OPTIONS";
120
+ readonly INVALID_NUMBER: "VALIDATION_INVALID_NUMBER";
121
+ readonly INVALID_DATE: "VALIDATION_INVALID_DATE";
122
+ readonly INVALID_ARRAY: "VALIDATION_INVALID_ARRAY";
123
+ readonly INVALID_OBJECT: "VALIDATION_INVALID_OBJECT";
124
+ readonly INVALID_FRAMEWORK: "VALIDATION_INVALID_FRAMEWORK";
125
+ readonly INVALID_RISK_TOLERANCE: "VALIDATION_INVALID_RISK_TOLERANCE";
126
+ readonly MAX_GOALS_EXCEEDED: "VALIDATION_MAX_GOALS_EXCEEDED";
127
+ readonly GOAL_TOO_SHORT: "VALIDATION_GOAL_TOO_SHORT";
128
+ readonly HARMFUL_CONTENT: "VALIDATION_HARMFUL_CONTENT";
129
+ readonly DEPENDENCY_CYCLE: "VALIDATION_DEPENDENCY_CYCLE";
130
+ readonly GOAL_NOT_FOUND: "VALIDATION_GOAL_NOT_FOUND";
131
+ readonly INVALID_GOAL_STATUS: "VALIDATION_INVALID_GOAL_STATUS";
132
+ readonly CONTEXT_TOO_LARGE: "VALIDATION_CONTEXT_TOO_LARGE";
133
+ readonly STATE_TOO_LARGE: "VALIDATION_STATE_TOO_LARGE";
134
+ };
135
+ export type ErrorCode = typeof ErrorCodes[keyof typeof ErrorCodes];
136
+ //# sourceMappingURL=errorCodes.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"errorCodes.d.ts","sourceRoot":"","sources":["../../src/utils/errorCodes.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH;;GAEG;AACH,eAAO,MAAM,oBAAoB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAiDvB,CAAC;AAEX;;GAEG;AACH,eAAO,MAAM,iBAAiB;;;;;;;CAOpB,CAAC;AAEX;;GAEG;AACH,eAAO,MAAM,gBAAgB;;;;;;;;;CASnB,CAAC;AAEX;;GAEG;AACH,eAAO,MAAM,UAAU;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAIb,CAAC;AAEX,MAAM,MAAM,SAAS,GAAG,OAAO,UAAU,CAAC,MAAM,OAAO,UAAU,CAAC,CAAC"}
@@ -0,0 +1,87 @@
1
+ /**
2
+ * Centralized error codes for consistent error handling across the application.
3
+ * Error codes follow the pattern: CATEGORY_SPECIFIC_ERROR
4
+ */
5
+ /**
6
+ * Validation error codes - Input validation failures
7
+ */
8
+ export const ValidationErrorCodes = {
9
+ // General validation
10
+ INVALID_INPUT: 'VALIDATION_INVALID_INPUT',
11
+ REQUIRED_FIELD: 'VALIDATION_REQUIRED_FIELD',
12
+ INVALID_FORMAT: 'VALIDATION_INVALID_FORMAT',
13
+ INVALID_LENGTH: 'VALIDATION_INVALID_LENGTH',
14
+ INVALID_RANGE: 'VALIDATION_INVALID_RANGE',
15
+ INVALID_TYPE: 'VALIDATION_INVALID_TYPE',
16
+ // Specific validation
17
+ INVALID_PERSONA_ID: 'VALIDATION_INVALID_PERSONA_ID',
18
+ INVALID_SEARCH_QUERY: 'VALIDATION_INVALID_SEARCH_QUERY',
19
+ INVALID_COLLECTION_PATH: 'VALIDATION_INVALID_COLLECTION_PATH',
20
+ INVALID_URL: 'VALIDATION_INVALID_URL',
21
+ INVALID_FILENAME: 'VALIDATION_INVALID_FILENAME',
22
+ INVALID_PATH: 'VALIDATION_INVALID_PATH',
23
+ PATH_TRAVERSAL: 'VALIDATION_PATH_TRAVERSAL',
24
+ INVALID_CHARACTER: 'VALIDATION_INVALID_CHARACTER',
25
+ CONFIRMATION_REQUIRED: 'VALIDATION_CONFIRMATION_REQUIRED',
26
+ INVALID_CATEGORY: 'VALIDATION_INVALID_CATEGORY',
27
+ CONTENT_TOO_LARGE: 'VALIDATION_CONTENT_TOO_LARGE',
28
+ // Template validation
29
+ TEMPLATE_TOO_LARGE: 'VALIDATION_TEMPLATE_TOO_LARGE',
30
+ TOO_MANY_VARIABLES: 'VALIDATION_TOO_MANY_VARIABLES',
31
+ INVALID_INCLUDE_PATH: 'VALIDATION_INVALID_INCLUDE_PATH',
32
+ MAX_INCLUDE_DEPTH: 'VALIDATION_MAX_INCLUDE_DEPTH',
33
+ REQUIRED_VARIABLE: 'VALIDATION_REQUIRED_VARIABLE',
34
+ DANGEROUS_PATTERN: 'VALIDATION_DANGEROUS_PATTERN',
35
+ PATTERN_TOO_COMPLEX: 'VALIDATION_PATTERN_TOO_COMPLEX',
36
+ PATTERN_MISMATCH: 'VALIDATION_PATTERN_MISMATCH',
37
+ INVALID_PATTERN: 'VALIDATION_INVALID_PATTERN',
38
+ INVALID_OPTIONS: 'VALIDATION_INVALID_OPTIONS',
39
+ INVALID_NUMBER: 'VALIDATION_INVALID_NUMBER',
40
+ INVALID_DATE: 'VALIDATION_INVALID_DATE',
41
+ INVALID_ARRAY: 'VALIDATION_INVALID_ARRAY',
42
+ INVALID_OBJECT: 'VALIDATION_INVALID_OBJECT',
43
+ // Agent validation
44
+ INVALID_FRAMEWORK: 'VALIDATION_INVALID_FRAMEWORK',
45
+ INVALID_RISK_TOLERANCE: 'VALIDATION_INVALID_RISK_TOLERANCE',
46
+ MAX_GOALS_EXCEEDED: 'VALIDATION_MAX_GOALS_EXCEEDED',
47
+ GOAL_TOO_SHORT: 'VALIDATION_GOAL_TOO_SHORT',
48
+ HARMFUL_CONTENT: 'VALIDATION_HARMFUL_CONTENT',
49
+ DEPENDENCY_CYCLE: 'VALIDATION_DEPENDENCY_CYCLE',
50
+ GOAL_NOT_FOUND: 'VALIDATION_GOAL_NOT_FOUND',
51
+ INVALID_GOAL_STATUS: 'VALIDATION_INVALID_GOAL_STATUS',
52
+ CONTEXT_TOO_LARGE: 'VALIDATION_CONTEXT_TOO_LARGE',
53
+ STATE_TOO_LARGE: 'VALIDATION_STATE_TOO_LARGE',
54
+ };
55
+ /**
56
+ * Network error codes - API and network failures
57
+ */
58
+ export const NetworkErrorCodes = {
59
+ REQUEST_FAILED: 'NETWORK_REQUEST_FAILED',
60
+ INVALID_RESPONSE: 'NETWORK_INVALID_RESPONSE',
61
+ RESPONSE_TOO_LARGE: 'NETWORK_RESPONSE_TOO_LARGE',
62
+ API_ERROR: 'NETWORK_API_ERROR',
63
+ RATE_LIMIT_EXCEEDED: 'NETWORK_RATE_LIMIT_EXCEEDED',
64
+ FETCH_FAILED: 'NETWORK_FETCH_FAILED',
65
+ };
66
+ /**
67
+ * System error codes - Internal system failures
68
+ */
69
+ export const SystemErrorCodes = {
70
+ LOAD_FAILED: 'SYSTEM_LOAD_FAILED',
71
+ SAVE_FAILED: 'SYSTEM_SAVE_FAILED',
72
+ DELETE_FAILED: 'SYSTEM_DELETE_FAILED',
73
+ IMPORT_FAILED: 'SYSTEM_IMPORT_FAILED',
74
+ EXPORT_FAILED: 'SYSTEM_EXPORT_FAILED',
75
+ DESERIALIZATION_FAILED: 'SYSTEM_DESERIALIZATION_FAILED',
76
+ UNKNOWN_FRAMEWORK: 'SYSTEM_UNKNOWN_FRAMEWORK',
77
+ UNSUPPORTED_FORMAT: 'SYSTEM_UNSUPPORTED_FORMAT',
78
+ };
79
+ /**
80
+ * All error codes combined for easy access
81
+ */
82
+ export const ErrorCodes = {
83
+ ...ValidationErrorCodes,
84
+ ...NetworkErrorCodes,
85
+ ...SystemErrorCodes,
86
+ };
87
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXJyb3JDb2Rlcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlscy9lcnJvckNvZGVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7R0FHRztBQUVIOztHQUVHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sb0JBQW9CLEdBQUc7SUFDbEMscUJBQXFCO0lBQ3JCLGFBQWEsRUFBRSwwQkFBMEI7SUFDekMsY0FBYyxFQUFFLDJCQUEyQjtJQUMzQyxjQUFjLEVBQUUsMkJBQTJCO0lBQzNDLGNBQWMsRUFBRSwyQkFBMkI7SUFDM0MsYUFBYSxFQUFFLDBCQUEwQjtJQUN6QyxZQUFZLEVBQUUseUJBQXlCO0lBRXZDLHNCQUFzQjtJQUN0QixrQkFBa0IsRUFBRSwrQkFBK0I7SUFDbkQsb0JBQW9CLEVBQUUsaUNBQWlDO0lBQ3ZELHVCQUF1QixFQUFFLG9DQUFvQztJQUM3RCxXQUFXLEVBQUUsd0JBQXdCO0lBQ3JDLGdCQUFnQixFQUFFLDZCQUE2QjtJQUMvQyxZQUFZLEVBQUUseUJBQXlCO0lBQ3ZDLGNBQWMsRUFBRSwyQkFBMkI7SUFDM0MsaUJBQWlCLEVBQUUsOEJBQThCO0lBQ2pELHFCQUFxQixFQUFFLGtDQUFrQztJQUN6RCxnQkFBZ0IsRUFBRSw2QkFBNkI7SUFDL0MsaUJBQWlCLEVBQUUsOEJBQThCO0lBRWpELHNCQUFzQjtJQUN0QixrQkFBa0IsRUFBRSwrQkFBK0I7SUFDbkQsa0JBQWtCLEVBQUUsK0JBQStCO0lBQ25ELG9CQUFvQixFQUFFLGlDQUFpQztJQUN2RCxpQkFBaUIsRUFBRSw4QkFBOEI7SUFDakQsaUJBQWlCLEVBQUUsOEJBQThCO0lBQ2pELGlCQUFpQixFQUFFLDhCQUE4QjtJQUNqRCxtQkFBbUIsRUFBRSxnQ0FBZ0M7SUFDckQsZ0JBQWdCLEVBQUUsNkJBQTZCO0lBQy9DLGVBQWUsRUFBRSw0QkFBNEI7SUFDN0MsZUFBZSxFQUFFLDRCQUE0QjtJQUM3QyxjQUFjLEVBQUUsMkJBQTJCO0lBQzNDLFlBQVksRUFBRSx5QkFBeUI7SUFDdkMsYUFBYSxFQUFFLDBCQUEwQjtJQUN6QyxjQUFjLEVBQUUsMkJBQTJCO0lBRTNDLG1CQUFtQjtJQUNuQixpQkFBaUIsRUFBRSw4QkFBOEI7SUFDakQsc0JBQXNCLEVBQUUsbUNBQW1DO0lBQzNELGtCQUFrQixFQUFFLCtCQUErQjtJQUNuRCxjQUFjLEVBQUUsMkJBQTJCO0lBQzNDLGVBQWUsRUFBRSw0QkFBNEI7SUFDN0MsZ0JBQWdCLEVBQUUsNkJBQTZCO0lBQy9DLGNBQWMsRUFBRSwyQkFBMkI7SUFDM0MsbUJBQW1CLEVBQUUsZ0NBQWdDO0lBQ3JELGlCQUFpQixFQUFFLDhCQUE4QjtJQUNqRCxlQUFlLEVBQUUsNEJBQTRCO0NBQ3JDLENBQUM7QUFFWDs7R0FFRztBQUNILE1BQU0sQ0FBQyxNQUFNLGlCQUFpQixHQUFHO0lBQy9CLGNBQWMsRUFBRSx3QkFBd0I7SUFDeEMsZ0JBQWdCLEVBQUUsMEJBQTBCO0lBQzVDLGtCQUFrQixFQUFFLDRCQUE0QjtJQUNoRCxTQUFTLEVBQUUsbUJBQW1CO0lBQzlCLG1CQUFtQixFQUFFLDZCQUE2QjtJQUNsRCxZQUFZLEVBQUUsc0JBQXNCO0NBQzVCLENBQUM7QUFFWDs7R0FFRztBQUNILE1BQU0sQ0FBQyxNQUFNLGdCQUFnQixHQUFHO0lBQzlCLFdBQVcsRUFBRSxvQkFBb0I7SUFDakMsV0FBVyxFQUFFLG9CQUFvQjtJQUNqQyxhQUFhLEVBQUUsc0JBQXNCO0lBQ3JDLGFBQWEsRUFBRSxzQkFBc0I7SUFDckMsYUFBYSxFQUFFLHNCQUFzQjtJQUNyQyxzQkFBc0IsRUFBRSwrQkFBK0I7SUFDdkQsaUJBQWlCLEVBQUUsMEJBQTBCO0lBQzdDLGtCQUFrQixFQUFFLDJCQUEyQjtDQUN2QyxDQUFDO0FBRVg7O0dBRUc7QUFDSCxNQUFNLENBQUMsTUFBTSxVQUFVLEdBQUc7SUFDeEIsR0FBRyxvQkFBb0I7SUFDdkIsR0FBRyxpQkFBaUI7SUFDcEIsR0FBRyxnQkFBZ0I7Q0FDWCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBDZW50cmFsaXplZCBlcnJvciBjb2RlcyBmb3IgY29uc2lzdGVudCBlcnJvciBoYW5kbGluZyBhY3Jvc3MgdGhlIGFwcGxpY2F0aW9uLlxuICogRXJyb3IgY29kZXMgZm9sbG93IHRoZSBwYXR0ZXJuOiBDQVRFR09SWV9TUEVDSUZJQ19FUlJPUlxuICovXG5cbi8qKlxuICogVmFsaWRhdGlvbiBlcnJvciBjb2RlcyAtIElucHV0IHZhbGlkYXRpb24gZmFpbHVyZXNcbiAqL1xuZXhwb3J0IGNvbnN0IFZhbGlkYXRpb25FcnJvckNvZGVzID0ge1xuICAvLyBHZW5lcmFsIHZhbGlkYXRpb25cbiAgSU5WQUxJRF9JTlBVVDogJ1ZBTElEQVRJT05fSU5WQUxJRF9JTlBVVCcsXG4gIFJFUVVJUkVEX0ZJRUxEOiAnVkFMSURBVElPTl9SRVFVSVJFRF9GSUVMRCcsXG4gIElOVkFMSURfRk9STUFUOiAnVkFMSURBVElPTl9JTlZBTElEX0ZPUk1BVCcsXG4gIElOVkFMSURfTEVOR1RIOiAnVkFMSURBVElPTl9JTlZBTElEX0xFTkdUSCcsXG4gIElOVkFMSURfUkFOR0U6ICdWQUxJREFUSU9OX0lOVkFMSURfUkFOR0UnLFxuICBJTlZBTElEX1RZUEU6ICdWQUxJREFUSU9OX0lOVkFMSURfVFlQRScsXG4gIFxuICAvLyBTcGVjaWZpYyB2YWxpZGF0aW9uXG4gIElOVkFMSURfUEVSU09OQV9JRDogJ1ZBTElEQVRJT05fSU5WQUxJRF9QRVJTT05BX0lEJyxcbiAgSU5WQUxJRF9TRUFSQ0hfUVVFUlk6ICdWQUxJREFUSU9OX0lOVkFMSURfU0VBUkNIX1FVRVJZJyxcbiAgSU5WQUxJRF9DT0xMRUNUSU9OX1BBVEg6ICdWQUxJREFUSU9OX0lOVkFMSURfQ09MTEVDVElPTl9QQVRIJyxcbiAgSU5WQUxJRF9VUkw6ICdWQUxJREFUSU9OX0lOVkFMSURfVVJMJyxcbiAgSU5WQUxJRF9GSUxFTkFNRTogJ1ZBTElEQVRJT05fSU5WQUxJRF9GSUxFTkFNRScsXG4gIElOVkFMSURfUEFUSDogJ1ZBTElEQVRJT05fSU5WQUxJRF9QQVRIJyxcbiAgUEFUSF9UUkFWRVJTQUw6ICdWQUxJREFUSU9OX1BBVEhfVFJBVkVSU0FMJyxcbiAgSU5WQUxJRF9DSEFSQUNURVI6ICdWQUxJREFUSU9OX0lOVkFMSURfQ0hBUkFDVEVSJyxcbiAgQ09ORklSTUFUSU9OX1JFUVVJUkVEOiAnVkFMSURBVElPTl9DT05GSVJNQVRJT05fUkVRVUlSRUQnLFxuICBJTlZBTElEX0NBVEVHT1JZOiAnVkFMSURBVElPTl9JTlZBTElEX0NBVEVHT1JZJyxcbiAgQ09OVEVOVF9UT09fTEFSR0U6ICdWQUxJREFUSU9OX0NPTlRFTlRfVE9PX0xBUkdFJyxcbiAgXG4gIC8vIFRlbXBsYXRlIHZhbGlkYXRpb25cbiAgVEVNUExBVEVfVE9PX0xBUkdFOiAnVkFMSURBVElPTl9URU1QTEFURV9UT09fTEFSR0UnLFxuICBUT09fTUFOWV9WQVJJQUJMRVM6ICdWQUxJREFUSU9OX1RPT19NQU5ZX1ZBUklBQkxFUycsXG4gIElOVkFMSURfSU5DTFVERV9QQVRIOiAnVkFMSURBVElPTl9JTlZBTElEX0lOQ0xVREVfUEFUSCcsXG4gIE1BWF9JTkNMVURFX0RFUFRIOiAnVkFMSURBVElPTl9NQVhfSU5DTFVERV9ERVBUSCcsXG4gIFJFUVVJUkVEX1ZBUklBQkxFOiAnVkFMSURBVElPTl9SRVFVSVJFRF9WQVJJQUJMRScsXG4gIERBTkdFUk9VU19QQVRURVJOOiAnVkFMSURBVElPTl9EQU5HRVJPVVNfUEFUVEVSTicsXG4gIFBBVFRFUk5fVE9PX0NPTVBMRVg6ICdWQUxJREFUSU9OX1BBVFRFUk5fVE9PX0NPTVBMRVgnLFxuICBQQVRURVJOX01JU01BVENIOiAnVkFMSURBVElPTl9QQVRURVJOX01JU01BVENIJyxcbiAgSU5WQUxJRF9QQVRURVJOOiAnVkFMSURBVElPTl9JTlZBTElEX1BBVFRFUk4nLFxuICBJTlZBTElEX09QVElPTlM6ICdWQUxJREFUSU9OX0lOVkFMSURfT1BUSU9OUycsXG4gIElOVkFMSURfTlVNQkVSOiAnVkFMSURBVElPTl9JTlZBTElEX05VTUJFUicsXG4gIElOVkFMSURfREFURTogJ1ZBTElEQVRJT05fSU5WQUxJRF9EQVRFJyxcbiAgSU5WQUxJRF9BUlJBWTogJ1ZBTElEQVRJT05fSU5WQUxJRF9BUlJBWScsXG4gIElOVkFMSURfT0JKRUNUOiAnVkFMSURBVElPTl9JTlZBTElEX09CSkVDVCcsXG4gIFxuICAvLyBBZ2VudCB2YWxpZGF0aW9uXG4gIElOVkFMSURfRlJBTUVXT1JLOiAnVkFMSURBVElPTl9JTlZBTElEX0ZSQU1FV09SSycsXG4gIElOVkFMSURfUklTS19UT0xFUkFOQ0U6ICdWQUxJREFUSU9OX0lOVkFMSURfUklTS19UT0xFUkFOQ0UnLFxuICBNQVhfR09BTFNfRVhDRUVERUQ6ICdWQUxJREFUSU9OX01BWF9HT0FMU19FWENFRURFRCcsXG4gIEdPQUxfVE9PX1NIT1JUOiAnVkFMSURBVElPTl9HT0FMX1RPT19TSE9SVCcsXG4gIEhBUk1GVUxfQ09OVEVOVDogJ1ZBTElEQVRJT05fSEFSTUZVTF9DT05URU5UJyxcbiAgREVQRU5ERU5DWV9DWUNMRTogJ1ZBTElEQVRJT05fREVQRU5ERU5DWV9DWUNMRScsXG4gIEdPQUxfTk9UX0ZPVU5EOiAnVkFMSURBVElPTl9HT0FMX05PVF9GT1VORCcsXG4gIElOVkFMSURfR09BTF9TVEFUVVM6ICdWQUxJREFUSU9OX0lOVkFMSURfR09BTF9TVEFUVVMnLFxuICBDT05URVhUX1RPT19MQVJHRTogJ1ZBTElEQVRJT05fQ09OVEVYVF9UT09fTEFSR0UnLFxuICBTVEFURV9UT09fTEFSR0U6ICdWQUxJREFUSU9OX1NUQVRFX1RPT19MQVJHRScsXG59IGFzIGNvbnN0O1xuXG4vKipcbiAqIE5ldHdvcmsgZXJyb3IgY29kZXMgLSBBUEkgYW5kIG5ldHdvcmsgZmFpbHVyZXNcbiAqL1xuZXhwb3J0IGNvbnN0IE5ldHdvcmtFcnJvckNvZGVzID0ge1xuICBSRVFVRVNUX0ZBSUxFRDogJ05FVFdPUktfUkVRVUVTVF9GQUlMRUQnLFxuICBJTlZBTElEX1JFU1BPTlNFOiAnTkVUV09SS19JTlZBTElEX1JFU1BPTlNFJyxcbiAgUkVTUE9OU0VfVE9PX0xBUkdFOiAnTkVUV09SS19SRVNQT05TRV9UT09fTEFSR0UnLFxuICBBUElfRVJST1I6ICdORVRXT1JLX0FQSV9FUlJPUicsXG4gIFJBVEVfTElNSVRfRVhDRUVERUQ6ICdORVRXT1JLX1JBVEVfTElNSVRfRVhDRUVERUQnLFxuICBGRVRDSF9GQUlMRUQ6ICdORVRXT1JLX0ZFVENIX0ZBSUxFRCcsXG59IGFzIGNvbnN0O1xuXG4vKipcbiAqIFN5c3RlbSBlcnJvciBjb2RlcyAtIEludGVybmFsIHN5c3RlbSBmYWlsdXJlc1xuICovXG5leHBvcnQgY29uc3QgU3lzdGVtRXJyb3JDb2RlcyA9IHtcbiAgTE9BRF9GQUlMRUQ6ICdTWVNURU1fTE9BRF9GQUlMRUQnLFxuICBTQVZFX0ZBSUxFRDogJ1NZU1RFTV9TQVZFX0ZBSUxFRCcsXG4gIERFTEVURV9GQUlMRUQ6ICdTWVNURU1fREVMRVRFX0ZBSUxFRCcsXG4gIElNUE9SVF9GQUlMRUQ6ICdTWVNURU1fSU1QT1JUX0ZBSUxFRCcsXG4gIEVYUE9SVF9GQUlMRUQ6ICdTWVNURU1fRVhQT1JUX0ZBSUxFRCcsXG4gIERFU0VSSUFMSVpBVElPTl9GQUlMRUQ6ICdTWVNURU1fREVTRVJJQUxJWkFUSU9OX0ZBSUxFRCcsXG4gIFVOS05PV05fRlJBTUVXT1JLOiAnU1lTVEVNX1VOS05PV05fRlJBTUVXT1JLJyxcbiAgVU5TVVBQT1JURURfRk9STUFUOiAnU1lTVEVNX1VOU1VQUE9SVEVEX0ZPUk1BVCcsXG59IGFzIGNvbnN0O1xuXG4vKipcbiAqIEFsbCBlcnJvciBjb2RlcyBjb21iaW5lZCBmb3IgZWFzeSBhY2Nlc3NcbiAqL1xuZXhwb3J0IGNvbnN0IEVycm9yQ29kZXMgPSB7XG4gIC4uLlZhbGlkYXRpb25FcnJvckNvZGVzLFxuICAuLi5OZXR3b3JrRXJyb3JDb2RlcyxcbiAgLi4uU3lzdGVtRXJyb3JDb2Rlcyxcbn0gYXMgY29uc3Q7XG5cbmV4cG9ydCB0eXBlIEVycm9yQ29kZSA9IHR5cGVvZiBFcnJvckNvZGVzW2tleW9mIHR5cGVvZiBFcnJvckNvZGVzXTsiXX0=
@@ -4,4 +4,7 @@
4
4
  export * from './git.js';
5
5
  export * from './filesystem.js';
6
6
  export * from './version.js';
7
+ export * from './SecureDownloader.js';
8
+ export * from './RateLimiter.js';
9
+ export * from './ToolCache.js';
7
10
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,cAAc,UAAU,CAAC;AACzB,cAAc,iBAAiB,CAAC;AAChC,cAAc,cAAc,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,cAAc,UAAU,CAAC;AACzB,cAAc,iBAAiB,CAAC;AAChC,cAAc,cAAc,CAAC;AAC7B,cAAc,uBAAuB,CAAC;AACtC,cAAc,kBAAkB,CAAC;AACjC,cAAc,gBAAgB,CAAC"}
@@ -4,4 +4,7 @@
4
4
  export * from './git.js';
5
5
  export * from './filesystem.js';
6
6
  export * from './version.js';
7
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdXRpbHMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O0dBRUc7QUFFSCxjQUFjLFVBQVUsQ0FBQztBQUN6QixjQUFjLGlCQUFpQixDQUFDO0FBQ2hDLGNBQWMsY0FBYyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBVdGlsaXRpZXMgbW9kdWxlIGV4cG9ydHNcbiAqL1xuXG5leHBvcnQgKiBmcm9tICcuL2dpdC5qcyc7XG5leHBvcnQgKiBmcm9tICcuL2ZpbGVzeXN0ZW0uanMnO1xuZXhwb3J0ICogZnJvbSAnLi92ZXJzaW9uLmpzJzsiXX0=
7
+ export * from './SecureDownloader.js';
8
+ export * from './RateLimiter.js';
9
+ export * from './ToolCache.js';
10
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdXRpbHMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O0dBRUc7QUFFSCxjQUFjLFVBQVUsQ0FBQztBQUN6QixjQUFjLGlCQUFpQixDQUFDO0FBQ2hDLGNBQWMsY0FBYyxDQUFDO0FBQzdCLGNBQWMsdUJBQXVCLENBQUM7QUFDdEMsY0FBYyxrQkFBa0IsQ0FBQztBQUNqQyxjQUFjLGdCQUFnQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBVdGlsaXRpZXMgbW9kdWxlIGV4cG9ydHNcbiAqL1xuXG5leHBvcnQgKiBmcm9tICcuL2dpdC5qcyc7XG5leHBvcnQgKiBmcm9tICcuL2ZpbGVzeXN0ZW0uanMnO1xuZXhwb3J0ICogZnJvbSAnLi92ZXJzaW9uLmpzJztcbmV4cG9ydCAqIGZyb20gJy4vU2VjdXJlRG93bmxvYWRlci5qcyc7XG5leHBvcnQgKiBmcm9tICcuL1JhdGVMaW1pdGVyLmpzJztcbmV4cG9ydCAqIGZyb20gJy4vVG9vbENhY2hlLmpzJzsiXX0=
@@ -5,7 +5,7 @@
5
5
  export type InstallationType = 'npm' | 'git' | 'unknown';
6
6
  export declare class InstallationDetector {
7
7
  private static cachedType;
8
- private static get MAX_SEARCH_DEPTH();
8
+ private static readonly MAX_SEARCH_DEPTH;
9
9
  /**
10
10
  * Detect the installation type (npm global, git clone, or unknown)
11
11
  */
@@ -1 +1 @@
1
- {"version":3,"file":"installation.d.ts","sourceRoot":"","sources":["../../src/utils/installation.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAQH,MAAM,MAAM,gBAAgB,GAAG,KAAK,GAAG,KAAK,GAAG,SAAS,CAAC;AAEzD,qBAAa,oBAAoB;IAC/B,OAAO,CAAC,MAAM,CAAC,UAAU,CAAiC;IAG1D,OAAO,CAAC,MAAM,KAAK,gBAAgB,GAElC;IAED;;OAEG;IACH,MAAM,CAAC,mBAAmB,IAAI,gBAAgB;IA8D9C;;OAEG;IACH,MAAM,CAAC,gBAAgB,IAAI,MAAM,GAAG,IAAI;IA2BxC;;OAEG;IACH,MAAM,CAAC,oBAAoB,IAAI,MAAM,GAAG,IAAI;IA4B5C;;OAEG;IACH,MAAM,CAAC,0BAA0B,IAAI,MAAM;IAqB3C;;OAEG;IACH,MAAM,CAAC,UAAU,IAAI,IAAI;CAG1B"}
1
+ {"version":3,"file":"installation.d.ts","sourceRoot":"","sources":["../../src/utils/installation.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAOH,MAAM,MAAM,gBAAgB,GAAG,KAAK,GAAG,KAAK,GAAG,SAAS,CAAC;AAEzD,qBAAa,oBAAoB;IAC/B,OAAO,CAAC,MAAM,CAAC,UAAU,CAAiC;IAG1D,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,gBAAgB,CAAM;IAE9C;;OAEG;IACH,MAAM,CAAC,mBAAmB,IAAI,gBAAgB;IAgE9C;;OAEG;IACH,MAAM,CAAC,gBAAgB,IAAI,MAAM,GAAG,IAAI;IA6BxC;;OAEG;IACH,MAAM,CAAC,oBAAoB,IAAI,MAAM,GAAG,IAAI;IA4B5C;;OAEG;IACH,MAAM,CAAC,0BAA0B,IAAI,MAAM;IAqB3C;;OAEG;IACH,MAAM,CAAC,UAAU,IAAI,IAAI;CAG1B"}