@dollhousemcp/mcp-server 1.3.0 → 1.3.3

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 (684) hide show
  1. package/CHANGELOG.md +28 -0
  2. package/README.md +99 -17
  3. package/dist/collection/ElementInstaller.d.ts.map +1 -1
  4. package/dist/collection/ElementInstaller.js +3 -7
  5. package/dist/elements/index.d.ts +0 -2
  6. package/dist/elements/index.d.ts.map +1 -1
  7. package/dist/elements/index.js +1 -3
  8. package/dist/elements/skills/Skill.d.ts.map +1 -1
  9. package/dist/elements/skills/Skill.js +3 -2
  10. package/dist/elements/skills/SkillManager.d.ts +83 -0
  11. package/dist/elements/skills/SkillManager.d.ts.map +1 -0
  12. package/dist/elements/skills/SkillManager.js +383 -0
  13. package/dist/elements/skills/index.d.ts +1 -0
  14. package/dist/elements/skills/index.d.ts.map +1 -1
  15. package/dist/elements/skills/index.js +2 -1
  16. package/dist/index.d.ts +51 -0
  17. package/dist/index.d.ts.map +1 -1
  18. package/dist/index.js +577 -3
  19. package/dist/portfolio/PortfolioManager.d.ts.map +1 -1
  20. package/dist/portfolio/PortfolioManager.js +1 -3
  21. package/dist/portfolio/types.d.ts +1 -3
  22. package/dist/portfolio/types.d.ts.map +1 -1
  23. package/dist/portfolio/types.js +1 -3
  24. package/dist/security/audit/config/suppressions.d.ts.map +1 -1
  25. package/dist/security/audit/config/suppressions.js +6 -1
  26. package/dist/server/ServerSetup.d.ts.map +1 -1
  27. package/dist/server/ServerSetup.js +5 -2
  28. package/dist/server/tools/CollectionTools.d.ts.map +1 -1
  29. package/dist/server/tools/CollectionTools.js +52 -7
  30. package/dist/server/tools/ElementTools.d.ts +11 -0
  31. package/dist/server/tools/ElementTools.d.ts.map +1 -0
  32. package/dist/server/tools/ElementTools.js +174 -0
  33. package/dist/server/tools/index.d.ts +1 -0
  34. package/dist/server/tools/index.d.ts.map +1 -1
  35. package/dist/server/tools/index.js +2 -1
  36. package/dist/server/types.d.ts +8 -0
  37. package/dist/server/types.d.ts.map +1 -1
  38. package/dist/server/types.js +1 -1
  39. package/package.json +1 -1
  40. package/dist/collection/MarketplaceBrowser.d.ts +0 -24
  41. package/dist/collection/MarketplaceBrowser.d.ts.map +0 -1
  42. package/dist/collection/MarketplaceBrowser.js +0 -115
  43. package/dist/collection/MarketplaceSearch.d.ts +0 -18
  44. package/dist/collection/MarketplaceSearch.d.ts.map +0 -1
  45. package/dist/collection/MarketplaceSearch.js +0 -48
  46. package/dist/collection/PersonaInstaller.d.ts +0 -26
  47. package/dist/collection/PersonaInstaller.d.ts.map +0 -1
  48. package/dist/collection/PersonaInstaller.js +0 -103
  49. package/dist/elements/ensembles/Ensemble.d.ts +0 -144
  50. package/dist/elements/ensembles/Ensemble.d.ts.map +0 -1
  51. package/dist/elements/ensembles/Ensemble.js +0 -860
  52. package/dist/elements/ensembles/EnsembleManager.d.ts +0 -85
  53. package/dist/elements/ensembles/EnsembleManager.d.ts.map +0 -1
  54. package/dist/elements/ensembles/EnsembleManager.js +0 -378
  55. package/dist/elements/ensembles/constants.d.ts +0 -73
  56. package/dist/elements/ensembles/constants.d.ts.map +0 -1
  57. package/dist/elements/ensembles/constants.js +0 -92
  58. package/dist/elements/ensembles/index.d.ts +0 -8
  59. package/dist/elements/ensembles/index.d.ts.map +0 -1
  60. package/dist/elements/ensembles/index.js +0 -8
  61. package/dist/elements/ensembles/types.d.ts +0 -92
  62. package/dist/elements/ensembles/types.d.ts.map +0 -1
  63. package/dist/elements/ensembles/types.js +0 -8
  64. package/dist/elements/memories/Memory.d.ts +0 -110
  65. package/dist/elements/memories/Memory.d.ts.map +0 -1
  66. package/dist/elements/memories/Memory.js +0 -470
  67. package/dist/elements/memories/MemoryManager.d.ts +0 -86
  68. package/dist/elements/memories/MemoryManager.d.ts.map +0 -1
  69. package/dist/elements/memories/MemoryManager.js +0 -435
  70. package/dist/elements/memories/constants.d.ts +0 -42
  71. package/dist/elements/memories/constants.d.ts.map +0 -1
  72. package/dist/elements/memories/constants.js +0 -49
  73. package/dist/elements/memories/index.d.ts +0 -6
  74. package/dist/elements/memories/index.d.ts.map +0 -1
  75. package/dist/elements/memories/index.js +0 -6
  76. package/dist/marketplace/GitHubClient.d.ts +0 -22
  77. package/dist/marketplace/GitHubClient.d.ts.map +0 -1
  78. package/dist/marketplace/GitHubClient.js +0 -112
  79. package/dist/marketplace/MarketplaceBrowser.d.ts +0 -24
  80. package/dist/marketplace/MarketplaceBrowser.d.ts.map +0 -1
  81. package/dist/marketplace/MarketplaceBrowser.js +0 -115
  82. package/dist/marketplace/MarketplaceSearch.d.ts +0 -18
  83. package/dist/marketplace/MarketplaceSearch.d.ts.map +0 -1
  84. package/dist/marketplace/MarketplaceSearch.js +0 -48
  85. package/dist/marketplace/PersonaDetails.d.ts +0 -22
  86. package/dist/marketplace/PersonaDetails.d.ts.map +0 -1
  87. package/dist/marketplace/PersonaDetails.js +0 -71
  88. package/dist/marketplace/PersonaInstaller.d.ts +0 -25
  89. package/dist/marketplace/PersonaInstaller.d.ts.map +0 -1
  90. package/dist/marketplace/PersonaInstaller.js +0 -100
  91. package/dist/marketplace/PersonaSubmitter.d.ts +0 -19
  92. package/dist/marketplace/PersonaSubmitter.d.ts.map +0 -1
  93. package/dist/marketplace/PersonaSubmitter.js +0 -57
  94. package/dist/marketplace/index.d.ts +0 -10
  95. package/dist/marketplace/index.d.ts.map +0 -1
  96. package/dist/marketplace/index.js +0 -10
  97. package/dist/server/tools/MarketplaceTools.d.ts +0 -10
  98. package/dist/server/tools/MarketplaceTools.d.ts.map +0 -1
  99. package/dist/server/tools/MarketplaceTools.js +0 -96
  100. package/dist/src/cache/APICache.d.ts +0 -23
  101. package/dist/src/cache/APICache.d.ts.map +0 -1
  102. package/dist/src/cache/APICache.js +0 -42
  103. package/dist/src/cache/index.d.ts +0 -5
  104. package/dist/src/cache/index.d.ts.map +0 -1
  105. package/dist/src/cache/index.js +0 -5
  106. package/dist/src/config/constants.d.ts +0 -25
  107. package/dist/src/config/constants.d.ts.map +0 -1
  108. package/dist/src/config/constants.js +0 -30
  109. package/dist/src/config/index.d.ts +0 -6
  110. package/dist/src/config/index.d.ts.map +0 -1
  111. package/dist/src/config/index.js +0 -6
  112. package/dist/src/config/indicator-config.d.ts +0 -107
  113. package/dist/src/config/indicator-config.d.ts.map +0 -1
  114. package/dist/src/config/indicator-config.js +0 -158
  115. package/dist/src/constants/defaultPersonas.d.ts +0 -10
  116. package/dist/src/constants/defaultPersonas.d.ts.map +0 -1
  117. package/dist/src/constants/defaultPersonas.js +0 -18
  118. package/dist/src/constants/limits.d.ts +0 -10
  119. package/dist/src/constants/limits.d.ts.map +0 -1
  120. package/dist/src/constants/limits.js +0 -13
  121. package/dist/src/errors/SecurityError.d.ts +0 -29
  122. package/dist/src/errors/SecurityError.d.ts.map +0 -1
  123. package/dist/src/errors/SecurityError.js +0 -47
  124. package/dist/src/errors/index.d.ts +0 -2
  125. package/dist/src/errors/index.d.ts.map +0 -1
  126. package/dist/src/errors/index.js +0 -2
  127. package/dist/src/index.barrel.d.ts +0 -21
  128. package/dist/src/index.barrel.d.ts.map +0 -1
  129. package/dist/src/index.barrel.js +0 -31
  130. package/dist/src/index.d.ts +0 -220
  131. package/dist/src/index.d.ts.map +0 -1
  132. package/dist/src/index.js +0 -1559
  133. package/dist/src/marketplace/GitHubClient.d.ts +0 -22
  134. package/dist/src/marketplace/GitHubClient.d.ts.map +0 -1
  135. package/dist/src/marketplace/GitHubClient.js +0 -112
  136. package/dist/src/marketplace/MarketplaceBrowser.d.ts +0 -21
  137. package/dist/src/marketplace/MarketplaceBrowser.d.ts.map +0 -1
  138. package/dist/src/marketplace/MarketplaceBrowser.js +0 -45
  139. package/dist/src/marketplace/MarketplaceSearch.d.ts +0 -18
  140. package/dist/src/marketplace/MarketplaceSearch.d.ts.map +0 -1
  141. package/dist/src/marketplace/MarketplaceSearch.js +0 -36
  142. package/dist/src/marketplace/PersonaDetails.d.ts +0 -22
  143. package/dist/src/marketplace/PersonaDetails.d.ts.map +0 -1
  144. package/dist/src/marketplace/PersonaDetails.js +0 -71
  145. package/dist/src/marketplace/PersonaInstaller.d.ts +0 -25
  146. package/dist/src/marketplace/PersonaInstaller.d.ts.map +0 -1
  147. package/dist/src/marketplace/PersonaInstaller.js +0 -100
  148. package/dist/src/marketplace/PersonaSubmitter.d.ts +0 -19
  149. package/dist/src/marketplace/PersonaSubmitter.d.ts.map +0 -1
  150. package/dist/src/marketplace/PersonaSubmitter.js +0 -57
  151. package/dist/src/marketplace/index.d.ts +0 -10
  152. package/dist/src/marketplace/index.d.ts.map +0 -1
  153. package/dist/src/marketplace/index.js +0 -10
  154. package/dist/src/persona/PersonaLoader.d.ts +0 -33
  155. package/dist/src/persona/PersonaLoader.d.ts.map +0 -1
  156. package/dist/src/persona/PersonaLoader.js +0 -139
  157. package/dist/src/persona/PersonaManager.d.ts +0 -112
  158. package/dist/src/persona/PersonaManager.d.ts.map +0 -1
  159. package/dist/src/persona/PersonaManager.js +0 -341
  160. package/dist/src/persona/PersonaValidator.d.ts +0 -33
  161. package/dist/src/persona/PersonaValidator.d.ts.map +0 -1
  162. package/dist/src/persona/PersonaValidator.js +0 -157
  163. package/dist/src/persona/export-import/PersonaExporter.d.ts +0 -43
  164. package/dist/src/persona/export-import/PersonaExporter.d.ts.map +0 -1
  165. package/dist/src/persona/export-import/PersonaExporter.js +0 -99
  166. package/dist/src/persona/export-import/PersonaImporter.d.ts +0 -65
  167. package/dist/src/persona/export-import/PersonaImporter.d.ts.map +0 -1
  168. package/dist/src/persona/export-import/PersonaImporter.js +0 -313
  169. package/dist/src/persona/export-import/PersonaSharer.d.ts +0 -60
  170. package/dist/src/persona/export-import/PersonaSharer.d.ts.map +0 -1
  171. package/dist/src/persona/export-import/PersonaSharer.js +0 -363
  172. package/dist/src/persona/export-import/index.d.ts +0 -10
  173. package/dist/src/persona/export-import/index.d.ts.map +0 -1
  174. package/dist/src/persona/export-import/index.js +0 -7
  175. package/dist/src/persona/index.d.ts +0 -7
  176. package/dist/src/persona/index.d.ts.map +0 -1
  177. package/dist/src/persona/index.js +0 -7
  178. package/dist/src/security/InputValidator.d.ts +0 -69
  179. package/dist/src/security/InputValidator.d.ts.map +0 -1
  180. package/dist/src/security/InputValidator.js +0 -381
  181. package/dist/src/security/commandValidator.d.ts +0 -7
  182. package/dist/src/security/commandValidator.d.ts.map +0 -1
  183. package/dist/src/security/commandValidator.js +0 -77
  184. package/dist/src/security/constants.d.ts +0 -21
  185. package/dist/src/security/constants.d.ts.map +0 -1
  186. package/dist/src/security/constants.js +0 -23
  187. package/dist/src/security/contentValidator.d.ts +0 -47
  188. package/dist/src/security/contentValidator.d.ts.map +0 -1
  189. package/dist/src/security/contentValidator.js +0 -188
  190. package/dist/src/security/fileLockManager.d.ts +0 -70
  191. package/dist/src/security/fileLockManager.d.ts.map +0 -1
  192. package/dist/src/security/fileLockManager.js +0 -187
  193. package/dist/src/security/index.d.ts +0 -12
  194. package/dist/src/security/index.d.ts.map +0 -1
  195. package/dist/src/security/index.js +0 -14
  196. package/dist/src/security/pathValidator.d.ts +0 -9
  197. package/dist/src/security/pathValidator.d.ts.map +0 -1
  198. package/dist/src/security/pathValidator.js +0 -97
  199. package/dist/src/security/secureYamlParser.d.ts +0 -46
  200. package/dist/src/security/secureYamlParser.d.ts.map +0 -1
  201. package/dist/src/security/secureYamlParser.js +0 -203
  202. package/dist/src/security/securityMonitor.d.ts +0 -58
  203. package/dist/src/security/securityMonitor.d.ts.map +0 -1
  204. package/dist/src/security/securityMonitor.js +0 -108
  205. package/dist/src/security/tokenManager.d.ts +0 -59
  206. package/dist/src/security/tokenManager.d.ts.map +0 -1
  207. package/dist/src/security/tokenManager.js +0 -216
  208. package/dist/src/security/yamlValidator.d.ts +0 -20
  209. package/dist/src/security/yamlValidator.d.ts.map +0 -1
  210. package/dist/src/security/yamlValidator.js +0 -138
  211. package/dist/src/server/ServerSetup.d.ts +0 -31
  212. package/dist/src/server/ServerSetup.d.ts.map +0 -1
  213. package/dist/src/server/ServerSetup.js +0 -79
  214. package/dist/src/server/index.d.ts +0 -7
  215. package/dist/src/server/index.d.ts.map +0 -1
  216. package/dist/src/server/index.js +0 -7
  217. package/dist/src/server/tools/ConfigTools.d.ts +0 -10
  218. package/dist/src/server/tools/ConfigTools.d.ts.map +0 -1
  219. package/dist/src/server/tools/ConfigTools.js +0 -63
  220. package/dist/src/server/tools/MarketplaceTools.d.ts +0 -10
  221. package/dist/src/server/tools/MarketplaceTools.d.ts.map +0 -1
  222. package/dist/src/server/tools/MarketplaceTools.js +0 -92
  223. package/dist/src/server/tools/PersonaTools.d.ts +0 -10
  224. package/dist/src/server/tools/PersonaTools.d.ts.map +0 -1
  225. package/dist/src/server/tools/PersonaTools.js +0 -257
  226. package/dist/src/server/tools/ToolRegistry.d.ts +0 -37
  227. package/dist/src/server/tools/ToolRegistry.d.ts.map +0 -1
  228. package/dist/src/server/tools/ToolRegistry.js +0 -40
  229. package/dist/src/server/tools/UpdateTools.d.ts +0 -10
  230. package/dist/src/server/tools/UpdateTools.d.ts.map +0 -1
  231. package/dist/src/server/tools/UpdateTools.js +0 -64
  232. package/dist/src/server/tools/UserTools.d.ts +0 -10
  233. package/dist/src/server/tools/UserTools.d.ts.map +0 -1
  234. package/dist/src/server/tools/UserTools.js +0 -51
  235. package/dist/src/server/tools/index.d.ts +0 -10
  236. package/dist/src/server/tools/index.d.ts.map +0 -1
  237. package/dist/src/server/tools/index.js +0 -10
  238. package/dist/src/server/types.d.ts +0 -34
  239. package/dist/src/server/types.d.ts.map +0 -1
  240. package/dist/src/server/types.js +0 -5
  241. package/dist/src/tools/debug.d.ts +0 -20
  242. package/dist/src/tools/debug.d.ts.map +0 -1
  243. package/dist/src/tools/debug.js +0 -37
  244. package/dist/src/types/cache.d.ts +0 -8
  245. package/dist/src/types/cache.d.ts.map +0 -1
  246. package/dist/src/types/cache.js +0 -5
  247. package/dist/src/types/index.d.ts +0 -8
  248. package/dist/src/types/index.d.ts.map +0 -1
  249. package/dist/src/types/index.js +0 -8
  250. package/dist/src/types/marketplace.d.ts +0 -23
  251. package/dist/src/types/marketplace.d.ts.map +0 -1
  252. package/dist/src/types/marketplace.js +0 -5
  253. package/dist/src/types/mcp.d.ts +0 -161
  254. package/dist/src/types/mcp.d.ts.map +0 -1
  255. package/dist/src/types/mcp.js +0 -75
  256. package/dist/src/types/persona.d.ts +0 -30
  257. package/dist/src/types/persona.d.ts.map +0 -1
  258. package/dist/src/types/persona.js +0 -5
  259. package/dist/src/update/BackupManager.d.ts +0 -46
  260. package/dist/src/update/BackupManager.d.ts.map +0 -1
  261. package/dist/src/update/BackupManager.js +0 -261
  262. package/dist/src/update/DependencyChecker.d.ts +0 -41
  263. package/dist/src/update/DependencyChecker.d.ts.map +0 -1
  264. package/dist/src/update/DependencyChecker.js +0 -132
  265. package/dist/src/update/RateLimiter.d.ts +0 -80
  266. package/dist/src/update/RateLimiter.d.ts.map +0 -1
  267. package/dist/src/update/RateLimiter.js +0 -172
  268. package/dist/src/update/SignatureVerifier.d.ts +0 -71
  269. package/dist/src/update/SignatureVerifier.d.ts.map +0 -1
  270. package/dist/src/update/SignatureVerifier.js +0 -214
  271. package/dist/src/update/UpdateChecker.d.ts +0 -127
  272. package/dist/src/update/UpdateChecker.d.ts.map +0 -1
  273. package/dist/src/update/UpdateChecker.js +0 -460
  274. package/dist/src/update/UpdateManager.d.ts +0 -41
  275. package/dist/src/update/UpdateManager.d.ts.map +0 -1
  276. package/dist/src/update/UpdateManager.js +0 -260
  277. package/dist/src/update/VersionManager.d.ts +0 -31
  278. package/dist/src/update/VersionManager.d.ts.map +0 -1
  279. package/dist/src/update/VersionManager.js +0 -134
  280. package/dist/src/update/index.d.ts +0 -9
  281. package/dist/src/update/index.d.ts.map +0 -1
  282. package/dist/src/update/index.js +0 -9
  283. package/dist/src/utils/filesystem.d.ts +0 -32
  284. package/dist/src/utils/filesystem.d.ts.map +0 -1
  285. package/dist/src/utils/filesystem.js +0 -73
  286. package/dist/src/utils/git.d.ts +0 -32
  287. package/dist/src/utils/git.d.ts.map +0 -1
  288. package/dist/src/utils/git.js +0 -65
  289. package/dist/src/utils/index.d.ts +0 -7
  290. package/dist/src/utils/index.d.ts.map +0 -1
  291. package/dist/src/utils/index.js +0 -7
  292. package/dist/src/utils/logger.d.ts +0 -45
  293. package/dist/src/utils/logger.d.ts.map +0 -1
  294. package/dist/src/utils/logger.js +0 -91
  295. package/dist/src/utils/version.d.ts +0 -25
  296. package/dist/src/utils/version.d.ts.map +0 -1
  297. package/dist/src/utils/version.js +0 -97
  298. package/dist/test/src/cache/APICache.d.ts +0 -23
  299. package/dist/test/src/cache/APICache.d.ts.map +0 -1
  300. package/dist/test/src/cache/APICache.js +0 -42
  301. package/dist/test/src/cache/index.d.ts +0 -5
  302. package/dist/test/src/cache/index.d.ts.map +0 -1
  303. package/dist/test/src/cache/index.js +0 -5
  304. package/dist/test/src/collection/CollectionBrowser.d.ts +0 -24
  305. package/dist/test/src/collection/CollectionBrowser.d.ts.map +0 -1
  306. package/dist/test/src/collection/CollectionBrowser.js +0 -115
  307. package/dist/test/src/collection/CollectionSearch.d.ts +0 -18
  308. package/dist/test/src/collection/CollectionSearch.d.ts.map +0 -1
  309. package/dist/test/src/collection/CollectionSearch.js +0 -48
  310. package/dist/test/src/collection/GitHubClient.d.ts +0 -22
  311. package/dist/test/src/collection/GitHubClient.d.ts.map +0 -1
  312. package/dist/test/src/collection/GitHubClient.js +0 -114
  313. package/dist/test/src/collection/PersonaDetails.d.ts +0 -22
  314. package/dist/test/src/collection/PersonaDetails.d.ts.map +0 -1
  315. package/dist/test/src/collection/PersonaDetails.js +0 -71
  316. package/dist/test/src/collection/PersonaInstaller.d.ts +0 -26
  317. package/dist/test/src/collection/PersonaInstaller.d.ts.map +0 -1
  318. package/dist/test/src/collection/PersonaInstaller.js +0 -103
  319. package/dist/test/src/collection/PersonaSubmitter.d.ts +0 -19
  320. package/dist/test/src/collection/PersonaSubmitter.d.ts.map +0 -1
  321. package/dist/test/src/collection/PersonaSubmitter.js +0 -57
  322. package/dist/test/src/collection/index.d.ts +0 -10
  323. package/dist/test/src/collection/index.d.ts.map +0 -1
  324. package/dist/test/src/collection/index.js +0 -10
  325. package/dist/test/src/config/constants.d.ts +0 -25
  326. package/dist/test/src/config/constants.d.ts.map +0 -1
  327. package/dist/test/src/config/constants.js +0 -30
  328. package/dist/test/src/config/index.d.ts +0 -6
  329. package/dist/test/src/config/index.d.ts.map +0 -1
  330. package/dist/test/src/config/index.js +0 -6
  331. package/dist/test/src/config/indicator-config.d.ts +0 -107
  332. package/dist/test/src/config/indicator-config.d.ts.map +0 -1
  333. package/dist/test/src/config/indicator-config.js +0 -158
  334. package/dist/test/src/constants/defaultPersonas.d.ts +0 -10
  335. package/dist/test/src/constants/defaultPersonas.d.ts.map +0 -1
  336. package/dist/test/src/constants/defaultPersonas.js +0 -18
  337. package/dist/test/src/constants/limits.d.ts +0 -10
  338. package/dist/test/src/constants/limits.d.ts.map +0 -1
  339. package/dist/test/src/constants/limits.js +0 -13
  340. package/dist/test/src/elements/BaseElement.d.ts +0 -81
  341. package/dist/test/src/elements/BaseElement.d.ts.map +0 -1
  342. package/dist/test/src/elements/BaseElement.js +0 -381
  343. package/dist/test/src/elements/FeedbackProcessor.d.ts +0 -57
  344. package/dist/test/src/elements/FeedbackProcessor.d.ts.map +0 -1
  345. package/dist/test/src/elements/FeedbackProcessor.js +0 -418
  346. package/dist/test/src/elements/agents/Agent.d.ts +0 -145
  347. package/dist/test/src/elements/agents/Agent.d.ts.map +0 -1
  348. package/dist/test/src/elements/agents/Agent.js +0 -848
  349. package/dist/test/src/elements/agents/AgentManager.d.ts +0 -125
  350. package/dist/test/src/elements/agents/AgentManager.d.ts.map +0 -1
  351. package/dist/test/src/elements/agents/AgentManager.js +0 -608
  352. package/dist/test/src/elements/agents/constants.d.ts +0 -42
  353. package/dist/test/src/elements/agents/constants.d.ts.map +0 -1
  354. package/dist/test/src/elements/agents/constants.js +0 -45
  355. package/dist/test/src/elements/agents/goalTemplates.d.ts +0 -44
  356. package/dist/test/src/elements/agents/goalTemplates.d.ts.map +0 -1
  357. package/dist/test/src/elements/agents/goalTemplates.js +0 -297
  358. package/dist/test/src/elements/agents/index.d.ts +0 -8
  359. package/dist/test/src/elements/agents/index.d.ts.map +0 -1
  360. package/dist/test/src/elements/agents/index.js +0 -8
  361. package/dist/test/src/elements/agents/ruleEngineConfig.d.ts +0 -76
  362. package/dist/test/src/elements/agents/ruleEngineConfig.d.ts.map +0 -1
  363. package/dist/test/src/elements/agents/ruleEngineConfig.js +0 -143
  364. package/dist/test/src/elements/agents/types.d.ts +0 -97
  365. package/dist/test/src/elements/agents/types.d.ts.map +0 -1
  366. package/dist/test/src/elements/agents/types.js +0 -5
  367. package/dist/test/src/elements/index.d.ts +0 -6
  368. package/dist/test/src/elements/index.d.ts.map +0 -1
  369. package/dist/test/src/elements/index.js +0 -6
  370. package/dist/test/src/elements/memories/Memory.d.ts +0 -110
  371. package/dist/test/src/elements/memories/Memory.d.ts.map +0 -1
  372. package/dist/test/src/elements/memories/Memory.js +0 -470
  373. package/dist/test/src/elements/memories/MemoryManager.d.ts +0 -86
  374. package/dist/test/src/elements/memories/MemoryManager.d.ts.map +0 -1
  375. package/dist/test/src/elements/memories/MemoryManager.js +0 -435
  376. package/dist/test/src/elements/memories/constants.d.ts +0 -42
  377. package/dist/test/src/elements/memories/constants.d.ts.map +0 -1
  378. package/dist/test/src/elements/memories/constants.js +0 -49
  379. package/dist/test/src/elements/memories/index.d.ts +0 -6
  380. package/dist/test/src/elements/memories/index.d.ts.map +0 -1
  381. package/dist/test/src/elements/memories/index.js +0 -6
  382. package/dist/test/src/elements/skills/Skill.d.ts +0 -109
  383. package/dist/test/src/elements/skills/Skill.d.ts.map +0 -1
  384. package/dist/test/src/elements/skills/Skill.js +0 -381
  385. package/dist/test/src/elements/templates/Template.d.ts +0 -138
  386. package/dist/test/src/elements/templates/Template.d.ts.map +0 -1
  387. package/dist/test/src/elements/templates/Template.js +0 -673
  388. package/dist/test/src/elements/templates/TemplateManager.d.ts +0 -104
  389. package/dist/test/src/elements/templates/TemplateManager.d.ts.map +0 -1
  390. package/dist/test/src/elements/templates/TemplateManager.js +0 -496
  391. package/dist/test/src/elements/templates/index.d.ts +0 -6
  392. package/dist/test/src/elements/templates/index.d.ts.map +0 -1
  393. package/dist/test/src/elements/templates/index.js +0 -6
  394. package/dist/test/src/errors/SecurityError.d.ts +0 -29
  395. package/dist/test/src/errors/SecurityError.d.ts.map +0 -1
  396. package/dist/test/src/errors/SecurityError.js +0 -47
  397. package/dist/test/src/errors/index.d.ts +0 -2
  398. package/dist/test/src/errors/index.d.ts.map +0 -1
  399. package/dist/test/src/errors/index.js +0 -2
  400. package/dist/test/src/index.barrel.d.ts +0 -21
  401. package/dist/test/src/index.barrel.d.ts.map +0 -1
  402. package/dist/test/src/index.barrel.js +0 -31
  403. package/dist/test/src/index.d.ts +0 -223
  404. package/dist/test/src/index.d.ts.map +0 -1
  405. package/dist/test/src/index.js +0 -1594
  406. package/dist/test/src/marketplace/GitHubClient.d.ts +0 -22
  407. package/dist/test/src/marketplace/GitHubClient.d.ts.map +0 -1
  408. package/dist/test/src/marketplace/GitHubClient.js +0 -112
  409. package/dist/test/src/marketplace/MarketplaceBrowser.d.ts +0 -21
  410. package/dist/test/src/marketplace/MarketplaceBrowser.d.ts.map +0 -1
  411. package/dist/test/src/marketplace/MarketplaceBrowser.js +0 -45
  412. package/dist/test/src/marketplace/MarketplaceSearch.d.ts +0 -18
  413. package/dist/test/src/marketplace/MarketplaceSearch.d.ts.map +0 -1
  414. package/dist/test/src/marketplace/MarketplaceSearch.js +0 -36
  415. package/dist/test/src/marketplace/PersonaDetails.d.ts +0 -22
  416. package/dist/test/src/marketplace/PersonaDetails.d.ts.map +0 -1
  417. package/dist/test/src/marketplace/PersonaDetails.js +0 -71
  418. package/dist/test/src/marketplace/PersonaInstaller.d.ts +0 -25
  419. package/dist/test/src/marketplace/PersonaInstaller.d.ts.map +0 -1
  420. package/dist/test/src/marketplace/PersonaInstaller.js +0 -100
  421. package/dist/test/src/marketplace/PersonaSubmitter.d.ts +0 -19
  422. package/dist/test/src/marketplace/PersonaSubmitter.d.ts.map +0 -1
  423. package/dist/test/src/marketplace/PersonaSubmitter.js +0 -57
  424. package/dist/test/src/marketplace/index.d.ts +0 -10
  425. package/dist/test/src/marketplace/index.d.ts.map +0 -1
  426. package/dist/test/src/marketplace/index.js +0 -10
  427. package/dist/test/src/persona/PersonaElement.d.ts +0 -64
  428. package/dist/test/src/persona/PersonaElement.d.ts.map +0 -1
  429. package/dist/test/src/persona/PersonaElement.js +0 -223
  430. package/dist/test/src/persona/PersonaElementManager.d.ts +0 -97
  431. package/dist/test/src/persona/PersonaElementManager.d.ts.map +0 -1
  432. package/dist/test/src/persona/PersonaElementManager.js +0 -342
  433. package/dist/test/src/persona/PersonaLoader.d.ts +0 -34
  434. package/dist/test/src/persona/PersonaLoader.d.ts.map +0 -1
  435. package/dist/test/src/persona/PersonaLoader.js +0 -145
  436. package/dist/test/src/persona/PersonaManager.d.ts +0 -112
  437. package/dist/test/src/persona/PersonaManager.d.ts.map +0 -1
  438. package/dist/test/src/persona/PersonaManager.js +0 -341
  439. package/dist/test/src/persona/PersonaValidator.d.ts +0 -33
  440. package/dist/test/src/persona/PersonaValidator.d.ts.map +0 -1
  441. package/dist/test/src/persona/PersonaValidator.js +0 -157
  442. package/dist/test/src/persona/export-import/PersonaExporter.d.ts +0 -43
  443. package/dist/test/src/persona/export-import/PersonaExporter.d.ts.map +0 -1
  444. package/dist/test/src/persona/export-import/PersonaExporter.js +0 -99
  445. package/dist/test/src/persona/export-import/PersonaImporter.d.ts +0 -65
  446. package/dist/test/src/persona/export-import/PersonaImporter.d.ts.map +0 -1
  447. package/dist/test/src/persona/export-import/PersonaImporter.js +0 -315
  448. package/dist/test/src/persona/export-import/PersonaSharer.d.ts +0 -60
  449. package/dist/test/src/persona/export-import/PersonaSharer.d.ts.map +0 -1
  450. package/dist/test/src/persona/export-import/PersonaSharer.js +0 -502
  451. package/dist/test/src/persona/export-import/index.d.ts +0 -10
  452. package/dist/test/src/persona/export-import/index.d.ts.map +0 -1
  453. package/dist/test/src/persona/export-import/index.js +0 -7
  454. package/dist/test/src/persona/index.d.ts +0 -7
  455. package/dist/test/src/persona/index.d.ts.map +0 -1
  456. package/dist/test/src/persona/index.js +0 -7
  457. package/dist/test/src/portfolio/MigrationManager.d.ts +0 -44
  458. package/dist/test/src/portfolio/MigrationManager.d.ts.map +0 -1
  459. package/dist/test/src/portfolio/MigrationManager.js +0 -163
  460. package/dist/test/src/portfolio/PortfolioManager.d.ts +0 -54
  461. package/dist/test/src/portfolio/PortfolioManager.d.ts.map +0 -1
  462. package/dist/test/src/portfolio/PortfolioManager.js +0 -224
  463. package/dist/test/src/portfolio/types.d.ts +0 -18
  464. package/dist/test/src/portfolio/types.d.ts.map +0 -1
  465. package/dist/test/src/portfolio/types.js +0 -13
  466. package/dist/test/src/security/InputValidator.d.ts +0 -80
  467. package/dist/test/src/security/InputValidator.d.ts.map +0 -1
  468. package/dist/test/src/security/InputValidator.js +0 -436
  469. package/dist/test/src/security/audit/SecurityAuditor.d.ts +0 -44
  470. package/dist/test/src/security/audit/SecurityAuditor.d.ts.map +0 -1
  471. package/dist/test/src/security/audit/SecurityAuditor.js +0 -274
  472. package/dist/test/src/security/audit/config/suppressions.d.ts +0 -34
  473. package/dist/test/src/security/audit/config/suppressions.d.ts.map +0 -1
  474. package/dist/test/src/security/audit/config/suppressions.js +0 -575
  475. package/dist/test/src/security/audit/index.d.ts +0 -14
  476. package/dist/test/src/security/audit/index.d.ts.map +0 -1
  477. package/dist/test/src/security/audit/index.js +0 -15
  478. package/dist/test/src/security/audit/reporters/ConsoleReporter.d.ts +0 -46
  479. package/dist/test/src/security/audit/reporters/ConsoleReporter.d.ts.map +0 -1
  480. package/dist/test/src/security/audit/reporters/ConsoleReporter.js +0 -174
  481. package/dist/test/src/security/audit/reporters/JsonReporter.d.ts +0 -13
  482. package/dist/test/src/security/audit/reporters/JsonReporter.d.ts.map +0 -1
  483. package/dist/test/src/security/audit/reporters/JsonReporter.js +0 -25
  484. package/dist/test/src/security/audit/reporters/MarkdownReporter.d.ts +0 -13
  485. package/dist/test/src/security/audit/reporters/MarkdownReporter.d.ts.map +0 -1
  486. package/dist/test/src/security/audit/reporters/MarkdownReporter.js +0 -79
  487. package/dist/test/src/security/audit/rules/SecurityRules.d.ts +0 -20
  488. package/dist/test/src/security/audit/rules/SecurityRules.d.ts.map +0 -1
  489. package/dist/test/src/security/audit/rules/SecurityRules.js +0 -244
  490. package/dist/test/src/security/audit/scanners/CodeScanner.d.ts +0 -47
  491. package/dist/test/src/security/audit/scanners/CodeScanner.d.ts.map +0 -1
  492. package/dist/test/src/security/audit/scanners/CodeScanner.js +0 -174
  493. package/dist/test/src/security/audit/scanners/ConfigurationScanner.d.ts +0 -13
  494. package/dist/test/src/security/audit/scanners/ConfigurationScanner.d.ts.map +0 -1
  495. package/dist/test/src/security/audit/scanners/ConfigurationScanner.js +0 -22
  496. package/dist/test/src/security/audit/scanners/DependencyScanner.d.ts +0 -13
  497. package/dist/test/src/security/audit/scanners/DependencyScanner.d.ts.map +0 -1
  498. package/dist/test/src/security/audit/scanners/DependencyScanner.js +0 -22
  499. package/dist/test/src/security/audit/types.d.ts +0 -94
  500. package/dist/test/src/security/audit/types.d.ts.map +0 -1
  501. package/dist/test/src/security/audit/types.js +0 -6
  502. package/dist/test/src/security/commandValidator.d.ts +0 -7
  503. package/dist/test/src/security/commandValidator.d.ts.map +0 -1
  504. package/dist/test/src/security/commandValidator.js +0 -78
  505. package/dist/test/src/security/constants.d.ts +0 -24
  506. package/dist/test/src/security/constants.d.ts.map +0 -1
  507. package/dist/test/src/security/constants.js +0 -26
  508. package/dist/test/src/security/contentValidator.d.ts +0 -47
  509. package/dist/test/src/security/contentValidator.d.ts.map +0 -1
  510. package/dist/test/src/security/contentValidator.js +0 -301
  511. package/dist/test/src/security/errors.d.ts +0 -14
  512. package/dist/test/src/security/errors.d.ts.map +0 -1
  513. package/dist/test/src/security/errors.js +0 -28
  514. package/dist/test/src/security/fileLockManager.d.ts +0 -70
  515. package/dist/test/src/security/fileLockManager.d.ts.map +0 -1
  516. package/dist/test/src/security/fileLockManager.js +0 -187
  517. package/dist/test/src/security/index.d.ts +0 -12
  518. package/dist/test/src/security/index.d.ts.map +0 -1
  519. package/dist/test/src/security/index.js +0 -14
  520. package/dist/test/src/security/pathValidator.d.ts +0 -9
  521. package/dist/test/src/security/pathValidator.d.ts.map +0 -1
  522. package/dist/test/src/security/pathValidator.js +0 -98
  523. package/dist/test/src/security/regexValidator.d.ts +0 -59
  524. package/dist/test/src/security/regexValidator.d.ts.map +0 -1
  525. package/dist/test/src/security/regexValidator.js +0 -214
  526. package/dist/test/src/security/secureYamlParser.d.ts +0 -46
  527. package/dist/test/src/security/secureYamlParser.d.ts.map +0 -1
  528. package/dist/test/src/security/secureYamlParser.js +0 -203
  529. package/dist/test/src/security/securityMonitor.d.ts +0 -58
  530. package/dist/test/src/security/securityMonitor.d.ts.map +0 -1
  531. package/dist/test/src/security/securityMonitor.js +0 -108
  532. package/dist/test/src/security/tokenManager.d.ts +0 -85
  533. package/dist/test/src/security/tokenManager.d.ts.map +0 -1
  534. package/dist/test/src/security/tokenManager.js +0 -286
  535. package/dist/test/src/security/validators/unicodeValidator.d.ts +0 -97
  536. package/dist/test/src/security/validators/unicodeValidator.d.ts.map +0 -1
  537. package/dist/test/src/security/validators/unicodeValidator.js +0 -312
  538. package/dist/test/src/security/yamlValidator.d.ts +0 -21
  539. package/dist/test/src/security/yamlValidator.d.ts.map +0 -1
  540. package/dist/test/src/security/yamlValidator.js +0 -164
  541. package/dist/test/src/server/ServerSetup.d.ts +0 -35
  542. package/dist/test/src/server/ServerSetup.d.ts.map +0 -1
  543. package/dist/test/src/server/ServerSetup.js +0 -116
  544. package/dist/test/src/server/index.d.ts +0 -7
  545. package/dist/test/src/server/index.d.ts.map +0 -1
  546. package/dist/test/src/server/index.js +0 -7
  547. package/dist/test/src/server/startup.d.ts +0 -31
  548. package/dist/test/src/server/startup.d.ts.map +0 -1
  549. package/dist/test/src/server/startup.js +0 -67
  550. package/dist/test/src/server/tools/CollectionTools.d.ts +0 -10
  551. package/dist/test/src/server/tools/CollectionTools.d.ts.map +0 -1
  552. package/dist/test/src/server/tools/CollectionTools.js +0 -96
  553. package/dist/test/src/server/tools/ConfigTools.d.ts +0 -10
  554. package/dist/test/src/server/tools/ConfigTools.d.ts.map +0 -1
  555. package/dist/test/src/server/tools/ConfigTools.js +0 -63
  556. package/dist/test/src/server/tools/MarketplaceTools.d.ts +0 -10
  557. package/dist/test/src/server/tools/MarketplaceTools.d.ts.map +0 -1
  558. package/dist/test/src/server/tools/MarketplaceTools.js +0 -92
  559. package/dist/test/src/server/tools/PersonaTools.d.ts +0 -10
  560. package/dist/test/src/server/tools/PersonaTools.d.ts.map +0 -1
  561. package/dist/test/src/server/tools/PersonaTools.js +0 -257
  562. package/dist/test/src/server/tools/ToolRegistry.d.ts +0 -37
  563. package/dist/test/src/server/tools/ToolRegistry.d.ts.map +0 -1
  564. package/dist/test/src/server/tools/ToolRegistry.js +0 -40
  565. package/dist/test/src/server/tools/UpdateTools.d.ts +0 -10
  566. package/dist/test/src/server/tools/UpdateTools.d.ts.map +0 -1
  567. package/dist/test/src/server/tools/UpdateTools.js +0 -64
  568. package/dist/test/src/server/tools/UserTools.d.ts +0 -10
  569. package/dist/test/src/server/tools/UserTools.d.ts.map +0 -1
  570. package/dist/test/src/server/tools/UserTools.js +0 -51
  571. package/dist/test/src/server/tools/index.d.ts +0 -10
  572. package/dist/test/src/server/tools/index.d.ts.map +0 -1
  573. package/dist/test/src/server/tools/index.js +0 -10
  574. package/dist/test/src/server/types.d.ts +0 -34
  575. package/dist/test/src/server/types.d.ts.map +0 -1
  576. package/dist/test/src/server/types.js +0 -5
  577. package/dist/test/src/tools/debug.d.ts +0 -20
  578. package/dist/test/src/tools/debug.d.ts.map +0 -1
  579. package/dist/test/src/tools/debug.js +0 -37
  580. package/dist/test/src/types/cache.d.ts +0 -8
  581. package/dist/test/src/types/cache.d.ts.map +0 -1
  582. package/dist/test/src/types/cache.js +0 -5
  583. package/dist/test/src/types/collection.d.ts +0 -23
  584. package/dist/test/src/types/collection.d.ts.map +0 -1
  585. package/dist/test/src/types/collection.js +0 -5
  586. package/dist/test/src/types/elements/IElement.d.ts +0 -123
  587. package/dist/test/src/types/elements/IElement.d.ts.map +0 -1
  588. package/dist/test/src/types/elements/IElement.js +0 -30
  589. package/dist/test/src/types/elements/IElementManager.d.ts +0 -65
  590. package/dist/test/src/types/elements/IElementManager.d.ts.map +0 -1
  591. package/dist/test/src/types/elements/IElementManager.js +0 -6
  592. package/dist/test/src/types/elements/IRatingManager.d.ts +0 -109
  593. package/dist/test/src/types/elements/IRatingManager.d.ts.map +0 -1
  594. package/dist/test/src/types/elements/IRatingManager.js +0 -6
  595. package/dist/test/src/types/elements/IReferenceResolver.d.ts +0 -52
  596. package/dist/test/src/types/elements/IReferenceResolver.d.ts.map +0 -1
  597. package/dist/test/src/types/elements/IReferenceResolver.js +0 -6
  598. package/dist/test/src/types/elements/RatingBreakdowns.d.ts +0 -49
  599. package/dist/test/src/types/elements/RatingBreakdowns.d.ts.map +0 -1
  600. package/dist/test/src/types/elements/RatingBreakdowns.js +0 -6
  601. package/dist/test/src/types/elements/index.d.ts +0 -9
  602. package/dist/test/src/types/elements/index.d.ts.map +0 -1
  603. package/dist/test/src/types/elements/index.js +0 -11
  604. package/dist/test/src/types/index.d.ts +0 -9
  605. package/dist/test/src/types/index.d.ts.map +0 -1
  606. package/dist/test/src/types/index.js +0 -9
  607. package/dist/test/src/types/marketplace.d.ts +0 -23
  608. package/dist/test/src/types/marketplace.d.ts.map +0 -1
  609. package/dist/test/src/types/marketplace.js +0 -5
  610. package/dist/test/src/types/mcp.d.ts +0 -84
  611. package/dist/test/src/types/mcp.d.ts.map +0 -1
  612. package/dist/test/src/types/mcp.js +0 -80
  613. package/dist/test/src/types/persona.d.ts +0 -30
  614. package/dist/test/src/types/persona.d.ts.map +0 -1
  615. package/dist/test/src/types/persona.js +0 -5
  616. package/dist/test/src/update/BackupManager.d.ts +0 -46
  617. package/dist/test/src/update/BackupManager.d.ts.map +0 -1
  618. package/dist/test/src/update/BackupManager.js +0 -261
  619. package/dist/test/src/update/DependencyChecker.d.ts +0 -41
  620. package/dist/test/src/update/DependencyChecker.d.ts.map +0 -1
  621. package/dist/test/src/update/DependencyChecker.js +0 -132
  622. package/dist/test/src/update/RateLimiter.d.ts +0 -80
  623. package/dist/test/src/update/RateLimiter.d.ts.map +0 -1
  624. package/dist/test/src/update/RateLimiter.js +0 -172
  625. package/dist/test/src/update/SignatureVerifier.d.ts +0 -71
  626. package/dist/test/src/update/SignatureVerifier.d.ts.map +0 -1
  627. package/dist/test/src/update/SignatureVerifier.js +0 -214
  628. package/dist/test/src/update/UpdateChecker.d.ts +0 -127
  629. package/dist/test/src/update/UpdateChecker.d.ts.map +0 -1
  630. package/dist/test/src/update/UpdateChecker.js +0 -469
  631. package/dist/test/src/update/UpdateManager.d.ts +0 -41
  632. package/dist/test/src/update/UpdateManager.d.ts.map +0 -1
  633. package/dist/test/src/update/UpdateManager.js +0 -260
  634. package/dist/test/src/update/VersionManager.d.ts +0 -31
  635. package/dist/test/src/update/VersionManager.d.ts.map +0 -1
  636. package/dist/test/src/update/VersionManager.js +0 -134
  637. package/dist/test/src/update/index.d.ts +0 -9
  638. package/dist/test/src/update/index.d.ts.map +0 -1
  639. package/dist/test/src/update/index.js +0 -9
  640. package/dist/test/src/utils/filesystem.d.ts +0 -29
  641. package/dist/test/src/utils/filesystem.d.ts.map +0 -1
  642. package/dist/test/src/utils/filesystem.js +0 -94
  643. package/dist/test/src/utils/git.d.ts +0 -32
  644. package/dist/test/src/utils/git.d.ts.map +0 -1
  645. package/dist/test/src/utils/git.js +0 -65
  646. package/dist/test/src/utils/index.d.ts +0 -7
  647. package/dist/test/src/utils/index.d.ts.map +0 -1
  648. package/dist/test/src/utils/index.js +0 -7
  649. package/dist/test/src/utils/logger.d.ts +0 -45
  650. package/dist/test/src/utils/logger.d.ts.map +0 -1
  651. package/dist/test/src/utils/logger.js +0 -91
  652. package/dist/test/src/utils/version.d.ts +0 -25
  653. package/dist/test/src/utils/version.d.ts.map +0 -1
  654. package/dist/test/src/utils/version.js +0 -97
  655. package/dist/test/test/__tests__/integration/helpers/file-utils.d.ts +0 -33
  656. package/dist/test/test/__tests__/integration/helpers/file-utils.d.ts.map +0 -1
  657. package/dist/test/test/__tests__/integration/helpers/file-utils.js +0 -83
  658. package/dist/test/test/__tests__/integration/helpers/test-fixtures.d.ts +0 -26
  659. package/dist/test/test/__tests__/integration/helpers/test-fixtures.d.ts.map +0 -1
  660. package/dist/test/test/__tests__/integration/helpers/test-fixtures.js +0 -95
  661. package/dist/test/test/__tests__/integration/helpers/test-server.d.ts +0 -26
  662. package/dist/test/test/__tests__/integration/helpers/test-server.d.ts.map +0 -1
  663. package/dist/test/test/__tests__/integration/helpers/test-server.js +0 -41
  664. package/dist/test/test/__tests__/integration/setup.d.ts +0 -8
  665. package/dist/test/test/__tests__/integration/setup.d.ts.map +0 -1
  666. package/dist/test/test/__tests__/integration/setup.js +0 -31
  667. package/dist/test/test/__tests__/integration/teardown.d.ts +0 -5
  668. package/dist/test/test/__tests__/integration/teardown.d.ts.map +0 -1
  669. package/dist/test/test/__tests__/integration/teardown.js +0 -23
  670. package/dist/test/test/__tests__/security/framework/RapidSecurityTesting.d.ts +0 -34
  671. package/dist/test/test/__tests__/security/framework/RapidSecurityTesting.d.ts.map +0 -1
  672. package/dist/test/test/__tests__/security/framework/RapidSecurityTesting.js +0 -224
  673. package/dist/test/test/__tests__/security/framework/SecurityTestFramework.d.ts +0 -89
  674. package/dist/test/test/__tests__/security/framework/SecurityTestFramework.d.ts.map +0 -1
  675. package/dist/test/test/__tests__/security/framework/SecurityTestFramework.js +0 -543
  676. package/dist/test/test/__tests__/security/index.d.ts +0 -46
  677. package/dist/test/test/__tests__/security/index.d.ts.map +0 -1
  678. package/dist/test/test/__tests__/security/index.js +0 -98
  679. package/dist/test/test/__tests__/security/setup.d.ts +0 -3
  680. package/dist/test/test/__tests__/security/setup.d.ts.map +0 -1
  681. package/dist/test/test/__tests__/security/setup.js +0 -23
  682. package/dist/types/marketplace.d.ts +0 -23
  683. package/dist/types/marketplace.d.ts.map +0 -1
  684. package/dist/types/marketplace.js +0 -5
@@ -1,85 +0,0 @@
1
- /**
2
- * EnsembleManager - Implementation of IElementManager for Ensemble elements
3
- * Handles CRUD operations and lifecycle management for ensembles
4
- *
5
- * SECURITY MEASURES (Following PersonaElementManager patterns):
6
- * 1. CRITICAL: Uses FileLockManager for atomic file operations to prevent race conditions
7
- * 2. HIGH: SecureYamlParser for YAML content validation to prevent injection attacks
8
- * 3. MEDIUM: All user inputs validated and sanitized
9
- * 4. MEDIUM: Audit logging for all security operations
10
- * 5. Path validation to prevent directory traversal
11
- */
12
- import { IElementManager } from '../../types/elements/index.js';
13
- import { ElementValidationResult } from '../../types/elements/IElement.js';
14
- import { Ensemble } from './Ensemble.js';
15
- import { ElementType } from '../../portfolio/types.js';
16
- export declare class EnsembleManager implements IElementManager<Ensemble> {
17
- private baseDir;
18
- constructor(baseDir: string);
19
- /**
20
- * Load an ensemble from file
21
- * SECURITY FIX: Uses FileLockManager.atomicReadFile() to prevent race conditions
22
- */
23
- load(filePath: string): Promise<Ensemble>;
24
- /**
25
- * Save an ensemble to file
26
- * SECURITY FIX: Uses FileLockManager.atomicWriteFile() for atomic writes
27
- */
28
- save(ensemble: Ensemble, filePath: string): Promise<void>;
29
- /**
30
- * List all ensembles in the directory
31
- */
32
- list(): Promise<Ensemble[]>;
33
- /**
34
- * Find an ensemble matching a predicate
35
- */
36
- find(predicate: (ensemble: Ensemble) => boolean): Promise<Ensemble | undefined>;
37
- /**
38
- * Validate an ensemble
39
- */
40
- validate(ensemble: Ensemble): ElementValidationResult;
41
- /**
42
- * Parse ensemble file content
43
- * SECURITY FIX: Uses SecureYamlParser to prevent YAML injection attacks
44
- */
45
- private parseEnsembleFile;
46
- /**
47
- * Convert ensemble data to YAML safely
48
- * SECURITY FIX: Uses yaml.dump with security options
49
- */
50
- private toYamlSafe;
51
- /**
52
- * Import an ensemble from JSON
53
- * SECURITY: Full validation of imported data
54
- */
55
- importElement(jsonData: string, format?: 'json' | 'yaml' | 'markdown'): Promise<Ensemble>;
56
- /**
57
- * Export an ensemble to JSON
58
- */
59
- exportElement(ensemble: Ensemble): Promise<string>;
60
- /**
61
- * Delete an ensemble file
62
- */
63
- delete(filePath: string): Promise<void>;
64
- /**
65
- * Check if an ensemble file exists
66
- */
67
- exists(filePath: string): Promise<boolean>;
68
- /**
69
- * Find multiple ensembles matching a predicate
70
- */
71
- findMany(predicate: (ensemble: Ensemble) => boolean): Promise<Ensemble[]>;
72
- /**
73
- * Validate a file path
74
- */
75
- validatePath(filePath: string): boolean;
76
- /**
77
- * Get the element type this manager handles
78
- */
79
- getElementType(): ElementType;
80
- /**
81
- * Get the file extension for ensemble files
82
- */
83
- getFileExtension(): string;
84
- }
85
- //# sourceMappingURL=EnsembleManager.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"EnsembleManager.d.ts","sourceRoot":"","sources":["../../../src/elements/ensembles/EnsembleManager.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAC;AAChE,OAAO,EAAE,uBAAuB,EAAE,MAAM,kCAAkC,CAAC;AAO3E,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAGzC,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAKvD,qBAAa,eAAgB,YAAW,eAAe,CAAC,QAAQ,CAAC;IACnD,OAAO,CAAC,OAAO;gBAAP,OAAO,EAAE,MAAM;IASnC;;;OAGG;IACG,IAAI,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC;IAwD/C;;;OAGG;IACG,IAAI,CAAC,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IA8C/D;;OAEG;IACG,IAAI,IAAI,OAAO,CAAC,QAAQ,EAAE,CAAC;IAiCjC;;OAEG;IACG,IAAI,CAAC,SAAS,EAAE,CAAC,QAAQ,EAAE,QAAQ,KAAK,OAAO,GAAG,OAAO,CAAC,QAAQ,GAAG,SAAS,CAAC;IAKrF;;OAEG;IACH,QAAQ,CAAC,QAAQ,EAAE,QAAQ,GAAG,uBAAuB;IAIrD;;;OAGG;YACW,iBAAiB;IA4E/B;;;OAGG;IACH,OAAO,CAAC,UAAU;IAelB;;;OAGG;IACG,aAAa,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,UAAU,GAAG,OAAO,CAAC,QAAQ,CAAC;IAsD/F;;OAEG;IACG,aAAa,CAAC,QAAQ,EAAE,QAAQ,GAAG,OAAO,CAAC,MAAM,CAAC;IAWxD;;OAEG;IACG,MAAM,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAoB7C;;OAEG;IACG,MAAM,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAkBhD;;OAEG;IACG,QAAQ,CAAC,SAAS,EAAE,CAAC,QAAQ,EAAE,QAAQ,KAAK,OAAO,GAAG,OAAO,CAAC,QAAQ,EAAE,CAAC;IAK/E;;OAEG;IACH,YAAY,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO;IAIvC;;OAEG;IACH,cAAc,IAAI,WAAW;IAI7B;;OAEG;IACH,gBAAgB,IAAI,MAAM;CAG3B"}
@@ -1,378 +0,0 @@
1
- /**
2
- * EnsembleManager - Implementation of IElementManager for Ensemble elements
3
- * Handles CRUD operations and lifecycle management for ensembles
4
- *
5
- * SECURITY MEASURES (Following PersonaElementManager patterns):
6
- * 1. CRITICAL: Uses FileLockManager for atomic file operations to prevent race conditions
7
- * 2. HIGH: SecureYamlParser for YAML content validation to prevent injection attacks
8
- * 3. MEDIUM: All user inputs validated and sanitized
9
- * 4. MEDIUM: Audit logging for all security operations
10
- * 5. Path validation to prevent directory traversal
11
- */
12
- import { FileLockManager } from '../../security/fileLockManager.js';
13
- import { SecureYamlParser } from '../../security/secureYamlParser.js';
14
- import { SecurityMonitor } from '../../security/securityMonitor.js';
15
- import { validatePath } from '../../security/InputValidator.js';
16
- import { logger } from '../../utils/logger.js';
17
- import { Ensemble } from './Ensemble.js';
18
- import { ElementType } from '../../portfolio/types.js';
19
- import * as path from 'path';
20
- import * as fs from 'fs/promises';
21
- import * as yaml from 'js-yaml';
22
- export class EnsembleManager {
23
- baseDir;
24
- constructor(baseDir) {
25
- this.baseDir = baseDir;
26
- // Validate base directory
27
- const validatedPath = validatePath(baseDir);
28
- if (!validatedPath) {
29
- throw new Error('Invalid base directory path');
30
- }
31
- this.baseDir = validatedPath;
32
- }
33
- /**
34
- * Load an ensemble from file
35
- * SECURITY FIX: Uses FileLockManager.atomicReadFile() to prevent race conditions
36
- */
37
- async load(filePath) {
38
- // SECURITY: Validate file path
39
- const validatedPath = validatePath(filePath);
40
- if (!validatedPath) {
41
- throw new Error('Invalid file path');
42
- }
43
- const fullPath = path.isAbsolute(validatedPath)
44
- ? validatedPath
45
- : path.join(this.baseDir, validatedPath);
46
- try {
47
- // CRITICAL FIX: Use atomic file read to prevent race conditions
48
- // Previously: const content = await fs.readFile(fullPath, 'utf-8');
49
- // Now: Uses FileLockManager with proper encoding object format
50
- const content = await FileLockManager.atomicReadFile(fullPath, { encoding: 'utf-8' });
51
- // Parse ensemble data
52
- const ensembleData = await this.parseEnsembleFile(content, fullPath);
53
- // Create ensemble instance
54
- const ensemble = new Ensemble(ensembleData.metadata);
55
- // Add elements if present
56
- if (ensembleData.elements) {
57
- for (const element of ensembleData.elements) {
58
- ensemble.addElement(element.elementId, element.elementType, element.role, {
59
- priority: element.priority,
60
- activationCondition: element.activationCondition,
61
- dependencies: element.dependencies
62
- });
63
- }
64
- }
65
- // Restore shared context if present
66
- if (ensembleData.sharedContext) {
67
- ensemble.deserialize(JSON.stringify({
68
- ...ensembleData,
69
- elements: Array.from(ensemble.getElements().entries())
70
- }));
71
- }
72
- logger.info(`Loaded ensemble from ${fullPath}`);
73
- return ensemble;
74
- }
75
- catch (error) {
76
- logger.error(`Failed to load ensemble from ${fullPath}:`, error);
77
- throw error;
78
- }
79
- }
80
- /**
81
- * Save an ensemble to file
82
- * SECURITY FIX: Uses FileLockManager.atomicWriteFile() for atomic writes
83
- */
84
- async save(ensemble, filePath) {
85
- // SECURITY: Validate file path
86
- const validatedPath = validatePath(filePath);
87
- if (!validatedPath) {
88
- throw new Error('Invalid file path');
89
- }
90
- const fullPath = path.isAbsolute(validatedPath)
91
- ? validatedPath
92
- : path.join(this.baseDir, validatedPath);
93
- try {
94
- // Ensure directory exists
95
- await fs.mkdir(path.dirname(fullPath), { recursive: true });
96
- // Prepare ensemble data
97
- const ensembleData = {
98
- metadata: ensemble.metadata,
99
- elements: Array.from(ensemble.getElements().values()),
100
- extensions: ensemble.extensions
101
- };
102
- // Convert to YAML with security measures
103
- const yamlContent = this.toYamlSafe(ensembleData);
104
- // CRITICAL FIX: Use atomic file write to prevent race conditions
105
- // Previously: await fs.writeFile(fullPath, yamlContent, 'utf-8');
106
- // Now: Uses FileLockManager for atomic operation
107
- await FileLockManager.atomicWriteFile(fullPath, yamlContent, { encoding: 'utf-8' });
108
- // Log security event
109
- SecurityMonitor.logSecurityEvent({
110
- type: 'ENSEMBLE_SAVED',
111
- severity: 'LOW',
112
- source: 'EnsembleManager.save',
113
- details: `Ensemble saved to ${fullPath}`
114
- });
115
- logger.info(`Saved ensemble to ${fullPath}`);
116
- }
117
- catch (error) {
118
- logger.error(`Failed to save ensemble to ${fullPath}:`, error);
119
- throw error;
120
- }
121
- }
122
- /**
123
- * List all ensembles in the directory
124
- */
125
- async list() {
126
- try {
127
- const files = await fs.readdir(this.baseDir);
128
- const ensembles = [];
129
- // Process files in parallel with limit
130
- const BATCH_SIZE = 10;
131
- for (let i = 0; i < files.length; i += BATCH_SIZE) {
132
- const batch = files.slice(i, i + BATCH_SIZE);
133
- const batchPromises = batch
134
- .filter(file => file.endsWith('.md') || file.endsWith('.yaml') || file.endsWith('.yml'))
135
- .map(file => this.load(file).catch(error => {
136
- logger.warn(`Failed to load ensemble ${file}:`, error);
137
- return null;
138
- }));
139
- const batchResults = await Promise.all(batchPromises);
140
- ensembles.push(...batchResults.filter((e) => e !== null));
141
- }
142
- return ensembles;
143
- }
144
- catch (error) {
145
- // Handle missing directory gracefully with type-safe check
146
- if (error && typeof error === 'object' && 'code' in error && error.code === 'ENOENT') {
147
- logger.debug('Ensembles directory does not exist yet, returning empty array');
148
- return [];
149
- }
150
- logger.error('Failed to list ensembles:', error);
151
- return [];
152
- }
153
- }
154
- /**
155
- * Find an ensemble matching a predicate
156
- */
157
- async find(predicate) {
158
- const ensembles = await this.list();
159
- return ensembles.find(predicate);
160
- }
161
- /**
162
- * Validate an ensemble
163
- */
164
- validate(ensemble) {
165
- return ensemble.validate();
166
- }
167
- /**
168
- * Parse ensemble file content
169
- * SECURITY FIX: Uses SecureYamlParser to prevent YAML injection attacks
170
- */
171
- async parseEnsembleFile(content, filePath) {
172
- try {
173
- // Try to parse as YAML frontmatter (markdown file)
174
- if (filePath.endsWith('.md')) {
175
- const match = content.match(/^---\n([\s\S]*?)\n---\n([\s\S]*)$/);
176
- if (match) {
177
- // HIGH SEVERITY FIX: Use SecureYamlParser to prevent YAML injection
178
- // Previously: Used unsafe YAML parsing without validation
179
- // Now: Uses SecureYamlParser which validates content
180
- const parsed = SecureYamlParser.parse(match[1], {
181
- maxYamlSize: 64 * 1024, // 64KB limit
182
- validateContent: true
183
- });
184
- // Log security event
185
- SecurityMonitor.logSecurityEvent({
186
- type: 'YAML_PARSE_SUCCESS',
187
- severity: 'LOW',
188
- source: 'EnsembleManager.parseEnsembleFile',
189
- details: 'YAML content safely parsed'
190
- });
191
- return {
192
- metadata: parsed.data,
193
- content: match[2].trim()
194
- };
195
- }
196
- }
197
- // SECURITY FIX: For plain YAML files, check if content already has frontmatter
198
- // Previously: Used direct YAML parsing without security validation
199
- // Now: Uses SecureYamlParser for consistent security validation
200
- // Check if content already has frontmatter markers
201
- if (content.trim().startsWith('---')) {
202
- // Content already has frontmatter, parse directly
203
- const parsed = SecureYamlParser.parse(content, {
204
- maxYamlSize: 64 * 1024, // 64KB limit
205
- validateContent: true
206
- });
207
- // Log security event
208
- SecurityMonitor.logSecurityEvent({
209
- type: 'YAML_PARSE_SUCCESS',
210
- severity: 'LOW',
211
- source: 'EnsembleManager.parseEnsembleFile',
212
- details: 'YAML frontmatter content safely parsed'
213
- });
214
- return parsed.data;
215
- }
216
- else {
217
- // Plain YAML without frontmatter - create frontmatter format
218
- const frontmatterFormat = `---\n${content}\n---\n`;
219
- const parsed = SecureYamlParser.parse(frontmatterFormat, {
220
- maxYamlSize: 64 * 1024, // 64KB limit
221
- validateContent: true
222
- });
223
- // Log security event
224
- SecurityMonitor.logSecurityEvent({
225
- type: 'YAML_PARSE_SUCCESS',
226
- severity: 'LOW',
227
- source: 'EnsembleManager.parseEnsembleFile',
228
- details: 'Plain YAML content safely parsed'
229
- });
230
- return parsed.data;
231
- }
232
- }
233
- catch (error) {
234
- logger.error('Failed to parse ensemble file:', error);
235
- throw new Error(`Invalid ensemble file format: ${error instanceof Error ? error.message : 'Unknown error'}`);
236
- }
237
- }
238
- /**
239
- * Convert ensemble data to YAML safely
240
- * SECURITY FIX: Uses yaml.dump with security options
241
- */
242
- toYamlSafe(data) {
243
- // SECURITY FIX: Use yaml.dump with FAILSAFE_SCHEMA and security options
244
- // This prevents arbitrary code execution via YAML
245
- const yamlStr = yaml.dump(data, {
246
- schema: yaml.FAILSAFE_SCHEMA,
247
- noRefs: true,
248
- skipInvalid: true,
249
- quotingType: '"',
250
- forceQuotes: true
251
- });
252
- // Add frontmatter delimiters for markdown files
253
- return `---\n${yamlStr}---\n`;
254
- }
255
- /**
256
- * Import an ensemble from JSON
257
- * SECURITY: Full validation of imported data
258
- */
259
- async importElement(jsonData, format) {
260
- // Validate JSON structure
261
- let data;
262
- try {
263
- data = JSON.parse(jsonData);
264
- }
265
- catch (error) {
266
- throw new Error('Invalid JSON format');
267
- }
268
- // Validate required fields
269
- if (!data.metadata || typeof data.metadata !== 'object') {
270
- throw new Error('Missing or invalid metadata');
271
- }
272
- // Create ensemble with validated metadata
273
- const ensemble = new Ensemble(data.metadata);
274
- // Add elements with validation
275
- if (data.elements && Array.isArray(data.elements)) {
276
- for (const element of data.elements) {
277
- if (!element.elementId || !element.elementType) {
278
- logger.warn('Skipping invalid element during import');
279
- continue;
280
- }
281
- try {
282
- ensemble.addElement(element.elementId, element.elementType, element.role || 'support', {
283
- priority: element.priority,
284
- activationCondition: element.activationCondition,
285
- dependencies: element.dependencies
286
- });
287
- }
288
- catch (error) {
289
- logger.warn(`Failed to add element ${element.elementId} during import:`, error);
290
- }
291
- }
292
- }
293
- // Return without saving - caller can save if needed
294
- SecurityMonitor.logSecurityEvent({
295
- type: 'ENSEMBLE_IMPORTED',
296
- severity: 'MEDIUM',
297
- source: 'EnsembleManager.importElement',
298
- details: `Ensemble imported`
299
- });
300
- return ensemble;
301
- }
302
- /**
303
- * Export an ensemble to JSON
304
- */
305
- async exportElement(ensemble) {
306
- const data = {
307
- metadata: ensemble.metadata,
308
- elements: Array.from(ensemble.getElements().values()),
309
- extensions: ensemble.extensions
310
- };
311
- // SECURITY FIX: Ensure safe JSON serialization
312
- return JSON.stringify(data, null, 2);
313
- }
314
- /**
315
- * Delete an ensemble file
316
- */
317
- async delete(filePath) {
318
- const validatedPath = validatePath(filePath);
319
- if (!validatedPath) {
320
- throw new Error('Invalid file path');
321
- }
322
- const fullPath = path.isAbsolute(validatedPath)
323
- ? validatedPath
324
- : path.join(this.baseDir, validatedPath);
325
- await fs.unlink(fullPath);
326
- SecurityMonitor.logSecurityEvent({
327
- type: 'ENSEMBLE_DELETED',
328
- severity: 'MEDIUM',
329
- source: 'EnsembleManager.delete',
330
- details: `Ensemble deleted: ${fullPath}`
331
- });
332
- }
333
- /**
334
- * Check if an ensemble file exists
335
- */
336
- async exists(filePath) {
337
- const validatedPath = validatePath(filePath);
338
- if (!validatedPath) {
339
- return false;
340
- }
341
- const fullPath = path.isAbsolute(validatedPath)
342
- ? validatedPath
343
- : path.join(this.baseDir, validatedPath);
344
- try {
345
- await fs.access(fullPath);
346
- return true;
347
- }
348
- catch {
349
- return false;
350
- }
351
- }
352
- /**
353
- * Find multiple ensembles matching a predicate
354
- */
355
- async findMany(predicate) {
356
- const ensembles = await this.list();
357
- return ensembles.filter(predicate);
358
- }
359
- /**
360
- * Validate a file path
361
- */
362
- validatePath(filePath) {
363
- return validatePath(filePath) !== null;
364
- }
365
- /**
366
- * Get the element type this manager handles
367
- */
368
- getElementType() {
369
- return ElementType.ENSEMBLE;
370
- }
371
- /**
372
- * Get the file extension for ensemble files
373
- */
374
- getFileExtension() {
375
- return '.yaml';
376
- }
377
- }
378
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRW5zZW1ibGVNYW5hZ2VyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2VsZW1lbnRzL2Vuc2VtYmxlcy9FbnNlbWJsZU1hbmFnZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7R0FVRztBQUlILE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxtQ0FBbUMsQ0FBQztBQUNwRSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxvQ0FBb0MsQ0FBQztBQUN0RSxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFDcEUsT0FBTyxFQUFpQixZQUFZLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUUvRSxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDL0MsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUd6QyxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDdkQsT0FBTyxLQUFLLElBQUksTUFBTSxNQUFNLENBQUM7QUFDN0IsT0FBTyxLQUFLLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDbEMsT0FBTyxLQUFLLElBQUksTUFBTSxTQUFTLENBQUM7QUFFaEMsTUFBTSxPQUFPLGVBQWU7SUFDTjtJQUFwQixZQUFvQixPQUFlO1FBQWYsWUFBTyxHQUFQLE9BQU8sQ0FBUTtRQUNqQywwQkFBMEI7UUFDMUIsTUFBTSxhQUFhLEdBQUcsWUFBWSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQzVDLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztZQUNuQixNQUFNLElBQUksS0FBSyxDQUFDLDZCQUE2QixDQUFDLENBQUM7UUFDakQsQ0FBQztRQUNELElBQUksQ0FBQyxPQUFPLEdBQUcsYUFBYSxDQUFDO0lBQy9CLENBQUM7SUFFRDs7O09BR0c7SUFDSCxLQUFLLENBQUMsSUFBSSxDQUFDLFFBQWdCO1FBQ3pCLCtCQUErQjtRQUMvQixNQUFNLGFB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bnNlbWJsZU1hbmFnZXIgLSBJbXBsZW1lbnRhdGlvbiBvZiBJRWxlbWVudE1hbmFnZXIgZm9yIEVuc2VtYmxlIGVsZW1lbnRzXG4gKiBIYW5kbGVzIENSVUQgb3BlcmF0aW9ucyBhbmQgbGlmZWN5Y2xlIG1hbmFnZW1lbnQgZm9yIGVuc2VtYmxlc1xuICogXG4gKiBTRUNVUklUWSBNRUFTVVJFUyAoRm9sbG93aW5nIFBlcnNvbmFFbGVtZW50TWFuYWdlciBwYXR0ZXJucyk6XG4gKiAxLiBDUklUSUNBTDogVXNlcyBGaWxlTG9ja01hbmFnZXIgZm9yIGF0b21pYyBmaWxlIG9wZXJhdGlvbnMgdG8gcHJldmVudCByYWNlIGNvbmRpdGlvbnNcbiAqIDIuIEhJR0g6IFNlY3VyZVlhbWxQYXJzZXIgZm9yIFlBTUwgY29udGVudCB2YWxpZGF0aW9uIHRvIHByZXZlbnQgaW5qZWN0aW9uIGF0dGFja3NcbiAqIDMuIE1FRElVTTogQWxsIHVzZXIgaW5wdXRzIHZhbGlkYXRlZCBhbmQgc2FuaXRpemVkXG4gKiA0LiBNRURJVU06IEF1ZGl0IGxvZ2dpbmcgZm9yIGFsbCBzZWN1cml0eSBvcGVyYXRpb25zXG4gKiA1LiBQYXRoIHZhbGlkYXRpb24gdG8gcHJldmVudCBkaXJlY3RvcnkgdHJhdmVyc2FsXG4gKi9cblxuaW1wb3J0IHsgSUVsZW1lbnRNYW5hZ2VyIH0gZnJvbSAnLi4vLi4vdHlwZXMvZWxlbWVudHMvaW5kZXguanMnO1xuaW1wb3J0IHsgRWxlbWVudFZhbGlkYXRpb25SZXN1bHQgfSBmcm9tICcuLi8uLi90eXBlcy9lbGVtZW50cy9JRWxlbWVudC5qcyc7XG5pbXBvcnQgeyBGaWxlTG9ja01hbmFnZXIgfSBmcm9tICcuLi8uLi9zZWN1cml0eS9maWxlTG9ja01hbmFnZXIuanMnO1xuaW1wb3J0IHsgU2VjdXJlWWFtbFBhcnNlciB9IGZyb20gJy4uLy4uL3NlY3VyaXR5L3NlY3VyZVlhbWxQYXJzZXIuanMnO1xuaW1wb3J0IHsgU2VjdXJpdHlNb25pdG9yIH0gZnJvbSAnLi4vLi4vc2VjdXJpdHkvc2VjdXJpdHlNb25pdG9yLmpzJztcbmltcG9ydCB7IHNhbml0aXplSW5wdXQsIHZhbGlkYXRlUGF0aCB9IGZyb20gJy4uLy4uL3NlY3VyaXR5L0lucHV0VmFsaWRhdG9yLmpzJztcbmltcG9ydCB7IFVuaWNvZGVWYWxpZGF0b3IgfSBmcm9tICcuLi8uLi9zZWN1cml0eS92YWxpZGF0b3JzL3VuaWNvZGVWYWxpZGF0b3IuanMnO1xuaW1wb3J0IHsgbG9nZ2VyIH0gZnJvbSAnLi4vLi4vdXRpbHMvbG9nZ2VyLmpzJztcbmltcG9ydCB7IEVuc2VtYmxlIH0gZnJvbSAnLi9FbnNlbWJsZS5qcyc7XG5pbXBvcnQgeyBFbnNlbWJsZU1ldGFkYXRhIH0gZnJvbSAnLi90eXBlcy5qcyc7XG5pbXBvcnQgeyBFTlNFTUJMRV9MSU1JVFMgfSBmcm9tICcuL2NvbnN0YW50cy5qcyc7XG5pbXBvcnQgeyBFbGVtZW50VHlwZSB9IGZyb20gJy4uLy4uL3BvcnRmb2xpby90eXBlcy5qcyc7XG5pbXBvcnQgKiBhcyBwYXRoIGZyb20gJ3BhdGgnO1xuaW1wb3J0ICogYXMgZnMgZnJvbSAnZnMvcHJvbWlzZXMnO1xuaW1wb3J0ICogYXMgeWFtbCBmcm9tICdqcy15YW1sJztcblxuZXhwb3J0IGNsYXNzIEVuc2VtYmxlTWFuYWdlciBpbXBsZW1lbnRzIElFbGVtZW50TWFuYWdlcjxFbnNlbWJsZT4ge1xuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGJhc2VEaXI6IHN0cmluZykge1xuICAgIC8vIFZhbGlkYXRlIGJhc2UgZGlyZWN0b3J5XG4gICAgY29uc3QgdmFsaWRhdGVkUGF0aCA9IHZhbGlkYXRlUGF0aChiYXNlRGlyKTtcbiAgICBpZiAoIXZhbGlkYXRlZFBhdGgpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignSW52YWxpZCBiYXNlIGRpcmVjdG9yeSBwYXRoJyk7XG4gICAgfVxuICAgIHRoaXMuYmFzZURpciA9IHZhbGlkYXRlZFBhdGg7XG4gIH1cblxuICAvKipcbiAgICogTG9hZCBhbiBlbnNlbWJsZSBmcm9tIGZpbGVcbiAgICogU0VDVVJJVFkgRklYOiBVc2VzIEZpbGVMb2NrTWFuYWdlci5hdG9taWNSZWFkRmlsZSgpIHRvIHByZXZlbnQgcmFjZSBjb25kaXRpb25zXG4gICAqL1xuICBhc3luYyBsb2FkKGZpbGVQYXRoOiBzdHJpbmcpOiBQcm9taXNlPEVuc2VtYmxlPiB7XG4gICAgLy8gU0VDVVJJVFk6IFZhbGlkYXRlIGZpbGUgcGF0aFxuICAgIGNvbnN0IHZhbGlkYXRlZFBhdGggPSB2YWxpZGF0ZVBhdGgoZmlsZVBhdGgpO1xuICAgIGlmICghdmFsaWRhdGVkUGF0aCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdJbnZhbGlkIGZpbGUgcGF0aCcpO1xuICAgIH1cblxuICAgIGNvbnN0IGZ1bGxQYXRoID0gcGF0aC5pc0Fic29sdXRlKHZhbGlkYXRlZFBhdGgpIFxuICAgICAgPyB2YWxpZGF0ZWRQYXRoIFxuICAgICAgOiBwYXRoLmpvaW4odGhpcy5iYXNlRGlyLCB2YWxpZGF0ZWRQYXRoKTtcblxuICAgIHRyeSB7XG4gICAgICAvLyBDUklUSUNBTCBGSVg6IFVzZSBhdG9taWMgZmlsZSByZWFkIHRvIHByZXZlbnQgcmFjZSBjb25kaXRpb25zXG4gICAgICAvLyBQcmV2aW91c2x5OiBjb25zdCBjb250ZW50ID0gYXdhaXQgZnMucmVhZEZpbGUoZnVsbFBhdGgsICd1dGYtOCcpO1xuICAgICAgLy8gTm93OiBVc2VzIEZpbGVMb2NrTWFuYWdlciB3aXRoIHByb3BlciBlbmNvZGluZyBvYmplY3QgZm9ybWF0XG4gICAgICBjb25zdCBjb250ZW50ID0gYXdhaXQgRmlsZUxvY2tNYW5hZ2VyLmF0b21pY1JlYWRGaWxlKGZ1bGxQYXRoLCB7IGVuY29kaW5nOiAndXRmLTgnIH0pO1xuXG4gICAgICAvLyBQYXJzZSBlbnNlbWJsZSBkYXRhXG4gICAgICBjb25zdCBlbnNlbWJsZURhdGEgPSBhd2FpdCB0aGlzLnBhcnNlRW5zZW1ibGVGaWxlKGNvbnRlbnQsIGZ1bGxQYXRoKTtcbiAgICAgIFxuICAgICAgLy8gQ3JlYXRlIGVuc2VtYmxlIGluc3RhbmNlXG4gICAgICBjb25zdCBlbnNlbWJsZSA9IG5ldyBFbnNlbWJsZShlbnNlbWJsZURhdGEubWV0YWRhdGEpO1xuICAgICAgXG4gICAgICAvLyBBZGQgZWxlbWVudHMgaWYgcHJlc2VudFxuICAgICAgaWYgKGVuc2VtYmxlRGF0YS5lbGVtZW50cykge1xuICAgICAgICBmb3IgKGNvbnN0IGVsZW1lbnQgb2YgZW5zZW1ibGVEYXRhLmVsZW1lbnRzKSB7XG4gICAgICAgICAgZW5zZW1ibGUuYWRkRWxlbWVudChcbiAgICAgICAgICAgIGVsZW1lbnQuZWxlbWVudElkLFxuICAgICAgICAgICAgZWxlbWVudC5lbGVtZW50VHlwZSxcbiAgICAgICAgICAgIGVsZW1lbnQucm9sZSxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgcHJpb3JpdHk6IGVsZW1lbnQucHJpb3JpdHksXG4gICAgICAgICAgICAgIGFjdGl2YXRpb25Db25kaXRpb246IGVsZW1lbnQuYWN0aXZhdGlvbkNvbmRpdGlvbixcbiAgICAgICAgICAgICAgZGVwZW5kZW5jaWVzOiBlbGVtZW50LmRlcGVuZGVuY2llc1xuICAgICAgICAgICAgfVxuICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgLy8gUmVzdG9yZSBzaGFyZWQgY29udGV4dCBpZiBwcmVzZW50XG4gICAgICBpZiAoZW5zZW1ibGVEYXRhLnNoYXJlZENvbnRleHQpIHtcbiAgICAgICAgZW5zZW1ibGUuZGVzZXJpYWxpemUoSlNPTi5zdHJpbmdpZnkoe1xuICAgICAgICAgIC4uLmVuc2VtYmxlRGF0YSxcbiAgICAgICAgICBlbGVtZW50czogQXJyYXkuZnJvbShlbnNlbWJsZS5nZXRFbGVtZW50cygpLmVudHJpZXMoKSlcbiAgICAgICAgfSkpO1xuICAgICAgfVxuXG4gICAgICBsb2dnZXIuaW5mbyhgTG9hZGVkIGVuc2VtYmxlIGZyb20gJHtmdWxsUGF0aH1gKTtcbiAgICAgIHJldHVybiBlbnNlbWJsZTtcblxuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICBsb2dnZXIuZXJyb3IoYEZhaWxlZCB0byBsb2FkIGVuc2VtYmxlIGZyb20gJHtmdWxsUGF0aH06YCwgZXJyb3IpO1xuICAgICAgdGhyb3cgZXJyb3I7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFNhdmUgYW4gZW5zZW1ibGUgdG8gZmlsZVxuICAgKiBTRUNVUklUWSBGSVg6IFVzZXMgRmlsZUxvY2tNYW5hZ2VyLmF0b21pY1dyaXRlRmlsZSgpIGZvciBhdG9taWMgd3JpdGVzXG4gICAqL1xuICBhc3luYyBzYXZlKGVuc2VtYmxlOiBFbnNlbWJsZSwgZmlsZVBhdGg6IHN0cmluZyk6IFByb21pc2U8dm9pZD4ge1xuICAgIC8vIFNFQ1VSSVRZOiBWYWxpZGF0ZSBmaWxlIHBhdGhcbiAgICBjb25zdCB2YWxpZGF0ZWRQYXRoID0gdmFsaWRhdGVQYXRoKGZpbGVQYXRoKTtcbiAgICBpZiAoIXZhbGlkYXRlZFBhdGgpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignSW52YWxpZCBmaWxlIHBhdGgnKTtcbiAgICB9XG5cbiAgICBjb25zdCBmdWxsUGF0aCA9IHBhdGguaXNBYnNvbHV0ZSh2YWxpZGF0ZWRQYXRoKSBcbiAgICAgID8gdmFsaWRhdGVkUGF0aCBcbiAgICAgIDogcGF0aC5qb2luKHRoaXMuYmFzZURpciwgdmFsaWRhdGVkUGF0aCk7XG5cbiAgICB0cnkge1xuICAgICAgLy8gRW5zdXJlIGRpcmVjdG9yeSBleGlzdHNcbiAgICAgIGF3YWl0IGZzLm1rZGlyKHBhdGguZGlybmFtZShmdWxsUGF0aCksIHsgcmVjdXJzaXZlOiB0cnVlIH0pO1xuXG4gICAgICAvLyBQcmVwYXJlIGVuc2VtYmxlIGRhdGFcbiAgICAgIGNvbnN0IGVuc2VtYmxlRGF0YSA9IHtcbiAgICAgICAgbWV0YWRhdGE6IGVuc2VtYmxlLm1ldGFkYXRhLFxuICAgICAgICBlbGVtZW50czogQXJyYXkuZnJvbShlbnNlbWJsZS5nZXRFbGVtZW50cygpLnZhbHVlcygpKSxcbiAgICAgICAgZXh0ZW5zaW9uczogZW5zZW1ibGUuZXh0ZW5zaW9uc1xuICAgICAgfTtcblxuICAgICAgLy8gQ29udmVydCB0byBZQU1MIHdpdGggc2VjdXJpdHkgbWVhc3VyZXNcbiAgICAgIGNvbnN0IHlhbWxDb250ZW50ID0gdGhpcy50b1lhbWxTYWZlKGVuc2VtYmxlRGF0YSk7XG5cbiAgICAgIC8vIENSSVRJQ0FMIEZJWDogVXNlIGF0b21pYyBmaWxlIHdyaXRlIHRvIHByZXZlbnQgcmFjZSBjb25kaXRpb25zXG4gICAgICAvLyBQcmV2aW91c2x5OiBhd2FpdCBmcy53cml0ZUZpbGUoZnVsbFBhdGgsIHlhbWxDb250ZW50LCAndXRmLTgnKTtcbiAgICAgIC8vIE5vdzogVXNlcyBGaWxlTG9ja01hbmFnZXIgZm9yIGF0b21pYyBvcGVyYXRpb25cbiAgICAgIGF3YWl0IEZpbGVMb2NrTWFuYWdlci5hdG9taWNXcml0ZUZpbGUoZnVsbFBhdGgsIHlhbWxDb250ZW50LCB7IGVuY29kaW5nOiAndXRmLTgnIH0pO1xuXG4gICAgICAvLyBMb2cgc2VjdXJpdHkgZXZlbnRcbiAgICAgIFNlY3VyaXR5TW9uaXRvci5sb2dTZWN1cml0eUV2ZW50KHtcbiAgICAgICAgdHlwZTogJ0VOU0VNQkxFX1NBVkVEJyxcbiAgICAgICAgc2V2ZXJpdHk6ICdMT1cnLFxuICAgICAgICBzb3VyY2U6ICdFbnNlbWJsZU1hbmFnZXIuc2F2ZScsXG4gICAgICAgIGRldGFpbHM6IGBFbnNlbWJsZSBzYXZlZCB0byAke2Z1bGxQYXRofWBcbiAgICAgIH0pO1xuXG4gICAgICBsb2dnZXIuaW5mbyhgU2F2ZWQgZW5zZW1ibGUgdG8gJHtmdWxsUGF0aH1gKTtcblxuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICBsb2dnZXIuZXJyb3IoYEZhaWxlZCB0byBzYXZlIGVuc2VtYmxlIHRvICR7ZnVsbFBhdGh9OmAsIGVycm9yKTtcbiAgICAgIHRocm93IGVycm9yO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBMaXN0IGFsbCBlbnNlbWJsZXMgaW4gdGhlIGRpcmVjdG9yeVxuICAgKi9cbiAgYXN5bmMgbGlzdCgpOiBQcm9taXNlPEVuc2VtYmxlW10+IHtcbiAgICB0cnkge1xuICAgICAgY29uc3QgZmlsZXMgPSBhd2FpdCBmcy5yZWFkZGlyKHRoaXMuYmFzZURpcik7XG4gICAgICBjb25zdCBlbnNlbWJsZXM6IEVuc2VtYmxlW10gPSBbXTtcblxuICAgICAgLy8gUHJvY2VzcyBmaWxlcyBpbiBwYXJhbGxlbCB3aXRoIGxpbWl0XG4gICAgICBjb25zdCBCQVRDSF9TSVpFID0gMTA7XG4gICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGZpbGVzLmxlbmd0aDsgaSArPSBCQVRDSF9TSVpFKSB7XG4gICAgICAgIGNvbnN0IGJhdGNoID0gZmlsZXMuc2xpY2UoaSwgaSArIEJBVENIX1NJWkUpO1xuICAgICAgICBjb25zdCBiYXRjaFByb21pc2VzID0gYmF0Y2hcbiAgICAgICAgICAuZmlsdGVyKGZpbGUgPT4gZmlsZS5lbmRzV2l0aCgnLm1kJykgfHwgZmlsZS5lbmRzV2l0aCgnLnlhbWwnKSB8fCBmaWxlLmVuZHNXaXRoKCcueW1sJykpXG4gICAgICAgICAgLm1hcChmaWxlID0+IHRoaXMubG9hZChmaWxlKS5jYXRjaChlcnJvciA9PiB7XG4gICAgICAgICAgICBsb2dnZXIud2FybihgRmFpbGVkIHRvIGxvYWQgZW5zZW1ibGUgJHtmaWxlfTpgLCBlcnJvcik7XG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgICB9KSk7XG5cbiAgICAgICAgY29uc3QgYmF0Y2hSZXN1bHRzID0gYXdhaXQgUHJvbWlzZS5hbGwoYmF0Y2hQcm9taXNlcyk7XG4gICAgICAgIGVuc2VtYmxlcy5wdXNoKC4uLmJhdGNoUmVzdWx0cy5maWx0ZXIoKGUpOiBlIGlzIEVuc2VtYmxlID0+IGUgIT09IG51bGwpKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIGVuc2VtYmxlcztcblxuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAvLyBIYW5kbGUgbWlzc2luZyBkaXJlY3RvcnkgZ3JhY2VmdWxseSB3aXRoIHR5cGUtc2FmZSBjaGVja1xuICAgICAgaWYgKGVycm9yICYmIHR5cGVvZiBlcnJvciA9PT0gJ29iamVjdCcgJiYgJ2NvZGUnIGluIGVycm9yICYmIGVycm9yLmNvZGUgPT09ICdFTk9FTlQnKSB7XG4gICAgICAgIGxvZ2dlci5kZWJ1ZygnRW5zZW1ibGVzIGRpcmVjdG9yeSBkb2VzIG5vdCBleGlzdCB5ZXQsIHJldHVybmluZyBlbXB0eSBhcnJheScpO1xuICAgICAgICByZXR1cm4gW107XG4gICAgICB9XG4gICAgICBsb2dnZXIuZXJyb3IoJ0ZhaWxlZCB0byBsaXN0IGVuc2VtYmxlczonLCBlcnJvcik7XG4gICAgICByZXR1cm4gW107XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEZpbmQgYW4gZW5zZW1ibGUgbWF0Y2hpbmcgYSBwcmVkaWNhdGVcbiAgICovXG4gIGFzeW5jIGZpbmQocHJlZGljYXRlOiAoZW5zZW1ibGU6IEVuc2VtYmxlKSA9PiBib29sZWFuKTogUHJvbWlzZTxFbnNlbWJsZSB8IHVuZGVmaW5lZD4ge1xuICAgIGNvbnN0IGVuc2VtYmxlcyA9IGF3YWl0IHRoaXMubGlzdCgpO1xuICAgIHJldHVybiBlbnNlbWJsZXMuZmluZChwcmVkaWNhdGUpO1xuICB9XG5cbiAgLyoqXG4gICAqIFZhbGlkYXRlIGFuIGVuc2VtYmxlXG4gICAqL1xuICB2YWxpZGF0ZShlbnNlbWJsZTogRW5zZW1ibGUpOiBFbGVtZW50VmFsaWRhdGlvblJlc3VsdCB7XG4gICAgcmV0dXJuIGVuc2VtYmxlLnZhbGlkYXRlKCk7XG4gIH1cblxuICAvKipcbiAgICogUGFyc2UgZW5zZW1ibGUgZmlsZSBjb250ZW50XG4gICAqIFNFQ1VSSVRZIEZJWDogVXNlcyBTZWN1cmVZYW1sUGFyc2VyIHRvIHByZXZlbnQgWUFNTCBpbmplY3Rpb24gYXR0YWNrc1xuICAgKi9cbiAgcHJpdmF0ZSBhc3luYyBwYXJzZUVuc2VtYmxlRmlsZShjb250ZW50OiBzdHJpbmcsIGZpbGVQYXRoOiBzdHJpbmcpOiBQcm9taXNlPGFueT4ge1xuICAgIHRyeSB7XG4gICAgICAvLyBUcnkgdG8gcGFyc2UgYXMgWUFNTCBmcm9udG1hdHRlciAobWFya2Rvd24gZmlsZSlcbiAgICAgIGlmIChmaWxlUGF0aC5lbmRzV2l0aCgnLm1kJykpIHtcbiAgICAgICAgY29uc3QgbWF0Y2ggPSBjb250ZW50Lm1hdGNoKC9eLS0tXFxuKFtcXHNcXFNdKj8pXFxuLS0tXFxuKFtcXHNcXFNdKikkLyk7XG4gICAgICAgIGlmIChtYXRjaCkge1xuICAgICAgICAgIC8vIEhJR0ggU0VWRVJJVFkgRklYOiBVc2UgU2VjdXJlWWFtbFBhcnNlciB0byBwcmV2ZW50IFlBTUwgaW5qZWN0aW9uXG4gICAgICAgICAgLy8gUHJldmlvdXNseTogVXNlZCB1bnNhZmUgWUFNTCBwYXJzaW5nIHdpdGhvdXQgdmFsaWRhdGlvblxuICAgICAgICAgIC8vIE5vdzogVXNlcyBTZWN1cmVZYW1sUGFyc2VyIHdoaWNoIHZhbGlkYXRlcyBjb250ZW50XG4gICAgICAgICAgY29uc3QgcGFyc2VkID0gU2VjdXJlWWFtbFBhcnNlci5wYXJzZShtYXRjaFsxXSwge1xuICAgICAgICAgICAgbWF4WWFtbFNpemU6IDY0ICogMTAyNCwgLy8gNjRLQiBsaW1pdFxuICAgICAgICAgICAgdmFsaWRhdGVDb250ZW50OiB0cnVlXG4gICAgICAgICAgfSk7XG5cbiAgICAgICAgICAvLyBMb2cgc2VjdXJpdHkgZXZlbnRcbiAgICAgICAgICBTZWN1cml0eU1vbml0b3IubG9nU2VjdXJpdHlFdmVudCh7XG4gICAgICAgICAgICB0eXBlOiAnWUFNTF9QQVJTRV9TVUNDRVNTJyxcbiAgICAgICAgICAgIHNldmVyaXR5OiAnTE9XJyxcbiAgICAgICAgICAgIHNvdXJjZTogJ0Vuc2VtYmxlTWFuYWdlci5wYXJzZUVuc2VtYmxlRmlsZScsXG4gICAgICAgICAgICBkZXRhaWxzOiAnWUFNTCBjb250ZW50IHNhZmVseSBwYXJzZWQnXG4gICAgICAgICAgfSk7XG5cbiAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgbWV0YWRhdGE6IHBhcnNlZC5kYXRhIGFzIHVua25vd24gYXMgRW5zZW1ibGVNZXRhZGF0YSxcbiAgICAgICAgICAgIGNvbnRlbnQ6IG1hdGNoWzJdLnRyaW0oKVxuICAgICAgICAgIH07XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgLy8gU0VDVVJJVFkgRklYOiBGb3IgcGxhaW4gWUFNTCBmaWxlcywgY2hlY2sgaWYgY29udGVudCBhbHJlYWR5IGhhcyBmcm9udG1hdHRlclxuICAgICAgLy8gUHJldmlvdXNseTogVXNlZCBkaXJlY3QgWUFNTCBwYXJzaW5nIHdpdGhvdXQgc2VjdXJpdHkgdmFsaWRhdGlvblxuICAgICAgLy8gTm93OiBVc2VzIFNlY3VyZVlhbWxQYXJzZXIgZm9yIGNvbnNpc3RlbnQgc2VjdXJpdHkgdmFsaWRhdGlvblxuICAgICAgXG4gICAgICAvLyBDaGVjayBpZiBjb250ZW50IGFscmVhZHkgaGFzIGZyb250bWF0dGVyIG1hcmtlcnNcbiAgICAgIGlmIChjb250ZW50LnRyaW0oKS5zdGFydHNXaXRoKCctLS0nKSkge1xuICAgICAgICAvLyBDb250ZW50IGFscmVhZHkgaGFzIGZyb250bWF0dGVyLCBwYXJzZSBkaXJlY3RseSAgXG4gICAgICAgIGNvbnN0IHBhcnNlZCA9IFNlY3VyZVlhbWxQYXJzZXIucGFyc2UoY29udGVudCwge1xuICAgICAgICAgIG1heFlhbWxTaXplOiA2NCAqIDEwMjQsIC8vIDY0S0IgbGltaXRcbiAgICAgICAgICB2YWxpZGF0ZUNvbnRlbnQ6IHRydWVcbiAgICAgICAgfSk7XG5cbiAgICAgICAgLy8gTG9nIHNlY3VyaXR5IGV2ZW50XG4gICAgICAgIFNlY3VyaXR5TW9uaXRvci5sb2dTZWN1cml0eUV2ZW50KHtcbiAgICAgICAgICB0eXBlOiAnWUFNTF9QQVJTRV9TVUNDRVNTJyxcbiAgICAgICAgICBzZXZlcml0eTogJ0xPVycsXG4gICAgICAgICAgc291cmNlOiAnRW5zZW1ibGVNYW5hZ2VyLnBhcnNlRW5zZW1ibGVGaWxlJyxcbiAgICAgICAgICBkZXRhaWxzOiAnWUFNTCBmcm9udG1hdHRlciBjb250ZW50IHNhZmVseSBwYXJzZWQnXG4gICAgICAgIH0pO1xuXG4gICAgICAgIHJldHVybiBwYXJzZWQuZGF0YTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIFBsYWluIFlBTUwgd2l0aG91dCBmcm9udG1hdHRlciAtIGNyZWF0ZSBmcm9udG1hdHRlciBmb3JtYXRcbiAgICAgICAgY29uc3QgZnJvbnRtYXR0ZXJGb3JtYXQgPSBgLS0tXFxuJHtjb250ZW50fVxcbi0tLVxcbmA7XG4gICAgICAgIFxuICAgICAgICBjb25zdCBwYXJzZWQgPSBTZWN1cmVZYW1sUGFyc2VyLnBhcnNlKGZyb250bWF0dGVyRm9ybWF0LCB7XG4gICAgICAgICAgbWF4WWFtbFNpemU6IDY0ICogMTAyNCwgLy8gNjRLQiBsaW1pdFxuICAgICAgICAgIHZhbGlkYXRlQ29udGVudDogdHJ1ZVxuICAgICAgICB9KTtcblxuICAgICAgICAvLyBMb2cgc2VjdXJpdHkgZXZlbnRcbiAgICAgICAgU2VjdXJpdHlNb25pdG9yLmxvZ1NlY3VyaXR5RXZlbnQoe1xuICAgICAgICAgIHR5cGU6ICdZQU1MX1BBUlNFX1NVQ0NFU1MnLFxuICAgICAgICAgIHNldmVyaXR5OiAnTE9XJyxcbiAgICAgICAgICBzb3VyY2U6ICdFbnNlbWJsZU1hbmFnZXIucGFyc2VFbnNlbWJsZUZpbGUnLFxuICAgICAgICAgIGRldGFpbHM6ICdQbGFpbiBZQU1MIGNvbnRlbnQgc2FmZWx5IHBhcnNlZCdcbiAgICAgICAgfSk7XG5cbiAgICAgICAgcmV0dXJuIHBhcnNlZC5kYXRhO1xuICAgICAgfVxuXG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIGxvZ2dlci5lcnJvcignRmFpbGVkIHRvIHBhcnNlIGVuc2VtYmxlIGZpbGU6JywgZXJyb3IpO1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBJbnZhbGlkIGVuc2VtYmxlIGZpbGUgZm9ybWF0OiAke2Vycm9yIGluc3RhbmNlb2YgRXJyb3IgPyBlcnJvci5tZXNzYWdlIDogJ1Vua25vd24gZXJyb3InfWApO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBDb252ZXJ0IGVuc2VtYmxlIGRhdGEgdG8gWUFNTCBzYWZlbHlcbiAgICogU0VDVVJJVFkgRklYOiBVc2VzIHlhbWwuZHVtcCB3aXRoIHNlY3VyaXR5IG9wdGlvbnNcbiAgICovXG4gIHByaXZhdGUgdG9ZYW1sU2FmZShkYXRhOiBhbnkpOiBzdHJpbmcge1xuICAgIC8vIFNFQ1VSSVRZIEZJWDogVXNlIHlhbWwuZHVtcCB3aXRoIEZBSUxTQUZFX1NDSEVNQSBhbmQgc2VjdXJpdHkgb3B0aW9uc1xuICAgIC8vIFRoaXMgcHJldmVudHMgYXJiaXRyYXJ5IGNvZGUgZXhlY3V0aW9uIHZpYSBZQU1MXG4gICAgY29uc3QgeWFtbFN0ciA9IHlhbWwuZHVtcChkYXRhLCB7XG4gICAgICBzY2hlbWE6IHlhbWwuRkFJTFNBRkVfU0NIRU1BLFxuICAgICAgbm9SZWZzOiB0cnVlLFxuICAgICAgc2tpcEludmFsaWQ6IHRydWUsXG4gICAgICBxdW90aW5nVHlwZTogJ1wiJyxcbiAgICAgIGZvcmNlUXVvdGVzOiB0cnVlXG4gICAgfSk7XG5cbiAgICAvLyBBZGQgZnJvbnRtYXR0ZXIgZGVsaW1pdGVycyBmb3IgbWFya2Rvd24gZmlsZXNcbiAgICByZXR1cm4gYC0tLVxcbiR7eWFtbFN0cn0tLS1cXG5gO1xuICB9XG5cbiAgLyoqXG4gICAqIEltcG9ydCBhbiBlbnNlbWJsZSBmcm9tIEpTT05cbiAgICogU0VDVVJJVFk6IEZ1bGwgdmFsaWRhdGlvbiBvZiBpbXBvcnRlZCBkYXRhXG4gICAqL1xuICBhc3luYyBpbXBvcnRFbGVtZW50KGpzb25EYXRhOiBzdHJpbmcsIGZvcm1hdD86ICdqc29uJyB8ICd5YW1sJyB8ICdtYXJrZG93bicpOiBQcm9taXNlPEVuc2VtYmxlPiB7XG4gICAgLy8gVmFsaWRhdGUgSlNPTiBzdHJ1Y3R1cmVcbiAgICBsZXQgZGF0YTogYW55O1xuICAgIHRyeSB7XG4gICAgICBkYXRhID0gSlNPTi5wYXJzZShqc29uRGF0YSk7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignSW52YWxpZCBKU09OIGZvcm1hdCcpO1xuICAgIH1cblxuICAgIC8vIFZhbGlkYXRlIHJlcXVpcmVkIGZpZWxkc1xuICAgIGlmICghZGF0YS5tZXRhZGF0YSB8fCB0eXBlb2YgZGF0YS5tZXRhZGF0YSAhPT0gJ29iamVjdCcpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignTWlzc2luZyBvciBpbnZhbGlkIG1ldGFkYXRhJyk7XG4gICAgfVxuXG4gICAgLy8gQ3JlYXRlIGVuc2VtYmxlIHdpdGggdmFsaWRhdGVkIG1ldGFkYXRhXG4gICAgY29uc3QgZW5zZW1ibGUgPSBuZXcgRW5zZW1ibGUoZGF0YS5tZXRhZGF0YSk7XG5cbiAgICAvLyBBZGQgZWxlbWVudHMgd2l0aCB2YWxpZGF0aW9uXG4gICAgaWYgKGRhdGEuZWxlbWVudHMgJiYgQXJyYXkuaXNBcnJheShkYXRhLmVsZW1lbnRzKSkge1xuICAgICAgZm9yIChjb25zdCBlbGVtZW50IG9mIGRhdGEuZWxlbWVudHMpIHtcbiAgICAgICAgaWYgKCFlbGVtZW50LmVsZW1lbnRJZCB8fCAhZWxlbWVudC5lbGVtZW50VHlwZSkge1xuICAgICAgICAgIGxvZ2dlci53YXJuKCdTa2lwcGluZyBpbnZhbGlkIGVsZW1lbnQgZHVyaW5nIGltcG9ydCcpO1xuICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICB9XG5cbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICBlbnNlbWJsZS5hZGRFbGVtZW50KFxuICAgICAgICAgICAgZWxlbWVudC5lbGVtZW50SWQsXG4gICAgICAgICAgICBlbGVtZW50LmVsZW1lbnRUeXBlLFxuICAgICAgICAgICAgZWxlbWVudC5yb2xlIHx8ICdzdXBwb3J0JyxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgcHJpb3JpdHk6IGVsZW1lbnQucHJpb3JpdHksXG4gICAgICAgICAgICAgIGFjdGl2YXRpb25Db25kaXRpb246IGVsZW1lbnQuYWN0aXZhdGlvbkNvbmRpdGlvbixcbiAgICAgICAgICAgICAgZGVwZW5kZW5jaWVzOiBlbGVtZW50LmRlcGVuZGVuY2llc1xuICAgICAgICAgICAgfVxuICAgICAgICAgICk7XG4gICAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgICAgbG9nZ2VyLndhcm4oYEZhaWxlZCB0byBhZGQgZWxlbWVudCAke2VsZW1lbnQuZWxlbWVudElkfSBkdXJpbmcgaW1wb3J0OmAsIGVycm9yKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIC8vIFJldHVybiB3aXRob3V0IHNhdmluZyAtIGNhbGxlciBjYW4gc2F2ZSBpZiBuZWVkZWRcblxuICAgIFNlY3VyaXR5TW9uaXRvci5sb2dTZWN1cml0eUV2ZW50KHtcbiAgICAgIHR5cGU6ICdFTlNFTUJMRV9JTVBPUlRFRCcsXG4gICAgICBzZXZlcml0eTogJ01FRElVTScsXG4gICAgICBzb3VyY2U6ICdFbnNlbWJsZU1hbmFnZXIuaW1wb3J0RWxlbWVudCcsXG4gICAgICBkZXRhaWxzOiBgRW5zZW1ibGUgaW1wb3J0ZWRgXG4gICAgfSk7XG5cbiAgICByZXR1cm4gZW5zZW1ibGU7XG4gIH1cblxuICAvKipcbiAgICogRXhwb3J0IGFuIGVuc2VtYmxlIHRvIEpTT05cbiAgICovXG4gIGFzeW5jIGV4cG9ydEVsZW1lbnQoZW5zZW1ibGU6IEVuc2VtYmxlKTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgICBjb25zdCBkYXRhID0ge1xuICAgICAgbWV0YWRhdGE6IGVuc2VtYmxlLm1ldGFkYXRhLFxuICAgICAgZWxlbWVudHM6IEFycmF5LmZyb20oZW5zZW1ibGUuZ2V0RWxlbWVudHMoKS52YWx1ZXMoKSksXG4gICAgICBleHRlbnNpb25zOiBlbnNlbWJsZS5leHRlbnNpb25zXG4gICAgfTtcblxuICAgIC8vIFNFQ1VSSVRZIEZJWDogRW5zdXJlIHNhZmUgSlNPTiBzZXJpYWxpemF0aW9uXG4gICAgcmV0dXJuIEpTT04uc3RyaW5naWZ5KGRhdGEsIG51bGwsIDIpO1xuICB9XG5cbiAgLyoqXG4gICAqIERlbGV0ZSBhbiBlbnNlbWJsZSBmaWxlXG4gICAqL1xuICBhc3luYyBkZWxldGUoZmlsZVBhdGg6IHN0cmluZyk6IFByb21pc2U8dm9pZD4ge1xuICAgIGNvbnN0IHZhbGlkYXRlZFBhdGggPSB2YWxpZGF0ZVBhdGgoZmlsZVBhdGgpO1xuICAgIGlmICghdmFsaWRhdGVkUGF0aCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdJbnZhbGlkIGZpbGUgcGF0aCcpO1xuICAgIH1cblxuICAgIGNvbnN0IGZ1bGxQYXRoID0gcGF0aC5pc0Fic29sdXRlKHZhbGlkYXRlZFBhdGgpIFxuICAgICAgPyB2YWxpZGF0ZWRQYXRoIFxuICAgICAgOiBwYXRoLmpvaW4odGhpcy5iYXNlRGlyLCB2YWxpZGF0ZWRQYXRoKTtcblxuICAgIGF3YWl0IGZzLnVubGluayhmdWxsUGF0aCk7XG5cbiAgICBTZWN1cml0eU1vbml0b3IubG9nU2VjdXJpdHlFdmVudCh7XG4gICAgICB0eXBlOiAnRU5TRU1CTEVfREVMRVRFRCcsXG4gICAgICBzZXZlcml0eTogJ01FRElVTScsXG4gICAgICBzb3VyY2U6ICdFbnNlbWJsZU1hbmFnZXIuZGVsZXRlJyxcbiAgICAgIGRldGFpbHM6IGBFbnNlbWJsZSBkZWxldGVkOiAke2Z1bGxQYXRofWBcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDaGVjayBpZiBhbiBlbnNlbWJsZSBmaWxlIGV4aXN0c1xuICAgKi9cbiAgYXN5bmMgZXhpc3RzKGZpbGVQYXRoOiBzdHJpbmcpOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgICBjb25zdCB2YWxpZGF0ZWRQYXRoID0gdmFsaWRhdGVQYXRoKGZpbGVQYXRoKTtcbiAgICBpZiAoIXZhbGlkYXRlZFBhdGgpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICBjb25zdCBmdWxsUGF0aCA9IHBhdGguaXNBYnNvbHV0ZSh2YWxpZGF0ZWRQYXRoKSBcbiAgICAgID8gdmFsaWRhdGVkUGF0aCBcbiAgICAgIDogcGF0aC5qb2luKHRoaXMuYmFzZURpciwgdmFsaWRhdGVkUGF0aCk7XG5cbiAgICB0cnkge1xuICAgICAgYXdhaXQgZnMuYWNjZXNzKGZ1bGxQYXRoKTtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH0gY2F0Y2gge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBGaW5kIG11bHRpcGxlIGVuc2VtYmxlcyBtYXRjaGluZyBhIHByZWRpY2F0ZVxuICAgKi9cbiAgYXN5bmMgZmluZE1hbnkocHJlZGljYXRlOiAoZW5zZW1ibGU6IEVuc2VtYmxlKSA9PiBib29sZWFuKTogUHJvbWlzZTxFbnNlbWJsZVtdPiB7XG4gICAgY29uc3QgZW5zZW1ibGVzID0gYXdhaXQgdGhpcy5saXN0KCk7XG4gICAgcmV0dXJuIGVuc2VtYmxlcy5maWx0ZXIocHJlZGljYXRlKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBWYWxpZGF0ZSBhIGZpbGUgcGF0aFxuICAgKi9cbiAgdmFsaWRhdGVQYXRoKGZpbGVQYXRoOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdmFsaWRhdGVQYXRoKGZpbGVQYXRoKSAhPT0gbnVsbDtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgdGhlIGVsZW1lbnQgdHlwZSB0aGlzIG1hbmFnZXIgaGFuZGxlc1xuICAgKi9cbiAgZ2V0RWxlbWVudFR5cGUoKTogRWxlbWVudFR5cGUge1xuICAgIHJldHVybiBFbGVtZW50VHlwZS5FTlNFTUJMRTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgdGhlIGZpbGUgZXh0ZW5zaW9uIGZvciBlbnNlbWJsZSBmaWxlc1xuICAgKi9cbiAgZ2V0RmlsZUV4dGVuc2lvbigpOiBzdHJpbmcge1xuICAgIHJldHVybiAnLnlhbWwnO1xuICB9XG59Il19
@@ -1,73 +0,0 @@
1
- /**
2
- * Constants for Ensemble elements
3
- *
4
- * Defines limits, defaults, and security constants following patterns from other elements
5
- */
6
- /**
7
- * Resource limits to prevent DoS attacks
8
- */
9
- export declare const ENSEMBLE_LIMITS: {
10
- readonly MAX_ELEMENTS: 50;
11
- readonly MAX_NESTING_DEPTH: 5;
12
- readonly MAX_ACTIVATION_TIME: 30000;
13
- readonly MAX_CONTEXT_SIZE: 1000;
14
- readonly MAX_CONTEXT_VALUE_SIZE: 10000;
15
- readonly MAX_DEPENDENCIES: 10;
16
- readonly MAX_CONDITION_LENGTH: 200;
17
- readonly MIN_ACTIVATION_INTERVAL: 100;
18
- };
19
- /**
20
- * Default values for ensemble configuration
21
- */
22
- export declare const ENSEMBLE_DEFAULTS: {
23
- readonly ACTIVATION_STRATEGY: "sequential";
24
- readonly CONFLICT_RESOLUTION: "last-write";
25
- readonly ELEMENT_ROLE: "support";
26
- readonly PRIORITY: 50;
27
- readonly ALLOW_NESTED: true;
28
- readonly ACTIVATION_TIMEOUT: 5000;
29
- };
30
- /**
31
- * Supported activation strategies
32
- */
33
- export declare const ACTIVATION_STRATEGIES: readonly ["all", "sequential", "lazy", "conditional", "priority"];
34
- /**
35
- * Supported conflict resolution strategies
36
- */
37
- export declare const CONFLICT_STRATEGIES: readonly ["last-write", "first-write", "priority", "merge", "error"];
38
- /**
39
- * Element roles
40
- */
41
- export declare const ELEMENT_ROLES: readonly ["primary", "support", "override", "monitor"];
42
- /**
43
- * Security event types for ensemble operations
44
- */
45
- export declare const ENSEMBLE_SECURITY_EVENTS: {
46
- readonly CIRCULAR_DEPENDENCY: "ENSEMBLE_CIRCULAR_DEPENDENCY";
47
- readonly RESOURCE_LIMIT_EXCEEDED: "ENSEMBLE_RESOURCE_LIMIT_EXCEEDED";
48
- readonly ACTIVATION_TIMEOUT: "ENSEMBLE_ACTIVATION_TIMEOUT";
49
- readonly SUSPICIOUS_CONDITION: "ENSEMBLE_SUSPICIOUS_CONDITION";
50
- readonly NESTED_DEPTH_EXCEEDED: "ENSEMBLE_NESTED_DEPTH_EXCEEDED";
51
- readonly CONTEXT_SIZE_EXCEEDED: "ENSEMBLE_CONTEXT_SIZE_EXCEEDED";
52
- };
53
- /**
54
- * Error messages for validation
55
- */
56
- export declare const ENSEMBLE_ERRORS: {
57
- readonly TOO_MANY_ELEMENTS: "Ensemble cannot contain more than 50 elements";
58
- readonly NESTING_TOO_DEEP: "Ensemble nesting depth cannot exceed 5";
59
- readonly CIRCULAR_DEPENDENCY: "Circular dependency detected in ensemble";
60
- readonly INVALID_STRATEGY: "Invalid activation strategy";
61
- readonly INVALID_CONFLICT_RESOLUTION: "Invalid conflict resolution strategy";
62
- readonly ELEMENT_NOT_FOUND: "Element not found in ensemble";
63
- readonly ACTIVATION_TIMEOUT: "Ensemble activation timed out";
64
- readonly CONTEXT_OVERFLOW: "Shared context size exceeded limits";
65
- };
66
- /**
67
- * Regex patterns for validation
68
- */
69
- export declare const ENSEMBLE_PATTERNS: {
70
- readonly CONDITION_PATTERN: RegExp;
71
- readonly ELEMENT_ID_PATTERN: RegExp;
72
- };
73
- //# sourceMappingURL=constants.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../../src/elements/ensembles/constants.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH;;GAEG;AACH,eAAO,MAAM,eAAe;;;;;;;;;CASlB,CAAC;AAEX;;GAEG;AACH,eAAO,MAAM,iBAAiB;;;;;;;CAOpB,CAAC;AAEX;;GAEG;AACH,eAAO,MAAM,qBAAqB,mEAMxB,CAAC;AAEX;;GAEG;AACH,eAAO,MAAM,mBAAmB,sEAMtB,CAAC;AAEX;;GAEG;AACH,eAAO,MAAM,aAAa,wDAKhB,CAAC;AAEX;;GAEG;AACH,eAAO,MAAM,wBAAwB;;;;;;;CAO3B,CAAC;AAEX;;GAEG;AACH,eAAO,MAAM,eAAe;;;;;;;;;CASlB,CAAC;AAEX;;GAEG;AACH,eAAO,MAAM,iBAAiB;;;CAKpB,CAAC"}