@dollhousemcp/mcp-server 1.3.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 (1004) hide show
  1. package/CHANGELOG.md +132 -0
  2. package/LICENSE +51 -0
  3. package/README.md +1124 -0
  4. package/data/agents/code-reviewer.md +296 -0
  5. package/data/agents/research-assistant.md +259 -0
  6. package/data/agents/task-manager.md +206 -0
  7. package/data/ensembles/business-advisor.md +354 -0
  8. package/data/ensembles/creative-studio.md +288 -0
  9. package/data/ensembles/development-team.md +292 -0
  10. package/data/ensembles/security-analysis-team.md +438 -0
  11. package/data/memories/conversation-history.md +146 -0
  12. package/data/memories/learning-progress.md +376 -0
  13. package/data/memories/project-context.md +268 -0
  14. package/data/personas/business-consultant.md +50 -0
  15. package/data/personas/creative-writer.md +44 -0
  16. package/data/personas/debug-detective.md +59 -0
  17. package/data/personas/eli5-explainer.md +49 -0
  18. package/data/personas/security-analyst.md +161 -0
  19. package/data/personas/technical-analyst.md +43 -0
  20. package/data/skills/code-review.md +112 -0
  21. package/data/skills/creative-writing.md +174 -0
  22. package/data/skills/data-analysis.md +160 -0
  23. package/data/skills/penetration-testing.md +374 -0
  24. package/data/skills/research.md +181 -0
  25. package/data/skills/threat-modeling.md +469 -0
  26. package/data/skills/translation.md +148 -0
  27. package/data/templates/code-documentation.md +409 -0
  28. package/data/templates/email-professional.md +158 -0
  29. package/data/templates/meeting-notes.md +141 -0
  30. package/data/templates/penetration-test-report.md +608 -0
  31. package/data/templates/project-brief.md +234 -0
  32. package/data/templates/report-executive.md +258 -0
  33. package/data/templates/security-vulnerability-report.md +457 -0
  34. package/data/templates/threat-assessment-report.md +774 -0
  35. package/dist/cache/APICache.d.ts +23 -0
  36. package/dist/cache/APICache.d.ts.map +1 -0
  37. package/dist/cache/APICache.js +42 -0
  38. package/dist/cache/index.d.ts +5 -0
  39. package/dist/cache/index.d.ts.map +1 -0
  40. package/dist/cache/index.js +5 -0
  41. package/dist/collection/CollectionBrowser.d.ts +24 -0
  42. package/dist/collection/CollectionBrowser.d.ts.map +1 -0
  43. package/dist/collection/CollectionBrowser.js +120 -0
  44. package/dist/collection/CollectionSearch.d.ts +18 -0
  45. package/dist/collection/CollectionSearch.d.ts.map +1 -0
  46. package/dist/collection/CollectionSearch.js +48 -0
  47. package/dist/collection/ElementInstaller.d.ts +33 -0
  48. package/dist/collection/ElementInstaller.d.ts.map +1 -0
  49. package/dist/collection/ElementInstaller.js +142 -0
  50. package/dist/collection/GitHubClient.d.ts +22 -0
  51. package/dist/collection/GitHubClient.d.ts.map +1 -0
  52. package/dist/collection/GitHubClient.js +114 -0
  53. package/dist/collection/MarketplaceBrowser.d.ts +24 -0
  54. package/dist/collection/MarketplaceBrowser.d.ts.map +1 -0
  55. package/dist/collection/MarketplaceBrowser.js +115 -0
  56. package/dist/collection/MarketplaceSearch.d.ts +18 -0
  57. package/dist/collection/MarketplaceSearch.d.ts.map +1 -0
  58. package/dist/collection/MarketplaceSearch.js +48 -0
  59. package/dist/collection/PersonaDetails.d.ts +22 -0
  60. package/dist/collection/PersonaDetails.d.ts.map +1 -0
  61. package/dist/collection/PersonaDetails.js +71 -0
  62. package/dist/collection/PersonaInstaller.d.ts +26 -0
  63. package/dist/collection/PersonaInstaller.d.ts.map +1 -0
  64. package/dist/collection/PersonaInstaller.js +103 -0
  65. package/dist/collection/PersonaSubmitter.d.ts +19 -0
  66. package/dist/collection/PersonaSubmitter.d.ts.map +1 -0
  67. package/dist/collection/PersonaSubmitter.js +57 -0
  68. package/dist/collection/index.d.ts +10 -0
  69. package/dist/collection/index.d.ts.map +1 -0
  70. package/dist/collection/index.js +10 -0
  71. package/dist/config/constants.d.ts +25 -0
  72. package/dist/config/constants.d.ts.map +1 -0
  73. package/dist/config/constants.js +34 -0
  74. package/dist/config/index.d.ts +6 -0
  75. package/dist/config/index.d.ts.map +1 -0
  76. package/dist/config/index.js +6 -0
  77. package/dist/config/indicator-config.d.ts +107 -0
  78. package/dist/config/indicator-config.d.ts.map +1 -0
  79. package/dist/config/indicator-config.js +158 -0
  80. package/dist/constants/defaultPersonas.d.ts +10 -0
  81. package/dist/constants/defaultPersonas.d.ts.map +1 -0
  82. package/dist/constants/defaultPersonas.js +18 -0
  83. package/dist/constants/limits.d.ts +10 -0
  84. package/dist/constants/limits.d.ts.map +1 -0
  85. package/dist/constants/limits.js +13 -0
  86. package/dist/elements/BaseElement.d.ts +81 -0
  87. package/dist/elements/BaseElement.d.ts.map +1 -0
  88. package/dist/elements/BaseElement.js +381 -0
  89. package/dist/elements/FeedbackProcessor.d.ts +57 -0
  90. package/dist/elements/FeedbackProcessor.d.ts.map +1 -0
  91. package/dist/elements/FeedbackProcessor.js +418 -0
  92. package/dist/elements/agents/Agent.d.ts +145 -0
  93. package/dist/elements/agents/Agent.d.ts.map +1 -0
  94. package/dist/elements/agents/Agent.js +848 -0
  95. package/dist/elements/agents/AgentManager.d.ts +125 -0
  96. package/dist/elements/agents/AgentManager.d.ts.map +1 -0
  97. package/dist/elements/agents/AgentManager.js +615 -0
  98. package/dist/elements/agents/constants.d.ts +42 -0
  99. package/dist/elements/agents/constants.d.ts.map +1 -0
  100. package/dist/elements/agents/constants.js +45 -0
  101. package/dist/elements/agents/goalTemplates.d.ts +44 -0
  102. package/dist/elements/agents/goalTemplates.d.ts.map +1 -0
  103. package/dist/elements/agents/goalTemplates.js +297 -0
  104. package/dist/elements/agents/index.d.ts +8 -0
  105. package/dist/elements/agents/index.d.ts.map +1 -0
  106. package/dist/elements/agents/index.js +8 -0
  107. package/dist/elements/agents/ruleEngineConfig.d.ts +76 -0
  108. package/dist/elements/agents/ruleEngineConfig.d.ts.map +1 -0
  109. package/dist/elements/agents/ruleEngineConfig.js +143 -0
  110. package/dist/elements/agents/types.d.ts +97 -0
  111. package/dist/elements/agents/types.d.ts.map +1 -0
  112. package/dist/elements/agents/types.js +5 -0
  113. package/dist/elements/ensembles/Ensemble.d.ts +144 -0
  114. package/dist/elements/ensembles/Ensemble.d.ts.map +1 -0
  115. package/dist/elements/ensembles/Ensemble.js +860 -0
  116. package/dist/elements/ensembles/EnsembleManager.d.ts +85 -0
  117. package/dist/elements/ensembles/EnsembleManager.d.ts.map +1 -0
  118. package/dist/elements/ensembles/EnsembleManager.js +378 -0
  119. package/dist/elements/ensembles/constants.d.ts +73 -0
  120. package/dist/elements/ensembles/constants.d.ts.map +1 -0
  121. package/dist/elements/ensembles/constants.js +92 -0
  122. package/dist/elements/ensembles/index.d.ts +8 -0
  123. package/dist/elements/ensembles/index.d.ts.map +1 -0
  124. package/dist/elements/ensembles/index.js +8 -0
  125. package/dist/elements/ensembles/types.d.ts +92 -0
  126. package/dist/elements/ensembles/types.d.ts.map +1 -0
  127. package/dist/elements/ensembles/types.js +8 -0
  128. package/dist/elements/index.d.ts +11 -0
  129. package/dist/elements/index.d.ts.map +1 -0
  130. package/dist/elements/index.js +12 -0
  131. package/dist/elements/memories/Memory.d.ts +110 -0
  132. package/dist/elements/memories/Memory.d.ts.map +1 -0
  133. package/dist/elements/memories/Memory.js +470 -0
  134. package/dist/elements/memories/MemoryManager.d.ts +86 -0
  135. package/dist/elements/memories/MemoryManager.d.ts.map +1 -0
  136. package/dist/elements/memories/MemoryManager.js +435 -0
  137. package/dist/elements/memories/constants.d.ts +42 -0
  138. package/dist/elements/memories/constants.d.ts.map +1 -0
  139. package/dist/elements/memories/constants.js +49 -0
  140. package/dist/elements/memories/index.d.ts +6 -0
  141. package/dist/elements/memories/index.d.ts.map +1 -0
  142. package/dist/elements/memories/index.js +6 -0
  143. package/dist/elements/skills/Skill.d.ts +109 -0
  144. package/dist/elements/skills/Skill.d.ts.map +1 -0
  145. package/dist/elements/skills/Skill.js +381 -0
  146. package/dist/elements/skills/index.d.ts +5 -0
  147. package/dist/elements/skills/index.d.ts.map +1 -0
  148. package/dist/elements/skills/index.js +5 -0
  149. package/dist/elements/templates/Template.d.ts +138 -0
  150. package/dist/elements/templates/Template.d.ts.map +1 -0
  151. package/dist/elements/templates/Template.js +673 -0
  152. package/dist/elements/templates/TemplateManager.d.ts +104 -0
  153. package/dist/elements/templates/TemplateManager.d.ts.map +1 -0
  154. package/dist/elements/templates/TemplateManager.js +501 -0
  155. package/dist/elements/templates/index.d.ts +6 -0
  156. package/dist/elements/templates/index.d.ts.map +1 -0
  157. package/dist/elements/templates/index.js +6 -0
  158. package/dist/errors/SecurityError.d.ts +29 -0
  159. package/dist/errors/SecurityError.d.ts.map +1 -0
  160. package/dist/errors/SecurityError.js +47 -0
  161. package/dist/errors/index.d.ts +2 -0
  162. package/dist/errors/index.d.ts.map +1 -0
  163. package/dist/errors/index.js +2 -0
  164. package/dist/index.barrel.d.ts +21 -0
  165. package/dist/index.barrel.d.ts.map +1 -0
  166. package/dist/index.barrel.js +31 -0
  167. package/dist/index.d.ts +223 -0
  168. package/dist/index.d.ts.map +1 -0
  169. package/dist/index.js +1606 -0
  170. package/dist/marketplace/GitHubClient.d.ts +22 -0
  171. package/dist/marketplace/GitHubClient.d.ts.map +1 -0
  172. package/dist/marketplace/GitHubClient.js +112 -0
  173. package/dist/marketplace/MarketplaceBrowser.d.ts +24 -0
  174. package/dist/marketplace/MarketplaceBrowser.d.ts.map +1 -0
  175. package/dist/marketplace/MarketplaceBrowser.js +115 -0
  176. package/dist/marketplace/MarketplaceSearch.d.ts +18 -0
  177. package/dist/marketplace/MarketplaceSearch.d.ts.map +1 -0
  178. package/dist/marketplace/MarketplaceSearch.js +48 -0
  179. package/dist/marketplace/PersonaDetails.d.ts +22 -0
  180. package/dist/marketplace/PersonaDetails.d.ts.map +1 -0
  181. package/dist/marketplace/PersonaDetails.js +71 -0
  182. package/dist/marketplace/PersonaInstaller.d.ts +25 -0
  183. package/dist/marketplace/PersonaInstaller.d.ts.map +1 -0
  184. package/dist/marketplace/PersonaInstaller.js +100 -0
  185. package/dist/marketplace/PersonaSubmitter.d.ts +19 -0
  186. package/dist/marketplace/PersonaSubmitter.d.ts.map +1 -0
  187. package/dist/marketplace/PersonaSubmitter.js +57 -0
  188. package/dist/marketplace/index.d.ts +10 -0
  189. package/dist/marketplace/index.d.ts.map +1 -0
  190. package/dist/marketplace/index.js +10 -0
  191. package/dist/persona/PersonaElement.d.ts +64 -0
  192. package/dist/persona/PersonaElement.d.ts.map +1 -0
  193. package/dist/persona/PersonaElement.js +223 -0
  194. package/dist/persona/PersonaElementManager.d.ts +97 -0
  195. package/dist/persona/PersonaElementManager.d.ts.map +1 -0
  196. package/dist/persona/PersonaElementManager.js +348 -0
  197. package/dist/persona/PersonaLoader.d.ts +34 -0
  198. package/dist/persona/PersonaLoader.d.ts.map +1 -0
  199. package/dist/persona/PersonaLoader.js +145 -0
  200. package/dist/persona/PersonaManager.d.ts +112 -0
  201. package/dist/persona/PersonaManager.d.ts.map +1 -0
  202. package/dist/persona/PersonaManager.js +341 -0
  203. package/dist/persona/PersonaValidator.d.ts +39 -0
  204. package/dist/persona/PersonaValidator.d.ts.map +1 -0
  205. package/dist/persona/PersonaValidator.js +161 -0
  206. package/dist/persona/export-import/PersonaExporter.d.ts +43 -0
  207. package/dist/persona/export-import/PersonaExporter.d.ts.map +1 -0
  208. package/dist/persona/export-import/PersonaExporter.js +99 -0
  209. package/dist/persona/export-import/PersonaImporter.d.ts +65 -0
  210. package/dist/persona/export-import/PersonaImporter.d.ts.map +1 -0
  211. package/dist/persona/export-import/PersonaImporter.js +315 -0
  212. package/dist/persona/export-import/PersonaSharer.d.ts +60 -0
  213. package/dist/persona/export-import/PersonaSharer.d.ts.map +1 -0
  214. package/dist/persona/export-import/PersonaSharer.js +502 -0
  215. package/dist/persona/export-import/index.d.ts +10 -0
  216. package/dist/persona/export-import/index.d.ts.map +1 -0
  217. package/dist/persona/export-import/index.js +7 -0
  218. package/dist/persona/index.d.ts +7 -0
  219. package/dist/persona/index.d.ts.map +1 -0
  220. package/dist/persona/index.js +7 -0
  221. package/dist/portfolio/MigrationManager.d.ts +44 -0
  222. package/dist/portfolio/MigrationManager.d.ts.map +1 -0
  223. package/dist/portfolio/MigrationManager.js +163 -0
  224. package/dist/portfolio/PortfolioManager.d.ts +54 -0
  225. package/dist/portfolio/PortfolioManager.d.ts.map +1 -0
  226. package/dist/portfolio/PortfolioManager.js +224 -0
  227. package/dist/portfolio/types.d.ts +18 -0
  228. package/dist/portfolio/types.d.ts.map +1 -0
  229. package/dist/portfolio/types.js +13 -0
  230. package/dist/security/InputValidator.d.ts +80 -0
  231. package/dist/security/InputValidator.d.ts.map +1 -0
  232. package/dist/security/InputValidator.js +448 -0
  233. package/dist/security/audit/SecurityAuditor.d.ts +44 -0
  234. package/dist/security/audit/SecurityAuditor.d.ts.map +1 -0
  235. package/dist/security/audit/SecurityAuditor.js +274 -0
  236. package/dist/security/audit/config/suppressions.d.ts +34 -0
  237. package/dist/security/audit/config/suppressions.d.ts.map +1 -0
  238. package/dist/security/audit/config/suppressions.js +575 -0
  239. package/dist/security/audit/index.d.ts +14 -0
  240. package/dist/security/audit/index.d.ts.map +1 -0
  241. package/dist/security/audit/index.js +15 -0
  242. package/dist/security/audit/reporters/ConsoleReporter.d.ts +46 -0
  243. package/dist/security/audit/reporters/ConsoleReporter.d.ts.map +1 -0
  244. package/dist/security/audit/reporters/ConsoleReporter.js +174 -0
  245. package/dist/security/audit/reporters/JsonReporter.d.ts +13 -0
  246. package/dist/security/audit/reporters/JsonReporter.d.ts.map +1 -0
  247. package/dist/security/audit/reporters/JsonReporter.js +25 -0
  248. package/dist/security/audit/reporters/MarkdownReporter.d.ts +13 -0
  249. package/dist/security/audit/reporters/MarkdownReporter.d.ts.map +1 -0
  250. package/dist/security/audit/reporters/MarkdownReporter.js +79 -0
  251. package/dist/security/audit/rules/SecurityRules.d.ts +20 -0
  252. package/dist/security/audit/rules/SecurityRules.d.ts.map +1 -0
  253. package/dist/security/audit/rules/SecurityRules.js +244 -0
  254. package/dist/security/audit/scanners/CodeScanner.d.ts +47 -0
  255. package/dist/security/audit/scanners/CodeScanner.d.ts.map +1 -0
  256. package/dist/security/audit/scanners/CodeScanner.js +174 -0
  257. package/dist/security/audit/scanners/ConfigurationScanner.d.ts +13 -0
  258. package/dist/security/audit/scanners/ConfigurationScanner.d.ts.map +1 -0
  259. package/dist/security/audit/scanners/ConfigurationScanner.js +22 -0
  260. package/dist/security/audit/scanners/DependencyScanner.d.ts +13 -0
  261. package/dist/security/audit/scanners/DependencyScanner.d.ts.map +1 -0
  262. package/dist/security/audit/scanners/DependencyScanner.js +22 -0
  263. package/dist/security/audit/types.d.ts +94 -0
  264. package/dist/security/audit/types.d.ts.map +1 -0
  265. package/dist/security/audit/types.js +6 -0
  266. package/dist/security/commandValidator.d.ts +7 -0
  267. package/dist/security/commandValidator.d.ts.map +1 -0
  268. package/dist/security/commandValidator.js +78 -0
  269. package/dist/security/constants.d.ts +24 -0
  270. package/dist/security/constants.d.ts.map +1 -0
  271. package/dist/security/constants.js +26 -0
  272. package/dist/security/contentValidator.d.ts +47 -0
  273. package/dist/security/contentValidator.d.ts.map +1 -0
  274. package/dist/security/contentValidator.js +301 -0
  275. package/dist/security/errorHandler.d.ts +42 -0
  276. package/dist/security/errorHandler.d.ts.map +1 -0
  277. package/dist/security/errorHandler.js +166 -0
  278. package/dist/security/errors.d.ts +14 -0
  279. package/dist/security/errors.d.ts.map +1 -0
  280. package/dist/security/errors.js +28 -0
  281. package/dist/security/fileLockManager.d.ts +70 -0
  282. package/dist/security/fileLockManager.d.ts.map +1 -0
  283. package/dist/security/fileLockManager.js +187 -0
  284. package/dist/security/index.d.ts +12 -0
  285. package/dist/security/index.d.ts.map +1 -0
  286. package/dist/security/index.js +14 -0
  287. package/dist/security/pathValidator.d.ts +9 -0
  288. package/dist/security/pathValidator.d.ts.map +1 -0
  289. package/dist/security/pathValidator.js +102 -0
  290. package/dist/security/regexValidator.d.ts +59 -0
  291. package/dist/security/regexValidator.d.ts.map +1 -0
  292. package/dist/security/regexValidator.js +214 -0
  293. package/dist/security/secureYamlParser.d.ts +46 -0
  294. package/dist/security/secureYamlParser.d.ts.map +1 -0
  295. package/dist/security/secureYamlParser.js +203 -0
  296. package/dist/security/securityMonitor.d.ts +58 -0
  297. package/dist/security/securityMonitor.d.ts.map +1 -0
  298. package/dist/security/securityMonitor.js +108 -0
  299. package/dist/security/tokenManager.d.ts +85 -0
  300. package/dist/security/tokenManager.d.ts.map +1 -0
  301. package/dist/security/tokenManager.js +286 -0
  302. package/dist/security/validators/unicodeValidator.d.ts +97 -0
  303. package/dist/security/validators/unicodeValidator.d.ts.map +1 -0
  304. package/dist/security/validators/unicodeValidator.js +312 -0
  305. package/dist/security/yamlValidator.d.ts +21 -0
  306. package/dist/security/yamlValidator.d.ts.map +1 -0
  307. package/dist/security/yamlValidator.js +164 -0
  308. package/dist/server/ServerSetup.d.ts +35 -0
  309. package/dist/server/ServerSetup.d.ts.map +1 -0
  310. package/dist/server/ServerSetup.js +116 -0
  311. package/dist/server/index.d.ts +7 -0
  312. package/dist/server/index.d.ts.map +1 -0
  313. package/dist/server/index.js +7 -0
  314. package/dist/server/startup.d.ts +31 -0
  315. package/dist/server/startup.d.ts.map +1 -0
  316. package/dist/server/startup.js +67 -0
  317. package/dist/server/tools/CollectionTools.d.ts +10 -0
  318. package/dist/server/tools/CollectionTools.d.ts.map +1 -0
  319. package/dist/server/tools/CollectionTools.js +96 -0
  320. package/dist/server/tools/ConfigTools.d.ts +10 -0
  321. package/dist/server/tools/ConfigTools.d.ts.map +1 -0
  322. package/dist/server/tools/ConfigTools.js +63 -0
  323. package/dist/server/tools/MarketplaceTools.d.ts +10 -0
  324. package/dist/server/tools/MarketplaceTools.d.ts.map +1 -0
  325. package/dist/server/tools/MarketplaceTools.js +96 -0
  326. package/dist/server/tools/PersonaTools.d.ts +10 -0
  327. package/dist/server/tools/PersonaTools.d.ts.map +1 -0
  328. package/dist/server/tools/PersonaTools.js +257 -0
  329. package/dist/server/tools/ToolRegistry.d.ts +37 -0
  330. package/dist/server/tools/ToolRegistry.d.ts.map +1 -0
  331. package/dist/server/tools/ToolRegistry.js +40 -0
  332. package/dist/server/tools/UpdateTools.d.ts +10 -0
  333. package/dist/server/tools/UpdateTools.d.ts.map +1 -0
  334. package/dist/server/tools/UpdateTools.js +64 -0
  335. package/dist/server/tools/UserTools.d.ts +10 -0
  336. package/dist/server/tools/UserTools.d.ts.map +1 -0
  337. package/dist/server/tools/UserTools.js +51 -0
  338. package/dist/server/tools/index.d.ts +10 -0
  339. package/dist/server/tools/index.d.ts.map +1 -0
  340. package/dist/server/tools/index.js +10 -0
  341. package/dist/server/types.d.ts +34 -0
  342. package/dist/server/types.d.ts.map +1 -0
  343. package/dist/server/types.js +5 -0
  344. package/dist/src/cache/APICache.d.ts +23 -0
  345. package/dist/src/cache/APICache.d.ts.map +1 -0
  346. package/dist/src/cache/APICache.js +42 -0
  347. package/dist/src/cache/index.d.ts +5 -0
  348. package/dist/src/cache/index.d.ts.map +1 -0
  349. package/dist/src/cache/index.js +5 -0
  350. package/dist/src/config/constants.d.ts +25 -0
  351. package/dist/src/config/constants.d.ts.map +1 -0
  352. package/dist/src/config/constants.js +30 -0
  353. package/dist/src/config/index.d.ts +6 -0
  354. package/dist/src/config/index.d.ts.map +1 -0
  355. package/dist/src/config/index.js +6 -0
  356. package/dist/src/config/indicator-config.d.ts +107 -0
  357. package/dist/src/config/indicator-config.d.ts.map +1 -0
  358. package/dist/src/config/indicator-config.js +158 -0
  359. package/dist/src/constants/defaultPersonas.d.ts +10 -0
  360. package/dist/src/constants/defaultPersonas.d.ts.map +1 -0
  361. package/dist/src/constants/defaultPersonas.js +18 -0
  362. package/dist/src/constants/limits.d.ts +10 -0
  363. package/dist/src/constants/limits.d.ts.map +1 -0
  364. package/dist/src/constants/limits.js +13 -0
  365. package/dist/src/errors/SecurityError.d.ts +29 -0
  366. package/dist/src/errors/SecurityError.d.ts.map +1 -0
  367. package/dist/src/errors/SecurityError.js +47 -0
  368. package/dist/src/errors/index.d.ts +2 -0
  369. package/dist/src/errors/index.d.ts.map +1 -0
  370. package/dist/src/errors/index.js +2 -0
  371. package/dist/src/index.barrel.d.ts +21 -0
  372. package/dist/src/index.barrel.d.ts.map +1 -0
  373. package/dist/src/index.barrel.js +31 -0
  374. package/dist/src/index.d.ts +220 -0
  375. package/dist/src/index.d.ts.map +1 -0
  376. package/dist/src/index.js +1559 -0
  377. package/dist/src/marketplace/GitHubClient.d.ts +22 -0
  378. package/dist/src/marketplace/GitHubClient.d.ts.map +1 -0
  379. package/dist/src/marketplace/GitHubClient.js +112 -0
  380. package/dist/src/marketplace/MarketplaceBrowser.d.ts +21 -0
  381. package/dist/src/marketplace/MarketplaceBrowser.d.ts.map +1 -0
  382. package/dist/src/marketplace/MarketplaceBrowser.js +45 -0
  383. package/dist/src/marketplace/MarketplaceSearch.d.ts +18 -0
  384. package/dist/src/marketplace/MarketplaceSearch.d.ts.map +1 -0
  385. package/dist/src/marketplace/MarketplaceSearch.js +36 -0
  386. package/dist/src/marketplace/PersonaDetails.d.ts +22 -0
  387. package/dist/src/marketplace/PersonaDetails.d.ts.map +1 -0
  388. package/dist/src/marketplace/PersonaDetails.js +71 -0
  389. package/dist/src/marketplace/PersonaInstaller.d.ts +25 -0
  390. package/dist/src/marketplace/PersonaInstaller.d.ts.map +1 -0
  391. package/dist/src/marketplace/PersonaInstaller.js +100 -0
  392. package/dist/src/marketplace/PersonaSubmitter.d.ts +19 -0
  393. package/dist/src/marketplace/PersonaSubmitter.d.ts.map +1 -0
  394. package/dist/src/marketplace/PersonaSubmitter.js +57 -0
  395. package/dist/src/marketplace/index.d.ts +10 -0
  396. package/dist/src/marketplace/index.d.ts.map +1 -0
  397. package/dist/src/marketplace/index.js +10 -0
  398. package/dist/src/persona/PersonaLoader.d.ts +33 -0
  399. package/dist/src/persona/PersonaLoader.d.ts.map +1 -0
  400. package/dist/src/persona/PersonaLoader.js +139 -0
  401. package/dist/src/persona/PersonaManager.d.ts +112 -0
  402. package/dist/src/persona/PersonaManager.d.ts.map +1 -0
  403. package/dist/src/persona/PersonaManager.js +341 -0
  404. package/dist/src/persona/PersonaValidator.d.ts +33 -0
  405. package/dist/src/persona/PersonaValidator.d.ts.map +1 -0
  406. package/dist/src/persona/PersonaValidator.js +157 -0
  407. package/dist/src/persona/export-import/PersonaExporter.d.ts +43 -0
  408. package/dist/src/persona/export-import/PersonaExporter.d.ts.map +1 -0
  409. package/dist/src/persona/export-import/PersonaExporter.js +99 -0
  410. package/dist/src/persona/export-import/PersonaImporter.d.ts +65 -0
  411. package/dist/src/persona/export-import/PersonaImporter.d.ts.map +1 -0
  412. package/dist/src/persona/export-import/PersonaImporter.js +313 -0
  413. package/dist/src/persona/export-import/PersonaSharer.d.ts +60 -0
  414. package/dist/src/persona/export-import/PersonaSharer.d.ts.map +1 -0
  415. package/dist/src/persona/export-import/PersonaSharer.js +363 -0
  416. package/dist/src/persona/export-import/index.d.ts +10 -0
  417. package/dist/src/persona/export-import/index.d.ts.map +1 -0
  418. package/dist/src/persona/export-import/index.js +7 -0
  419. package/dist/src/persona/index.d.ts +7 -0
  420. package/dist/src/persona/index.d.ts.map +1 -0
  421. package/dist/src/persona/index.js +7 -0
  422. package/dist/src/security/InputValidator.d.ts +69 -0
  423. package/dist/src/security/InputValidator.d.ts.map +1 -0
  424. package/dist/src/security/InputValidator.js +381 -0
  425. package/dist/src/security/commandValidator.d.ts +7 -0
  426. package/dist/src/security/commandValidator.d.ts.map +1 -0
  427. package/dist/src/security/commandValidator.js +77 -0
  428. package/dist/src/security/constants.d.ts +21 -0
  429. package/dist/src/security/constants.d.ts.map +1 -0
  430. package/dist/src/security/constants.js +23 -0
  431. package/dist/src/security/contentValidator.d.ts +47 -0
  432. package/dist/src/security/contentValidator.d.ts.map +1 -0
  433. package/dist/src/security/contentValidator.js +188 -0
  434. package/dist/src/security/fileLockManager.d.ts +70 -0
  435. package/dist/src/security/fileLockManager.d.ts.map +1 -0
  436. package/dist/src/security/fileLockManager.js +187 -0
  437. package/dist/src/security/index.d.ts +12 -0
  438. package/dist/src/security/index.d.ts.map +1 -0
  439. package/dist/src/security/index.js +14 -0
  440. package/dist/src/security/pathValidator.d.ts +9 -0
  441. package/dist/src/security/pathValidator.d.ts.map +1 -0
  442. package/dist/src/security/pathValidator.js +97 -0
  443. package/dist/src/security/secureYamlParser.d.ts +46 -0
  444. package/dist/src/security/secureYamlParser.d.ts.map +1 -0
  445. package/dist/src/security/secureYamlParser.js +203 -0
  446. package/dist/src/security/securityMonitor.d.ts +58 -0
  447. package/dist/src/security/securityMonitor.d.ts.map +1 -0
  448. package/dist/src/security/securityMonitor.js +108 -0
  449. package/dist/src/security/tokenManager.d.ts +59 -0
  450. package/dist/src/security/tokenManager.d.ts.map +1 -0
  451. package/dist/src/security/tokenManager.js +216 -0
  452. package/dist/src/security/yamlValidator.d.ts +20 -0
  453. package/dist/src/security/yamlValidator.d.ts.map +1 -0
  454. package/dist/src/security/yamlValidator.js +138 -0
  455. package/dist/src/server/ServerSetup.d.ts +31 -0
  456. package/dist/src/server/ServerSetup.d.ts.map +1 -0
  457. package/dist/src/server/ServerSetup.js +79 -0
  458. package/dist/src/server/index.d.ts +7 -0
  459. package/dist/src/server/index.d.ts.map +1 -0
  460. package/dist/src/server/index.js +7 -0
  461. package/dist/src/server/tools/ConfigTools.d.ts +10 -0
  462. package/dist/src/server/tools/ConfigTools.d.ts.map +1 -0
  463. package/dist/src/server/tools/ConfigTools.js +63 -0
  464. package/dist/src/server/tools/MarketplaceTools.d.ts +10 -0
  465. package/dist/src/server/tools/MarketplaceTools.d.ts.map +1 -0
  466. package/dist/src/server/tools/MarketplaceTools.js +92 -0
  467. package/dist/src/server/tools/PersonaTools.d.ts +10 -0
  468. package/dist/src/server/tools/PersonaTools.d.ts.map +1 -0
  469. package/dist/src/server/tools/PersonaTools.js +257 -0
  470. package/dist/src/server/tools/ToolRegistry.d.ts +37 -0
  471. package/dist/src/server/tools/ToolRegistry.d.ts.map +1 -0
  472. package/dist/src/server/tools/ToolRegistry.js +40 -0
  473. package/dist/src/server/tools/UpdateTools.d.ts +10 -0
  474. package/dist/src/server/tools/UpdateTools.d.ts.map +1 -0
  475. package/dist/src/server/tools/UpdateTools.js +64 -0
  476. package/dist/src/server/tools/UserTools.d.ts +10 -0
  477. package/dist/src/server/tools/UserTools.d.ts.map +1 -0
  478. package/dist/src/server/tools/UserTools.js +51 -0
  479. package/dist/src/server/tools/index.d.ts +10 -0
  480. package/dist/src/server/tools/index.d.ts.map +1 -0
  481. package/dist/src/server/tools/index.js +10 -0
  482. package/dist/src/server/types.d.ts +34 -0
  483. package/dist/src/server/types.d.ts.map +1 -0
  484. package/dist/src/server/types.js +5 -0
  485. package/dist/src/tools/debug.d.ts +20 -0
  486. package/dist/src/tools/debug.d.ts.map +1 -0
  487. package/dist/src/tools/debug.js +37 -0
  488. package/dist/src/types/cache.d.ts +8 -0
  489. package/dist/src/types/cache.d.ts.map +1 -0
  490. package/dist/src/types/cache.js +5 -0
  491. package/dist/src/types/index.d.ts +8 -0
  492. package/dist/src/types/index.d.ts.map +1 -0
  493. package/dist/src/types/index.js +8 -0
  494. package/dist/src/types/marketplace.d.ts +23 -0
  495. package/dist/src/types/marketplace.d.ts.map +1 -0
  496. package/dist/src/types/marketplace.js +5 -0
  497. package/dist/src/types/mcp.d.ts +161 -0
  498. package/dist/src/types/mcp.d.ts.map +1 -0
  499. package/dist/src/types/mcp.js +75 -0
  500. package/dist/src/types/persona.d.ts +30 -0
  501. package/dist/src/types/persona.d.ts.map +1 -0
  502. package/dist/src/types/persona.js +5 -0
  503. package/dist/src/update/BackupManager.d.ts +46 -0
  504. package/dist/src/update/BackupManager.d.ts.map +1 -0
  505. package/dist/src/update/BackupManager.js +261 -0
  506. package/dist/src/update/DependencyChecker.d.ts +41 -0
  507. package/dist/src/update/DependencyChecker.d.ts.map +1 -0
  508. package/dist/src/update/DependencyChecker.js +132 -0
  509. package/dist/src/update/RateLimiter.d.ts +80 -0
  510. package/dist/src/update/RateLimiter.d.ts.map +1 -0
  511. package/dist/src/update/RateLimiter.js +172 -0
  512. package/dist/src/update/SignatureVerifier.d.ts +71 -0
  513. package/dist/src/update/SignatureVerifier.d.ts.map +1 -0
  514. package/dist/src/update/SignatureVerifier.js +214 -0
  515. package/dist/src/update/UpdateChecker.d.ts +127 -0
  516. package/dist/src/update/UpdateChecker.d.ts.map +1 -0
  517. package/dist/src/update/UpdateChecker.js +460 -0
  518. package/dist/src/update/UpdateManager.d.ts +41 -0
  519. package/dist/src/update/UpdateManager.d.ts.map +1 -0
  520. package/dist/src/update/UpdateManager.js +260 -0
  521. package/dist/src/update/VersionManager.d.ts +31 -0
  522. package/dist/src/update/VersionManager.d.ts.map +1 -0
  523. package/dist/src/update/VersionManager.js +134 -0
  524. package/dist/src/update/index.d.ts +9 -0
  525. package/dist/src/update/index.d.ts.map +1 -0
  526. package/dist/src/update/index.js +9 -0
  527. package/dist/src/utils/filesystem.d.ts +32 -0
  528. package/dist/src/utils/filesystem.d.ts.map +1 -0
  529. package/dist/src/utils/filesystem.js +73 -0
  530. package/dist/src/utils/git.d.ts +32 -0
  531. package/dist/src/utils/git.d.ts.map +1 -0
  532. package/dist/src/utils/git.js +65 -0
  533. package/dist/src/utils/index.d.ts +7 -0
  534. package/dist/src/utils/index.d.ts.map +1 -0
  535. package/dist/src/utils/index.js +7 -0
  536. package/dist/src/utils/logger.d.ts +45 -0
  537. package/dist/src/utils/logger.d.ts.map +1 -0
  538. package/dist/src/utils/logger.js +91 -0
  539. package/dist/src/utils/version.d.ts +25 -0
  540. package/dist/src/utils/version.d.ts.map +1 -0
  541. package/dist/src/utils/version.js +97 -0
  542. package/dist/test/src/cache/APICache.d.ts +23 -0
  543. package/dist/test/src/cache/APICache.d.ts.map +1 -0
  544. package/dist/test/src/cache/APICache.js +42 -0
  545. package/dist/test/src/cache/index.d.ts +5 -0
  546. package/dist/test/src/cache/index.d.ts.map +1 -0
  547. package/dist/test/src/cache/index.js +5 -0
  548. package/dist/test/src/collection/CollectionBrowser.d.ts +24 -0
  549. package/dist/test/src/collection/CollectionBrowser.d.ts.map +1 -0
  550. package/dist/test/src/collection/CollectionBrowser.js +115 -0
  551. package/dist/test/src/collection/CollectionSearch.d.ts +18 -0
  552. package/dist/test/src/collection/CollectionSearch.d.ts.map +1 -0
  553. package/dist/test/src/collection/CollectionSearch.js +48 -0
  554. package/dist/test/src/collection/GitHubClient.d.ts +22 -0
  555. package/dist/test/src/collection/GitHubClient.d.ts.map +1 -0
  556. package/dist/test/src/collection/GitHubClient.js +114 -0
  557. package/dist/test/src/collection/PersonaDetails.d.ts +22 -0
  558. package/dist/test/src/collection/PersonaDetails.d.ts.map +1 -0
  559. package/dist/test/src/collection/PersonaDetails.js +71 -0
  560. package/dist/test/src/collection/PersonaInstaller.d.ts +26 -0
  561. package/dist/test/src/collection/PersonaInstaller.d.ts.map +1 -0
  562. package/dist/test/src/collection/PersonaInstaller.js +103 -0
  563. package/dist/test/src/collection/PersonaSubmitter.d.ts +19 -0
  564. package/dist/test/src/collection/PersonaSubmitter.d.ts.map +1 -0
  565. package/dist/test/src/collection/PersonaSubmitter.js +57 -0
  566. package/dist/test/src/collection/index.d.ts +10 -0
  567. package/dist/test/src/collection/index.d.ts.map +1 -0
  568. package/dist/test/src/collection/index.js +10 -0
  569. package/dist/test/src/config/constants.d.ts +25 -0
  570. package/dist/test/src/config/constants.d.ts.map +1 -0
  571. package/dist/test/src/config/constants.js +30 -0
  572. package/dist/test/src/config/index.d.ts +6 -0
  573. package/dist/test/src/config/index.d.ts.map +1 -0
  574. package/dist/test/src/config/index.js +6 -0
  575. package/dist/test/src/config/indicator-config.d.ts +107 -0
  576. package/dist/test/src/config/indicator-config.d.ts.map +1 -0
  577. package/dist/test/src/config/indicator-config.js +158 -0
  578. package/dist/test/src/constants/defaultPersonas.d.ts +10 -0
  579. package/dist/test/src/constants/defaultPersonas.d.ts.map +1 -0
  580. package/dist/test/src/constants/defaultPersonas.js +18 -0
  581. package/dist/test/src/constants/limits.d.ts +10 -0
  582. package/dist/test/src/constants/limits.d.ts.map +1 -0
  583. package/dist/test/src/constants/limits.js +13 -0
  584. package/dist/test/src/elements/BaseElement.d.ts +81 -0
  585. package/dist/test/src/elements/BaseElement.d.ts.map +1 -0
  586. package/dist/test/src/elements/BaseElement.js +381 -0
  587. package/dist/test/src/elements/FeedbackProcessor.d.ts +57 -0
  588. package/dist/test/src/elements/FeedbackProcessor.d.ts.map +1 -0
  589. package/dist/test/src/elements/FeedbackProcessor.js +418 -0
  590. package/dist/test/src/elements/agents/Agent.d.ts +145 -0
  591. package/dist/test/src/elements/agents/Agent.d.ts.map +1 -0
  592. package/dist/test/src/elements/agents/Agent.js +848 -0
  593. package/dist/test/src/elements/agents/AgentManager.d.ts +125 -0
  594. package/dist/test/src/elements/agents/AgentManager.d.ts.map +1 -0
  595. package/dist/test/src/elements/agents/AgentManager.js +608 -0
  596. package/dist/test/src/elements/agents/constants.d.ts +42 -0
  597. package/dist/test/src/elements/agents/constants.d.ts.map +1 -0
  598. package/dist/test/src/elements/agents/constants.js +45 -0
  599. package/dist/test/src/elements/agents/goalTemplates.d.ts +44 -0
  600. package/dist/test/src/elements/agents/goalTemplates.d.ts.map +1 -0
  601. package/dist/test/src/elements/agents/goalTemplates.js +297 -0
  602. package/dist/test/src/elements/agents/index.d.ts +8 -0
  603. package/dist/test/src/elements/agents/index.d.ts.map +1 -0
  604. package/dist/test/src/elements/agents/index.js +8 -0
  605. package/dist/test/src/elements/agents/ruleEngineConfig.d.ts +76 -0
  606. package/dist/test/src/elements/agents/ruleEngineConfig.d.ts.map +1 -0
  607. package/dist/test/src/elements/agents/ruleEngineConfig.js +143 -0
  608. package/dist/test/src/elements/agents/types.d.ts +97 -0
  609. package/dist/test/src/elements/agents/types.d.ts.map +1 -0
  610. package/dist/test/src/elements/agents/types.js +5 -0
  611. package/dist/test/src/elements/index.d.ts +6 -0
  612. package/dist/test/src/elements/index.d.ts.map +1 -0
  613. package/dist/test/src/elements/index.js +6 -0
  614. package/dist/test/src/elements/memories/Memory.d.ts +110 -0
  615. package/dist/test/src/elements/memories/Memory.d.ts.map +1 -0
  616. package/dist/test/src/elements/memories/Memory.js +470 -0
  617. package/dist/test/src/elements/memories/MemoryManager.d.ts +86 -0
  618. package/dist/test/src/elements/memories/MemoryManager.d.ts.map +1 -0
  619. package/dist/test/src/elements/memories/MemoryManager.js +435 -0
  620. package/dist/test/src/elements/memories/constants.d.ts +42 -0
  621. package/dist/test/src/elements/memories/constants.d.ts.map +1 -0
  622. package/dist/test/src/elements/memories/constants.js +49 -0
  623. package/dist/test/src/elements/memories/index.d.ts +6 -0
  624. package/dist/test/src/elements/memories/index.d.ts.map +1 -0
  625. package/dist/test/src/elements/memories/index.js +6 -0
  626. package/dist/test/src/elements/skills/Skill.d.ts +109 -0
  627. package/dist/test/src/elements/skills/Skill.d.ts.map +1 -0
  628. package/dist/test/src/elements/skills/Skill.js +381 -0
  629. package/dist/test/src/elements/templates/Template.d.ts +138 -0
  630. package/dist/test/src/elements/templates/Template.d.ts.map +1 -0
  631. package/dist/test/src/elements/templates/Template.js +673 -0
  632. package/dist/test/src/elements/templates/TemplateManager.d.ts +104 -0
  633. package/dist/test/src/elements/templates/TemplateManager.d.ts.map +1 -0
  634. package/dist/test/src/elements/templates/TemplateManager.js +496 -0
  635. package/dist/test/src/elements/templates/index.d.ts +6 -0
  636. package/dist/test/src/elements/templates/index.d.ts.map +1 -0
  637. package/dist/test/src/elements/templates/index.js +6 -0
  638. package/dist/test/src/errors/SecurityError.d.ts +29 -0
  639. package/dist/test/src/errors/SecurityError.d.ts.map +1 -0
  640. package/dist/test/src/errors/SecurityError.js +47 -0
  641. package/dist/test/src/errors/index.d.ts +2 -0
  642. package/dist/test/src/errors/index.d.ts.map +1 -0
  643. package/dist/test/src/errors/index.js +2 -0
  644. package/dist/test/src/index.barrel.d.ts +21 -0
  645. package/dist/test/src/index.barrel.d.ts.map +1 -0
  646. package/dist/test/src/index.barrel.js +31 -0
  647. package/dist/test/src/index.d.ts +223 -0
  648. package/dist/test/src/index.d.ts.map +1 -0
  649. package/dist/test/src/index.js +1594 -0
  650. package/dist/test/src/marketplace/GitHubClient.d.ts +22 -0
  651. package/dist/test/src/marketplace/GitHubClient.d.ts.map +1 -0
  652. package/dist/test/src/marketplace/GitHubClient.js +112 -0
  653. package/dist/test/src/marketplace/MarketplaceBrowser.d.ts +21 -0
  654. package/dist/test/src/marketplace/MarketplaceBrowser.d.ts.map +1 -0
  655. package/dist/test/src/marketplace/MarketplaceBrowser.js +45 -0
  656. package/dist/test/src/marketplace/MarketplaceSearch.d.ts +18 -0
  657. package/dist/test/src/marketplace/MarketplaceSearch.d.ts.map +1 -0
  658. package/dist/test/src/marketplace/MarketplaceSearch.js +36 -0
  659. package/dist/test/src/marketplace/PersonaDetails.d.ts +22 -0
  660. package/dist/test/src/marketplace/PersonaDetails.d.ts.map +1 -0
  661. package/dist/test/src/marketplace/PersonaDetails.js +71 -0
  662. package/dist/test/src/marketplace/PersonaInstaller.d.ts +25 -0
  663. package/dist/test/src/marketplace/PersonaInstaller.d.ts.map +1 -0
  664. package/dist/test/src/marketplace/PersonaInstaller.js +100 -0
  665. package/dist/test/src/marketplace/PersonaSubmitter.d.ts +19 -0
  666. package/dist/test/src/marketplace/PersonaSubmitter.d.ts.map +1 -0
  667. package/dist/test/src/marketplace/PersonaSubmitter.js +57 -0
  668. package/dist/test/src/marketplace/index.d.ts +10 -0
  669. package/dist/test/src/marketplace/index.d.ts.map +1 -0
  670. package/dist/test/src/marketplace/index.js +10 -0
  671. package/dist/test/src/persona/PersonaElement.d.ts +64 -0
  672. package/dist/test/src/persona/PersonaElement.d.ts.map +1 -0
  673. package/dist/test/src/persona/PersonaElement.js +223 -0
  674. package/dist/test/src/persona/PersonaElementManager.d.ts +97 -0
  675. package/dist/test/src/persona/PersonaElementManager.d.ts.map +1 -0
  676. package/dist/test/src/persona/PersonaElementManager.js +342 -0
  677. package/dist/test/src/persona/PersonaLoader.d.ts +34 -0
  678. package/dist/test/src/persona/PersonaLoader.d.ts.map +1 -0
  679. package/dist/test/src/persona/PersonaLoader.js +145 -0
  680. package/dist/test/src/persona/PersonaManager.d.ts +112 -0
  681. package/dist/test/src/persona/PersonaManager.d.ts.map +1 -0
  682. package/dist/test/src/persona/PersonaManager.js +341 -0
  683. package/dist/test/src/persona/PersonaValidator.d.ts +33 -0
  684. package/dist/test/src/persona/PersonaValidator.d.ts.map +1 -0
  685. package/dist/test/src/persona/PersonaValidator.js +157 -0
  686. package/dist/test/src/persona/export-import/PersonaExporter.d.ts +43 -0
  687. package/dist/test/src/persona/export-import/PersonaExporter.d.ts.map +1 -0
  688. package/dist/test/src/persona/export-import/PersonaExporter.js +99 -0
  689. package/dist/test/src/persona/export-import/PersonaImporter.d.ts +65 -0
  690. package/dist/test/src/persona/export-import/PersonaImporter.d.ts.map +1 -0
  691. package/dist/test/src/persona/export-import/PersonaImporter.js +315 -0
  692. package/dist/test/src/persona/export-import/PersonaSharer.d.ts +60 -0
  693. package/dist/test/src/persona/export-import/PersonaSharer.d.ts.map +1 -0
  694. package/dist/test/src/persona/export-import/PersonaSharer.js +502 -0
  695. package/dist/test/src/persona/export-import/index.d.ts +10 -0
  696. package/dist/test/src/persona/export-import/index.d.ts.map +1 -0
  697. package/dist/test/src/persona/export-import/index.js +7 -0
  698. package/dist/test/src/persona/index.d.ts +7 -0
  699. package/dist/test/src/persona/index.d.ts.map +1 -0
  700. package/dist/test/src/persona/index.js +7 -0
  701. package/dist/test/src/portfolio/MigrationManager.d.ts +44 -0
  702. package/dist/test/src/portfolio/MigrationManager.d.ts.map +1 -0
  703. package/dist/test/src/portfolio/MigrationManager.js +163 -0
  704. package/dist/test/src/portfolio/PortfolioManager.d.ts +54 -0
  705. package/dist/test/src/portfolio/PortfolioManager.d.ts.map +1 -0
  706. package/dist/test/src/portfolio/PortfolioManager.js +224 -0
  707. package/dist/test/src/portfolio/types.d.ts +18 -0
  708. package/dist/test/src/portfolio/types.d.ts.map +1 -0
  709. package/dist/test/src/portfolio/types.js +13 -0
  710. package/dist/test/src/security/InputValidator.d.ts +80 -0
  711. package/dist/test/src/security/InputValidator.d.ts.map +1 -0
  712. package/dist/test/src/security/InputValidator.js +436 -0
  713. package/dist/test/src/security/audit/SecurityAuditor.d.ts +44 -0
  714. package/dist/test/src/security/audit/SecurityAuditor.d.ts.map +1 -0
  715. package/dist/test/src/security/audit/SecurityAuditor.js +274 -0
  716. package/dist/test/src/security/audit/config/suppressions.d.ts +34 -0
  717. package/dist/test/src/security/audit/config/suppressions.d.ts.map +1 -0
  718. package/dist/test/src/security/audit/config/suppressions.js +575 -0
  719. package/dist/test/src/security/audit/index.d.ts +14 -0
  720. package/dist/test/src/security/audit/index.d.ts.map +1 -0
  721. package/dist/test/src/security/audit/index.js +15 -0
  722. package/dist/test/src/security/audit/reporters/ConsoleReporter.d.ts +46 -0
  723. package/dist/test/src/security/audit/reporters/ConsoleReporter.d.ts.map +1 -0
  724. package/dist/test/src/security/audit/reporters/ConsoleReporter.js +174 -0
  725. package/dist/test/src/security/audit/reporters/JsonReporter.d.ts +13 -0
  726. package/dist/test/src/security/audit/reporters/JsonReporter.d.ts.map +1 -0
  727. package/dist/test/src/security/audit/reporters/JsonReporter.js +25 -0
  728. package/dist/test/src/security/audit/reporters/MarkdownReporter.d.ts +13 -0
  729. package/dist/test/src/security/audit/reporters/MarkdownReporter.d.ts.map +1 -0
  730. package/dist/test/src/security/audit/reporters/MarkdownReporter.js +79 -0
  731. package/dist/test/src/security/audit/rules/SecurityRules.d.ts +20 -0
  732. package/dist/test/src/security/audit/rules/SecurityRules.d.ts.map +1 -0
  733. package/dist/test/src/security/audit/rules/SecurityRules.js +244 -0
  734. package/dist/test/src/security/audit/scanners/CodeScanner.d.ts +47 -0
  735. package/dist/test/src/security/audit/scanners/CodeScanner.d.ts.map +1 -0
  736. package/dist/test/src/security/audit/scanners/CodeScanner.js +174 -0
  737. package/dist/test/src/security/audit/scanners/ConfigurationScanner.d.ts +13 -0
  738. package/dist/test/src/security/audit/scanners/ConfigurationScanner.d.ts.map +1 -0
  739. package/dist/test/src/security/audit/scanners/ConfigurationScanner.js +22 -0
  740. package/dist/test/src/security/audit/scanners/DependencyScanner.d.ts +13 -0
  741. package/dist/test/src/security/audit/scanners/DependencyScanner.d.ts.map +1 -0
  742. package/dist/test/src/security/audit/scanners/DependencyScanner.js +22 -0
  743. package/dist/test/src/security/audit/types.d.ts +94 -0
  744. package/dist/test/src/security/audit/types.d.ts.map +1 -0
  745. package/dist/test/src/security/audit/types.js +6 -0
  746. package/dist/test/src/security/commandValidator.d.ts +7 -0
  747. package/dist/test/src/security/commandValidator.d.ts.map +1 -0
  748. package/dist/test/src/security/commandValidator.js +78 -0
  749. package/dist/test/src/security/constants.d.ts +24 -0
  750. package/dist/test/src/security/constants.d.ts.map +1 -0
  751. package/dist/test/src/security/constants.js +26 -0
  752. package/dist/test/src/security/contentValidator.d.ts +47 -0
  753. package/dist/test/src/security/contentValidator.d.ts.map +1 -0
  754. package/dist/test/src/security/contentValidator.js +301 -0
  755. package/dist/test/src/security/errors.d.ts +14 -0
  756. package/dist/test/src/security/errors.d.ts.map +1 -0
  757. package/dist/test/src/security/errors.js +28 -0
  758. package/dist/test/src/security/fileLockManager.d.ts +70 -0
  759. package/dist/test/src/security/fileLockManager.d.ts.map +1 -0
  760. package/dist/test/src/security/fileLockManager.js +187 -0
  761. package/dist/test/src/security/index.d.ts +12 -0
  762. package/dist/test/src/security/index.d.ts.map +1 -0
  763. package/dist/test/src/security/index.js +14 -0
  764. package/dist/test/src/security/pathValidator.d.ts +9 -0
  765. package/dist/test/src/security/pathValidator.d.ts.map +1 -0
  766. package/dist/test/src/security/pathValidator.js +98 -0
  767. package/dist/test/src/security/regexValidator.d.ts +59 -0
  768. package/dist/test/src/security/regexValidator.d.ts.map +1 -0
  769. package/dist/test/src/security/regexValidator.js +214 -0
  770. package/dist/test/src/security/secureYamlParser.d.ts +46 -0
  771. package/dist/test/src/security/secureYamlParser.d.ts.map +1 -0
  772. package/dist/test/src/security/secureYamlParser.js +203 -0
  773. package/dist/test/src/security/securityMonitor.d.ts +58 -0
  774. package/dist/test/src/security/securityMonitor.d.ts.map +1 -0
  775. package/dist/test/src/security/securityMonitor.js +108 -0
  776. package/dist/test/src/security/tokenManager.d.ts +85 -0
  777. package/dist/test/src/security/tokenManager.d.ts.map +1 -0
  778. package/dist/test/src/security/tokenManager.js +286 -0
  779. package/dist/test/src/security/validators/unicodeValidator.d.ts +97 -0
  780. package/dist/test/src/security/validators/unicodeValidator.d.ts.map +1 -0
  781. package/dist/test/src/security/validators/unicodeValidator.js +312 -0
  782. package/dist/test/src/security/yamlValidator.d.ts +21 -0
  783. package/dist/test/src/security/yamlValidator.d.ts.map +1 -0
  784. package/dist/test/src/security/yamlValidator.js +164 -0
  785. package/dist/test/src/server/ServerSetup.d.ts +35 -0
  786. package/dist/test/src/server/ServerSetup.d.ts.map +1 -0
  787. package/dist/test/src/server/ServerSetup.js +116 -0
  788. package/dist/test/src/server/index.d.ts +7 -0
  789. package/dist/test/src/server/index.d.ts.map +1 -0
  790. package/dist/test/src/server/index.js +7 -0
  791. package/dist/test/src/server/startup.d.ts +31 -0
  792. package/dist/test/src/server/startup.d.ts.map +1 -0
  793. package/dist/test/src/server/startup.js +67 -0
  794. package/dist/test/src/server/tools/CollectionTools.d.ts +10 -0
  795. package/dist/test/src/server/tools/CollectionTools.d.ts.map +1 -0
  796. package/dist/test/src/server/tools/CollectionTools.js +96 -0
  797. package/dist/test/src/server/tools/ConfigTools.d.ts +10 -0
  798. package/dist/test/src/server/tools/ConfigTools.d.ts.map +1 -0
  799. package/dist/test/src/server/tools/ConfigTools.js +63 -0
  800. package/dist/test/src/server/tools/MarketplaceTools.d.ts +10 -0
  801. package/dist/test/src/server/tools/MarketplaceTools.d.ts.map +1 -0
  802. package/dist/test/src/server/tools/MarketplaceTools.js +92 -0
  803. package/dist/test/src/server/tools/PersonaTools.d.ts +10 -0
  804. package/dist/test/src/server/tools/PersonaTools.d.ts.map +1 -0
  805. package/dist/test/src/server/tools/PersonaTools.js +257 -0
  806. package/dist/test/src/server/tools/ToolRegistry.d.ts +37 -0
  807. package/dist/test/src/server/tools/ToolRegistry.d.ts.map +1 -0
  808. package/dist/test/src/server/tools/ToolRegistry.js +40 -0
  809. package/dist/test/src/server/tools/UpdateTools.d.ts +10 -0
  810. package/dist/test/src/server/tools/UpdateTools.d.ts.map +1 -0
  811. package/dist/test/src/server/tools/UpdateTools.js +64 -0
  812. package/dist/test/src/server/tools/UserTools.d.ts +10 -0
  813. package/dist/test/src/server/tools/UserTools.d.ts.map +1 -0
  814. package/dist/test/src/server/tools/UserTools.js +51 -0
  815. package/dist/test/src/server/tools/index.d.ts +10 -0
  816. package/dist/test/src/server/tools/index.d.ts.map +1 -0
  817. package/dist/test/src/server/tools/index.js +10 -0
  818. package/dist/test/src/server/types.d.ts +34 -0
  819. package/dist/test/src/server/types.d.ts.map +1 -0
  820. package/dist/test/src/server/types.js +5 -0
  821. package/dist/test/src/tools/debug.d.ts +20 -0
  822. package/dist/test/src/tools/debug.d.ts.map +1 -0
  823. package/dist/test/src/tools/debug.js +37 -0
  824. package/dist/test/src/types/cache.d.ts +8 -0
  825. package/dist/test/src/types/cache.d.ts.map +1 -0
  826. package/dist/test/src/types/cache.js +5 -0
  827. package/dist/test/src/types/collection.d.ts +23 -0
  828. package/dist/test/src/types/collection.d.ts.map +1 -0
  829. package/dist/test/src/types/collection.js +5 -0
  830. package/dist/test/src/types/elements/IElement.d.ts +123 -0
  831. package/dist/test/src/types/elements/IElement.d.ts.map +1 -0
  832. package/dist/test/src/types/elements/IElement.js +30 -0
  833. package/dist/test/src/types/elements/IElementManager.d.ts +65 -0
  834. package/dist/test/src/types/elements/IElementManager.d.ts.map +1 -0
  835. package/dist/test/src/types/elements/IElementManager.js +6 -0
  836. package/dist/test/src/types/elements/IRatingManager.d.ts +109 -0
  837. package/dist/test/src/types/elements/IRatingManager.d.ts.map +1 -0
  838. package/dist/test/src/types/elements/IRatingManager.js +6 -0
  839. package/dist/test/src/types/elements/IReferenceResolver.d.ts +52 -0
  840. package/dist/test/src/types/elements/IReferenceResolver.d.ts.map +1 -0
  841. package/dist/test/src/types/elements/IReferenceResolver.js +6 -0
  842. package/dist/test/src/types/elements/RatingBreakdowns.d.ts +49 -0
  843. package/dist/test/src/types/elements/RatingBreakdowns.d.ts.map +1 -0
  844. package/dist/test/src/types/elements/RatingBreakdowns.js +6 -0
  845. package/dist/test/src/types/elements/index.d.ts +9 -0
  846. package/dist/test/src/types/elements/index.d.ts.map +1 -0
  847. package/dist/test/src/types/elements/index.js +11 -0
  848. package/dist/test/src/types/index.d.ts +9 -0
  849. package/dist/test/src/types/index.d.ts.map +1 -0
  850. package/dist/test/src/types/index.js +9 -0
  851. package/dist/test/src/types/marketplace.d.ts +23 -0
  852. package/dist/test/src/types/marketplace.d.ts.map +1 -0
  853. package/dist/test/src/types/marketplace.js +5 -0
  854. package/dist/test/src/types/mcp.d.ts +84 -0
  855. package/dist/test/src/types/mcp.d.ts.map +1 -0
  856. package/dist/test/src/types/mcp.js +80 -0
  857. package/dist/test/src/types/persona.d.ts +30 -0
  858. package/dist/test/src/types/persona.d.ts.map +1 -0
  859. package/dist/test/src/types/persona.js +5 -0
  860. package/dist/test/src/update/BackupManager.d.ts +46 -0
  861. package/dist/test/src/update/BackupManager.d.ts.map +1 -0
  862. package/dist/test/src/update/BackupManager.js +261 -0
  863. package/dist/test/src/update/DependencyChecker.d.ts +41 -0
  864. package/dist/test/src/update/DependencyChecker.d.ts.map +1 -0
  865. package/dist/test/src/update/DependencyChecker.js +132 -0
  866. package/dist/test/src/update/RateLimiter.d.ts +80 -0
  867. package/dist/test/src/update/RateLimiter.d.ts.map +1 -0
  868. package/dist/test/src/update/RateLimiter.js +172 -0
  869. package/dist/test/src/update/SignatureVerifier.d.ts +71 -0
  870. package/dist/test/src/update/SignatureVerifier.d.ts.map +1 -0
  871. package/dist/test/src/update/SignatureVerifier.js +214 -0
  872. package/dist/test/src/update/UpdateChecker.d.ts +127 -0
  873. package/dist/test/src/update/UpdateChecker.d.ts.map +1 -0
  874. package/dist/test/src/update/UpdateChecker.js +469 -0
  875. package/dist/test/src/update/UpdateManager.d.ts +41 -0
  876. package/dist/test/src/update/UpdateManager.d.ts.map +1 -0
  877. package/dist/test/src/update/UpdateManager.js +260 -0
  878. package/dist/test/src/update/VersionManager.d.ts +31 -0
  879. package/dist/test/src/update/VersionManager.d.ts.map +1 -0
  880. package/dist/test/src/update/VersionManager.js +134 -0
  881. package/dist/test/src/update/index.d.ts +9 -0
  882. package/dist/test/src/update/index.d.ts.map +1 -0
  883. package/dist/test/src/update/index.js +9 -0
  884. package/dist/test/src/utils/filesystem.d.ts +29 -0
  885. package/dist/test/src/utils/filesystem.d.ts.map +1 -0
  886. package/dist/test/src/utils/filesystem.js +94 -0
  887. package/dist/test/src/utils/git.d.ts +32 -0
  888. package/dist/test/src/utils/git.d.ts.map +1 -0
  889. package/dist/test/src/utils/git.js +65 -0
  890. package/dist/test/src/utils/index.d.ts +7 -0
  891. package/dist/test/src/utils/index.d.ts.map +1 -0
  892. package/dist/test/src/utils/index.js +7 -0
  893. package/dist/test/src/utils/logger.d.ts +45 -0
  894. package/dist/test/src/utils/logger.d.ts.map +1 -0
  895. package/dist/test/src/utils/logger.js +91 -0
  896. package/dist/test/src/utils/version.d.ts +25 -0
  897. package/dist/test/src/utils/version.d.ts.map +1 -0
  898. package/dist/test/src/utils/version.js +97 -0
  899. package/dist/test/test/__tests__/integration/helpers/file-utils.d.ts +33 -0
  900. package/dist/test/test/__tests__/integration/helpers/file-utils.d.ts.map +1 -0
  901. package/dist/test/test/__tests__/integration/helpers/file-utils.js +83 -0
  902. package/dist/test/test/__tests__/integration/helpers/test-fixtures.d.ts +26 -0
  903. package/dist/test/test/__tests__/integration/helpers/test-fixtures.d.ts.map +1 -0
  904. package/dist/test/test/__tests__/integration/helpers/test-fixtures.js +95 -0
  905. package/dist/test/test/__tests__/integration/helpers/test-server.d.ts +26 -0
  906. package/dist/test/test/__tests__/integration/helpers/test-server.d.ts.map +1 -0
  907. package/dist/test/test/__tests__/integration/helpers/test-server.js +41 -0
  908. package/dist/test/test/__tests__/integration/setup.d.ts +8 -0
  909. package/dist/test/test/__tests__/integration/setup.d.ts.map +1 -0
  910. package/dist/test/test/__tests__/integration/setup.js +31 -0
  911. package/dist/test/test/__tests__/integration/teardown.d.ts +5 -0
  912. package/dist/test/test/__tests__/integration/teardown.d.ts.map +1 -0
  913. package/dist/test/test/__tests__/integration/teardown.js +23 -0
  914. package/dist/test/test/__tests__/security/framework/RapidSecurityTesting.d.ts +34 -0
  915. package/dist/test/test/__tests__/security/framework/RapidSecurityTesting.d.ts.map +1 -0
  916. package/dist/test/test/__tests__/security/framework/RapidSecurityTesting.js +224 -0
  917. package/dist/test/test/__tests__/security/framework/SecurityTestFramework.d.ts +89 -0
  918. package/dist/test/test/__tests__/security/framework/SecurityTestFramework.d.ts.map +1 -0
  919. package/dist/test/test/__tests__/security/framework/SecurityTestFramework.js +543 -0
  920. package/dist/test/test/__tests__/security/index.d.ts +46 -0
  921. package/dist/test/test/__tests__/security/index.d.ts.map +1 -0
  922. package/dist/test/test/__tests__/security/index.js +98 -0
  923. package/dist/test/test/__tests__/security/setup.d.ts +3 -0
  924. package/dist/test/test/__tests__/security/setup.d.ts.map +1 -0
  925. package/dist/test/test/__tests__/security/setup.js +23 -0
  926. package/dist/tools/debug.d.ts +20 -0
  927. package/dist/tools/debug.d.ts.map +1 -0
  928. package/dist/tools/debug.js +37 -0
  929. package/dist/types/cache.d.ts +8 -0
  930. package/dist/types/cache.d.ts.map +1 -0
  931. package/dist/types/cache.js +5 -0
  932. package/dist/types/collection.d.ts +23 -0
  933. package/dist/types/collection.d.ts.map +1 -0
  934. package/dist/types/collection.js +5 -0
  935. package/dist/types/elements/IElement.d.ts +123 -0
  936. package/dist/types/elements/IElement.d.ts.map +1 -0
  937. package/dist/types/elements/IElement.js +30 -0
  938. package/dist/types/elements/IElementManager.d.ts +65 -0
  939. package/dist/types/elements/IElementManager.d.ts.map +1 -0
  940. package/dist/types/elements/IElementManager.js +6 -0
  941. package/dist/types/elements/IRatingManager.d.ts +109 -0
  942. package/dist/types/elements/IRatingManager.d.ts.map +1 -0
  943. package/dist/types/elements/IRatingManager.js +6 -0
  944. package/dist/types/elements/IReferenceResolver.d.ts +52 -0
  945. package/dist/types/elements/IReferenceResolver.d.ts.map +1 -0
  946. package/dist/types/elements/IReferenceResolver.js +6 -0
  947. package/dist/types/elements/RatingBreakdowns.d.ts +49 -0
  948. package/dist/types/elements/RatingBreakdowns.d.ts.map +1 -0
  949. package/dist/types/elements/RatingBreakdowns.js +6 -0
  950. package/dist/types/elements/index.d.ts +9 -0
  951. package/dist/types/elements/index.d.ts.map +1 -0
  952. package/dist/types/elements/index.js +11 -0
  953. package/dist/types/index.d.ts +9 -0
  954. package/dist/types/index.d.ts.map +1 -0
  955. package/dist/types/index.js +9 -0
  956. package/dist/types/marketplace.d.ts +23 -0
  957. package/dist/types/marketplace.d.ts.map +1 -0
  958. package/dist/types/marketplace.js +5 -0
  959. package/dist/types/mcp.d.ts +84 -0
  960. package/dist/types/mcp.d.ts.map +1 -0
  961. package/dist/types/mcp.js +80 -0
  962. package/dist/types/persona.d.ts +30 -0
  963. package/dist/types/persona.d.ts.map +1 -0
  964. package/dist/types/persona.js +5 -0
  965. package/dist/update/BackupManager.d.ts +46 -0
  966. package/dist/update/BackupManager.d.ts.map +1 -0
  967. package/dist/update/BackupManager.js +261 -0
  968. package/dist/update/DependencyChecker.d.ts +41 -0
  969. package/dist/update/DependencyChecker.d.ts.map +1 -0
  970. package/dist/update/DependencyChecker.js +132 -0
  971. package/dist/update/RateLimiter.d.ts +80 -0
  972. package/dist/update/RateLimiter.d.ts.map +1 -0
  973. package/dist/update/RateLimiter.js +172 -0
  974. package/dist/update/SignatureVerifier.d.ts +71 -0
  975. package/dist/update/SignatureVerifier.d.ts.map +1 -0
  976. package/dist/update/SignatureVerifier.js +214 -0
  977. package/dist/update/UpdateChecker.d.ts +127 -0
  978. package/dist/update/UpdateChecker.d.ts.map +1 -0
  979. package/dist/update/UpdateChecker.js +469 -0
  980. package/dist/update/UpdateManager.d.ts +41 -0
  981. package/dist/update/UpdateManager.d.ts.map +1 -0
  982. package/dist/update/UpdateManager.js +260 -0
  983. package/dist/update/VersionManager.d.ts +31 -0
  984. package/dist/update/VersionManager.d.ts.map +1 -0
  985. package/dist/update/VersionManager.js +134 -0
  986. package/dist/update/index.d.ts +9 -0
  987. package/dist/update/index.d.ts.map +1 -0
  988. package/dist/update/index.js +9 -0
  989. package/dist/utils/filesystem.d.ts +29 -0
  990. package/dist/utils/filesystem.d.ts.map +1 -0
  991. package/dist/utils/filesystem.js +94 -0
  992. package/dist/utils/git.d.ts +32 -0
  993. package/dist/utils/git.d.ts.map +1 -0
  994. package/dist/utils/git.js +65 -0
  995. package/dist/utils/index.d.ts +7 -0
  996. package/dist/utils/index.d.ts.map +1 -0
  997. package/dist/utils/index.js +7 -0
  998. package/dist/utils/logger.d.ts +45 -0
  999. package/dist/utils/logger.d.ts.map +1 -0
  1000. package/dist/utils/logger.js +91 -0
  1001. package/dist/utils/version.d.ts +25 -0
  1002. package/dist/utils/version.d.ts.map +1 -0
  1003. package/dist/utils/version.js +97 -0
  1004. package/package.json +128 -0
@@ -0,0 +1,244 @@
1
+ /**
2
+ * Security Rules - Defines security patterns and checks
3
+ * Based on OWASP Top 10, CWE Top 25, and DollhouseMCP-specific security requirements
4
+ */
5
+ export class SecurityRules {
6
+ /**
7
+ * OWASP Top 10 security rules
8
+ */
9
+ getOWASPRules() {
10
+ return [
11
+ {
12
+ id: 'OWASP-A01-001',
13
+ name: 'Hardcoded Secrets',
14
+ description: 'Potential hardcoded secret or API key detected',
15
+ severity: 'critical',
16
+ category: 'code',
17
+ pattern: /(?:api[_-]?key|secret|password|token|private[_-]?key)\s*[:=]\s*["'][a-zA-Z0-9+/=_-]{10,}["']/gi,
18
+ remediation: 'Use environment variables or secure key management services instead of hardcoding secrets',
19
+ references: ['https://owasp.org/Top10/A01_2021-Broken_Access_Control/'],
20
+ tags: ['high-confidence']
21
+ },
22
+ {
23
+ id: 'OWASP-A03-001',
24
+ name: 'SQL Injection',
25
+ description: 'Potential SQL injection vulnerability',
26
+ severity: 'critical',
27
+ category: 'code',
28
+ pattern: /(?:query|execute)\s*\(\s*['"`].*\$\{[^}]+\}.*['"`]|['"`].*\+\s*[a-zA-Z_]\w*\s*\+.*['"`]\s*\)/g,
29
+ remediation: 'Use parameterized queries or prepared statements',
30
+ references: ['https://owasp.org/Top10/A03_2021-Injection/']
31
+ },
32
+ {
33
+ id: 'OWASP-A03-002',
34
+ name: 'Command Injection',
35
+ description: 'Potential command injection vulnerability',
36
+ severity: 'critical',
37
+ category: 'code',
38
+ pattern: /(?:exec|spawn|execSync|spawnSync)\s*\([^)]*(?:\$\{[^}]+\}|\+\s*[a-zA-Z_]\w*)/g,
39
+ remediation: 'Validate and sanitize all user input before using in system commands',
40
+ references: ['https://owasp.org/Top10/A03_2021-Injection/']
41
+ },
42
+ {
43
+ id: 'OWASP-A03-003',
44
+ name: 'Path Traversal',
45
+ description: 'Potential path traversal vulnerability',
46
+ severity: 'high',
47
+ category: 'code',
48
+ pattern: /(?:readFile|writeFile|readdir|mkdir|rm|unlink)[^(]*\([^)]*(?:\.\.[/\\].*\+|\+.*\.\.[/\\])/g,
49
+ remediation: 'Validate and sanitize file paths, use path.resolve() and check against allowed directories',
50
+ references: ['https://owasp.org/Top10/A03_2021-Injection/']
51
+ },
52
+ {
53
+ id: 'OWASP-A03-004',
54
+ name: 'XSS - Direct HTML Injection',
55
+ description: 'Potential XSS vulnerability through direct HTML injection',
56
+ severity: 'high',
57
+ category: 'code',
58
+ pattern: /innerHTML\s*=\s*[^'"`]*\$\{|dangerouslySetInnerHTML/g,
59
+ remediation: 'Use textContent or proper HTML escaping functions',
60
+ references: ['https://owasp.org/Top10/A03_2021-Injection/']
61
+ },
62
+ {
63
+ id: 'OWASP-A05-001',
64
+ name: 'Insecure Configuration',
65
+ description: 'Security-sensitive configuration detected',
66
+ severity: 'medium',
67
+ category: 'code',
68
+ pattern: /(?:NODE_TLS_REJECT_UNAUTHORIZED|strictSSL|rejectUnauthorized)\s*[:=]\s*(?:false|0|["']false["']|["']0["'])/gi,
69
+ remediation: 'Enable SSL/TLS certificate validation in production',
70
+ references: ['https://owasp.org/Top10/A05_2021-Security_Misconfiguration/']
71
+ },
72
+ {
73
+ id: 'OWASP-A07-001',
74
+ name: 'Weak Authentication',
75
+ description: 'Potential weak authentication mechanism',
76
+ severity: 'high',
77
+ category: 'code',
78
+ pattern: /(?:md5|sha1)\s*\(/gi,
79
+ remediation: 'Use strong hashing algorithms like bcrypt, scrypt, or Argon2 for passwords',
80
+ references: ['https://owasp.org/Top10/A07_2021-Identification_and_Authentication_Failures/']
81
+ }
82
+ ];
83
+ }
84
+ /**
85
+ * CWE Top 25 security rules
86
+ */
87
+ getCWERules() {
88
+ return [
89
+ {
90
+ id: 'CWE-79-001',
91
+ name: 'Reflected XSS',
92
+ description: 'User input reflected without encoding',
93
+ severity: 'high',
94
+ category: 'code',
95
+ pattern: /res\.(?:send|write|end)\s*\([^)]*(?:req\.(?:query|params|body)|request\.)/g,
96
+ remediation: 'Encode all user input before reflecting in responses',
97
+ references: ['https://cwe.mitre.org/data/definitions/79.html']
98
+ },
99
+ {
100
+ id: 'CWE-89-001',
101
+ name: 'SQL String Concatenation',
102
+ description: 'SQL query built using string concatenation',
103
+ severity: 'critical',
104
+ category: 'code',
105
+ pattern: /["'`].*(?:SELECT|INSERT|UPDATE|DELETE|DROP|CREATE|ALTER).*["'`]\s*\+\s*\w+/gi,
106
+ remediation: 'Use parameterized queries instead of string concatenation',
107
+ references: ['https://cwe.mitre.org/data/definitions/89.html']
108
+ },
109
+ {
110
+ id: 'CWE-22-001',
111
+ name: 'Path Manipulation',
112
+ description: 'File path constructed from user input',
113
+ severity: 'high',
114
+ category: 'code',
115
+ pattern: /path\.join\s*\([^)]*(?:req\.|request\.|params|query|body)/g,
116
+ remediation: 'Validate paths against a whitelist and use path.resolve()',
117
+ references: ['https://cwe.mitre.org/data/definitions/22.html']
118
+ },
119
+ {
120
+ id: 'CWE-798-001',
121
+ name: 'Hardcoded Credentials',
122
+ description: 'Credentials hardcoded in source',
123
+ severity: 'critical',
124
+ category: 'code',
125
+ pattern: /(?:username|user|login)\s*[:=]\s*["'][^"']+["'].*(?:password|pass|pwd)\s*[:=]\s*["'][^"']+["']/gi,
126
+ remediation: 'Store credentials in environment variables or secure vaults',
127
+ references: ['https://cwe.mitre.org/data/definitions/798.html']
128
+ }
129
+ ];
130
+ }
131
+ /**
132
+ * DollhouseMCP-specific security rules
133
+ */
134
+ getDollhouseMCPRules() {
135
+ return [
136
+ {
137
+ id: 'DMCP-SEC-001',
138
+ name: 'Unsafe Persona Loading',
139
+ description: 'Persona loaded without validation',
140
+ severity: 'high',
141
+ category: 'custom',
142
+ pattern: /loadPersona\s*\([^)]*\)\s*(?!.*validate)/g,
143
+ remediation: 'Always validate personas before loading using PersonaValidator',
144
+ references: ['DollhouseMCP Security Guidelines']
145
+ },
146
+ {
147
+ id: 'DMCP-SEC-002',
148
+ name: 'Token Validation Bypass',
149
+ description: 'Token used without validation',
150
+ severity: 'critical',
151
+ category: 'custom',
152
+ pattern: /(?:getToken|useToken|token\.use)\s*\([^)]*\)(?!.*(?:validate|verify|check))/gi,
153
+ remediation: 'Always validate tokens using TokenManager.validateToken()',
154
+ references: ['DollhouseMCP Security Guidelines']
155
+ },
156
+ {
157
+ id: 'DMCP-SEC-003',
158
+ name: 'Rate Limiting Missing',
159
+ description: 'API endpoint without rate limiting',
160
+ severity: 'medium',
161
+ category: 'custom',
162
+ check: (content, context) => {
163
+ const findings = [];
164
+ // Check for MCP tool handlers without rate limiting
165
+ const toolPattern = /name:\s*["']([^"']+)["'].*handle:/gs;
166
+ const hasRateLimit = /rateLimiter|checkRateLimit|tokenBucket/i.test(content);
167
+ if (toolPattern.test(content) && !hasRateLimit) {
168
+ findings.push({
169
+ ruleId: 'DMCP-SEC-003',
170
+ severity: 'medium',
171
+ message: 'MCP tool handler without rate limiting',
172
+ remediation: 'Add rate limiting to prevent abuse',
173
+ confidence: 'high'
174
+ });
175
+ }
176
+ return findings;
177
+ },
178
+ remediation: 'Implement rate limiting for all MCP tools',
179
+ references: ['Issue #174 - Rate Limiting Implementation']
180
+ },
181
+ {
182
+ id: 'DMCP-SEC-004',
183
+ name: 'Unicode Validation Missing',
184
+ description: 'User input processed without Unicode normalization',
185
+ severity: 'medium',
186
+ category: 'custom',
187
+ check: (content, context) => {
188
+ const findings = [];
189
+ // Check for user input processing without Unicode validation
190
+ const inputPattern = /(?:req\.|request\.|params|query|body|content)/;
191
+ const hasUnicodeCheck = /UnicodeValidator|normalizeUnicode/i.test(content);
192
+ if (inputPattern.test(content) && !hasUnicodeCheck) {
193
+ findings.push({
194
+ ruleId: 'DMCP-SEC-004',
195
+ severity: 'medium',
196
+ message: 'User input processed without Unicode normalization',
197
+ remediation: 'Use UnicodeValidator.normalize() on all user input',
198
+ confidence: 'medium'
199
+ });
200
+ }
201
+ return findings;
202
+ },
203
+ remediation: 'Apply Unicode normalization to prevent bypass attacks',
204
+ references: ['Issue #162 - Unicode Normalization']
205
+ },
206
+ {
207
+ id: 'DMCP-SEC-005',
208
+ name: 'Unvalidated YAML Content',
209
+ description: 'YAML content parsed without security validation',
210
+ severity: 'high',
211
+ category: 'custom',
212
+ pattern: /yaml\.load\s*\(|parse\s*\([^)]*\.ya?ml/gi,
213
+ remediation: 'Use SecureYamlParser for all YAML parsing',
214
+ references: ['DollhouseMCP Security Guidelines']
215
+ },
216
+ {
217
+ id: 'DMCP-SEC-006',
218
+ name: 'Security Event Not Logged',
219
+ description: 'Security-relevant operation without logging',
220
+ severity: 'low',
221
+ category: 'custom',
222
+ check: (content, context) => {
223
+ const findings = [];
224
+ // Check for security operations without logging
225
+ const securityOps = /(?:authenticate|authorize|validate|sanitize|encrypt|decrypt)/i;
226
+ const hasLogging = /SecurityMonitor\.log|logSecurityEvent/i.test(content);
227
+ if (securityOps.test(content) && !hasLogging) {
228
+ findings.push({
229
+ ruleId: 'DMCP-SEC-006',
230
+ severity: 'low',
231
+ message: 'Security operation without audit logging',
232
+ remediation: 'Add SecurityMonitor.logSecurityEvent() for audit trail',
233
+ confidence: 'medium'
234
+ });
235
+ }
236
+ return findings;
237
+ },
238
+ remediation: 'Log all security-relevant operations for audit trail',
239
+ references: ['DollhouseMCP Security Guidelines']
240
+ }
241
+ ];
242
+ }
243
+ }
244
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiU2VjdXJpdHlSdWxlcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9zZWN1cml0eS9hdWRpdC9ydWxlcy9TZWN1cml0eVJ1bGVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7R0FHRztBQUlILE1BQU0sT0FBTyxhQUFhO0lBQ3hCOztPQUVHO0lBQ0gsYUFBYTtRQUNYLE9BQU87WUFDTDtnQkFDRSxFQUFFLEVBQUUsZUFBZTtnQkFDbkIsSUFBSSxFQUFFLG1CQUFtQjtnQkFDekIsV0FBVyxFQUFFLGdEQUFnRDtnQkFDN0QsUUFBUSxFQUFFLFVBQVU7Z0JBQ3BCLFFBQVEsRUFBRSxNQUFNO2dCQUNoQixPQUFPLEVBQUUsZ0dBQWdHO2dCQUN6RyxXQUFXLEVBQUUsMkZBQTJGO2dCQUN4RyxVQUFVLEVBQUUsQ0FBQyx5REFBeUQsQ0FBQztnQkFDdkUsSUFBSSxFQUFFLENBQUMsaUJBQWlCLENBQUM7YUFDMUI7WUFDRDtnQkFDRSxFQUFFLEVBQUUsZUFBZTtnQkFDbkIsSUFBSSxFQUFFLGVBQWU7Z0JBQ3JCLFdBQVcsRUFBRSx1Q0FBdUM7Z0JBQ3BELFFBQVEsRUFBRSxVQUFVO2dCQUNwQixRQUFRLEVBQUUsTUFBTTtnQkFDaEIsT0FBTyxFQUFFLCtGQUErRjtnQkFDeEcsV0FBVyxFQUFFLGtEQUFrRDtnQkFDL0QsVUFBVSxFQUFFLENBQUMsNkNBQTZDLENBQUM7YUFDNUQ7WUFDRDtnQkFDRSxFQUFFLEVBQUUsZUFBZTtnQkFDbkIsSUFBSSxFQUFFLG1CQUFtQjtnQkFDekIsV0FBVyxFQUFFLDJDQUEyQztnQkFDeEQsUUFBUSxFQUFFLFVBQVU7Z0JBQ3BCLFFBQVEsRUFBRSxNQUFNO2dCQUNoQixPQUFPLEVBQUUsK0VBQStFO2dCQUN4RixXQUFXLEVBQUUsc0VBQXNFO2dCQUNuRixVQUFVLEVBQUUsQ0FBQyw2Q0FBNkMsQ0FBQzthQUM1RDtZQUNEO2dCQUNFLEVBQUUsRUFBRSxlQUFlO2dCQUNuQixJ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QUFDO2FBQ2pEO1lBQ0Q7Z0JBQ0UsRUFBRSxFQUFFLGNBQWM7Z0JBQ2xCLElBQUksRUFBRSwyQkFBMkI7Z0JBQ2pDLFdBQVcsRUFBRSw2Q0FBNkM7Z0JBQzFELFFBQVEsRUFBRSxLQUFLO2dCQUNmLFFBQVEsRUFBRSxRQUFRO2dCQUNsQixLQUFLLEVBQUUsQ0FBQyxPQUFPLEVBQUUsT0FBTyxFQUFFLEVBQUU7b0JBQzFCLE1BQU0sUUFBUSxHQUFzQixFQUFFLENBQUM7b0JBQ3ZDLGdEQUFnRDtvQkFDaEQsTUFBTSxXQUFXLEdBQUcsK0RBQStELENBQUM7b0JBQ3BGLE1BQU0sVUFBVSxHQUFHLHdDQUF3QyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztvQkFFMUUsSUFBSSxXQUFXLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUM7d0JBQzdDLFFBQVEsQ0FBQyxJQUFJLENBQUM7NEJBQ1osTUFBTSxFQUFFLGNBQWM7NEJBQ3RCLFFBQVEsRUFBRSxLQUFjOzRCQUN4QixPQUFPLEVBQUUsMENBQTBDOzRCQUNuRCxXQUFXLEVBQUUsd0RBQXdEOzRCQUNyRSxVQUFVLEVBQUUsUUFBaUI7eUJBQzlCLENBQUMsQ0FBQztvQkFDTCxDQUFDO29CQUVELE9BQU8sUUFBUSxDQUFDO2dCQUNsQixDQUFDO2dCQUNELFdBQVcsRUFBRSxzREFBc0Q7Z0JBQ25FLFVBQVUsRUFBRSxDQUFDLGtDQUFrQyxDQUFDO2FBQ2pEO1NBQ0YsQ0FBQztJQUNKLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogU2VjdXJpdHkgUnVsZXMgLSBEZWZpbmVzIHNlY3VyaXR5IHBhdHRlcm5zIGFuZCBjaGVja3NcbiAqIEJhc2VkIG9uIE9XQVNQIFRvcCAxMCwgQ1dFIFRvcCAyNSwgYW5kIERvbGxob3VzZU1DUC1zcGVjaWZpYyBzZWN1cml0eSByZXF1aXJlbWVudHNcbiAqL1xuXG5pbXBvcnQgdHlwZSB7IFNlY3VyaXR5UnVsZSwgU2VjdXJpdHlGaW5kaW5nIH0gZnJvbSAnLi4vdHlwZXMuanMnO1xuXG5leHBvcnQgY2xhc3MgU2VjdXJpdHlSdWxlcyB7XG4gIC8qKlxuICAgKiBPV0FTUCBUb3AgMTAgc2VjdXJpdHkgcnVsZXNcbiAgICovXG4gIGdldE9XQVNQUnVsZXMoKTogU2VjdXJpdHlSdWxlW10ge1xuICAgIHJldHVybiBbXG4gICAgICB7XG4gICAgICAgIGlkOiAnT1dBU1AtQTAxLTAwMScsXG4gICAgICAgIG5hbWU6ICdIYXJkY29kZWQgU2VjcmV0cycsXG4gICAgICAgIGRlc2NyaXB0aW9uOiAnUG90ZW50aWFsIGhhcmRjb2RlZCBzZWNyZXQgb3IgQVBJIGtleSBkZXRlY3RlZCcsXG4gICAgICAgIHNldmVyaXR5OiAnY3JpdGljYWwnLFxuICAgICAgICBjYXRlZ29yeTogJ2NvZGUnLFxuICAgICAgICBwYXR0ZXJuOiAvKD86YXBpW18tXT9rZXl8c2VjcmV0fHBhc3N3b3JkfHRva2VufHByaXZhdGVbXy1dP2tleSlcXHMqWzo9XVxccypbXCInXVthLXpBLVowLTkrLz1fLV17MTAsfVtcIiddL2dpLFxuICAgICAgICByZW1lZGlhdGlvbjogJ1VzZSBlbnZpcm9ubWVudCB2YXJpYWJsZXMgb3Igc2VjdXJlIGtleSBtYW5hZ2VtZW50IHNlcnZpY2VzIGluc3RlYWQgb2YgaGFyZGNvZGluZyBzZWNyZXRzJyxcbiAgICAgICAgcmVmZXJlbmNlczogWydodHRwczovL293YXNwLm9yZy9Ub3AxMC9BMDFfMjAyMS1Ccm9rZW5fQWNjZXNzX0NvbnRyb2wvJ10sXG4gICAgICAgIHRhZ3M6IFsnaGlnaC1jb25maWRlbmNlJ11cbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGlkOiAnT1dBU1AtQTAzLTAwMScsXG4gICAgICAgIG5hbWU6ICdTUUwgSW5qZWN0aW9uJyxcbiAgICAgICAgZGVzY3JpcHRpb246ICdQb3RlbnRpYWwgU1FMIGluamVjdGlvbiB2dWxuZXJhYmlsaXR5JyxcbiAgICAgICAgc2V2ZXJpdHk6ICdjcml0aWNhbCcsXG4gICAgICAgIGNhdGVnb3J5OiAnY29kZScsXG4gICAgICAgIHBhdHRlcm46IC8oPzpxdWVyeXxleGVjdXRlKVxccypcXChcXHMqWydcImBdLipcXCRcXHtbXn1dK1xcfS4qWydcImBdfFsnXCJgXS4qXFwrXFxzKlthLXpBLVpfXVxcdypcXHMqXFwrLipbJ1wiYF1cXHMqXFwpL2csXG4gICAgICAgIHJlbWVkaWF0aW9uOiAnVXNlIHBhcmFtZXRlcml6ZWQgcXVlcmllcyBvciBwcmVwYXJlZCBzdGF0ZW1lbnRzJyxcbiAgICAgICAgcmVmZXJlbmNlczogWydodHRwczovL293YXNwLm9yZy9Ub3AxMC9BMDNfMjAyMS1JbmplY3Rpb24vJ11cbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGlkOiAnT1dBU1AtQTAzLTAwMicsXG4gICAgICAgIG5hbWU6ICdDb21tYW5kIEluamVjdGlvbicsXG4gICAgICAgIGRlc2NyaXB0aW9uOiAnUG90ZW50aWFsIGNvbW1hbmQgaW5qZWN0aW9uIHZ1bG5lcmFiaWxpdHknLFxuICAgICAgICBzZXZlcml0eTogJ2NyaXRpY2FsJyxcbiAgICAgICAgY2F0ZWdvcnk6ICdjb2RlJyxcbiAgICAgICAgcGF0dGVybjogLyg/OmV4ZWN8c3Bhd258ZXhlY1N5bmN8c3Bhd25TeW5jKVxccypcXChbXildKig/OlxcJFxce1tefV0rXFx9fFxcK1xccypbYS16QS1aX11cXHcqKS9nLFxuICAgICAgICByZW1lZGlhdGlvbjogJ1ZhbGlkYXRlIGFuZCBzYW5pdGl6ZSBhbGwgdXNlciBpbnB1dCBiZWZvcmUgdXNpbmcgaW4gc3lzdGVtIGNvbW1hbmRzJyxcbiAgICAgICAgcmVmZXJlbmNlczogWydodHRwczovL293YXNwLm9yZy9Ub3AxMC9BMDNfMjAyMS1JbmplY3Rpb24vJ11cbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGlkOiAnT1dBU1AtQTAzLTAwMycsXG4gICAgICAgIG5hbWU6ICdQYXRoIFRyYXZlcnNhbCcsXG4gICAgICAgIGRlc2NyaXB0aW9uOiAnUG90ZW50aWFsIHBhdGggdHJhdmVyc2FsIHZ1bG5lcmFiaWxpdHknLFxuICAgICAgICBzZXZlcml0eTogJ2hpZ2gnLFxuICAgICAgICBjYXRlZ29yeTogJ2NvZGUnLFxuICAgICAgICBwYXR0ZXJuOiAvKD86cmVhZEZpbGV8d3JpdGVGaWxlfHJlYWRkaXJ8bWtkaXJ8cm18dW5saW5rKVteKF0qXFwoW14pXSooPzpcXC5cXC5bL1xcXFxdLipcXCt8XFwrLipcXC5cXC5bL1xcXFxdKS9nLFxuICAgICAgICByZW1lZGlhdGlvbjogJ1ZhbGlkYXRlIGFuZCBzYW5pdGl6ZSBmaWxlIHBhdGhzLCB1c2UgcGF0aC5yZXNvbHZlKCkgYW5kIGNoZWNrIGFnYWluc3QgYWxsb3dlZCBkaXJlY3RvcmllcycsXG4gICAgICAgIHJlZmVyZW5jZXM6IFsnaHR0cHM6Ly9vd2FzcC5vcmcvVG9wMTAvQTAzXzIwMjEtSW5qZWN0aW9uLyddXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBpZDogJ09XQVNQLUEwMy0wMDQnLFxuICAgICAgICBuYW1lOiAnWFNTIC0gRGlyZWN0IEhUTUwgSW5qZWN0aW9uJyxcbiAgICAgICAgZGVzY3JpcHRpb246ICdQb3RlbnRpYWwgWFNTIHZ1bG5lcmFiaWxpdHkgdGhyb3VnaCBkaXJlY3QgSFRNTCBpbmplY3Rpb24nLFxuICAgICAgICBzZXZlcml0eTogJ2hpZ2gnLFxuICAgICAgICBjYXRlZ29yeTogJ2NvZGUnLFxuICAgICAgICBwYXR0ZXJuOiAvaW5uZXJIVE1MXFxzKj1cXHMqW14nXCJgXSpcXCRcXHt8ZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUwvZyxcbiAgICAgICAgcmVtZWRpYXRpb246ICdVc2UgdGV4dENvbnRlbnQgb3IgcHJvcGVyIEhUTUwgZXNjYXBpbmcgZnVuY3Rpb25zJyxcbiAgICAgICAgcmVmZXJlbmNlczogWydodHRwczovL293YXNwLm9yZy9Ub3AxMC9BMDNfMjAyMS1JbmplY3Rpb24vJ11cbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGlkOiAnT1dBU1AtQTA1LTAwMScsXG4gICAgICAgIG5hbWU6ICdJbnNlY3VyZSBDb25maWd1cmF0aW9uJyxcbiAgICAgICAgZGVzY3JpcHRpb246ICdTZWN1cml0eS1zZW5zaXRpdmUgY29uZmlndXJhdGlvbiBkZXRlY3RlZCcsXG4gICAgICAgIHNldmVyaXR5OiAnbWVkaXVtJyxcbiAgICAgICAgY2F0ZWdvcnk6ICdjb2RlJyxcbiAgICAgICAgcGF0dGVybjogLyg/Ok5PREVfVExTX1JFSkVDVF9VTkFVVEhPUklaRUR8c3RyaWN0U1NMfHJlamVjdFVuYXV0aG9yaXplZClcXHMqWzo9XVxccyooPzpmYWxzZXwwfFtcIiddZmFsc2VbXCInXXxbXCInXTBbXCInXSkvZ2ksXG4gICAgICAgIHJlbWVkaWF0aW9uOiAnRW5hYmxlIFNTTC9UTFMgY2VydGlmaWNhdGUgdmFsaWRhdGlvbiBpbiBwcm9kdWN0aW9uJyxcbiAgICAgICAgcmVmZXJlbmNlczogWydodHRwczovL293YXNwLm9yZy9Ub3AxMC9BMDVfMjAyMS1TZWN1cml0eV9NaXNjb25maWd1cmF0aW9uLyddXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBpZDogJ09XQVNQLUEwNy0wMDEnLFxuICAgICAgICBuYW1lOiAnV2VhayBBdXRoZW50aWNhdGlvbicsXG4gICAgICAgIGRlc2NyaXB0aW9uOiAnUG90ZW50aWFsIHdlYWsgYXV0aGVudGljYXRpb24gbWVjaGFuaXNtJyxcbiAgICAgICAgc2V2ZXJpdHk6ICdoaWdoJyxcbiAgICAgICAgY2F0ZWdvcnk6ICdjb2RlJyxcbiAgICAgICAgcGF0dGVybjogLyg/Om1kNXxzaGExKVxccypcXCgvZ2ksXG4gICAgICAgIHJlbWVkaWF0aW9uOiAnVXNlIHN0cm9uZyBoYXNoaW5nIGFsZ29yaXRobXMgbGlrZSBiY3J5cHQsIHNjcnlwdCwgb3IgQXJnb24yIGZvciBwYXNzd29yZHMnLFxuICAgICAgICByZWZlcmVuY2VzOiBbJ2h0dHBzOi8vb3dhc3Aub3JnL1RvcDEwL0EwN18yMDIxLUlkZW50aWZpY2F0aW9uX2FuZF9BdXRoZW50aWNhdGlvbl9GYWlsdXJlcy8nXVxuICAgICAgfVxuICAgIF07XG4gIH1cblxuICAvKipcbiAgICogQ1dFIFRvcCAyNSBzZWN1cml0eSBydWxlc1xuICAgKi9cbiAgZ2V0Q1dFUnVsZXMoKTogU2VjdXJpdHlSdWxlW10ge1xuICAgIHJldHVybiBbXG4gICAgICB7XG4gICAgICAgIGlkOiAnQ1dFLTc5LTAwMScsXG4gICAgICAgIG5hbWU6ICdSZWZsZWN0ZWQgWFNTJyxcbiAgICAgICAgZGVzY3JpcHRpb246ICdVc2VyIGlucHV0IHJlZmxlY3RlZCB3aXRob3V0IGVuY29kaW5nJyxcbiAgICAgICAgc2V2ZXJpdHk6ICdoaWdoJyxcbiAgICAgICAgY2F0ZWdvcnk6ICdjb2RlJyxcbiAgICAgICAgcGF0dGVybjogL3Jlc1xcLig/OnNlbmR8d3JpdGV8ZW5kKVxccypcXChbXildKig/OnJlcVxcLig/OnF1ZXJ5fHBhcmFtc3xib2R5KXxyZXF1ZXN0XFwuKS9nLFxuICAgICAgICByZW1lZGlhdGlvbjogJ0VuY29kZSBhbGwgdXNlciBpbnB1dCBiZWZvcmUgcmVmbGVjdGluZyBpbiByZXNwb25zZXMnLFxuICAgICAgICByZWZlcmVuY2VzOiBbJ2h0dHBzOi8vY3dlLm1pdHJlLm9yZy9kYXRhL2RlZmluaXRpb25zLzc5Lmh0bWwnXVxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgaWQ6ICdDV0UtODktMDAxJyxcbiAgICAgICAgbmFtZTogJ1NRTCBTdHJpbmcgQ29uY2F0ZW5hdGlvbicsXG4gICAgICAgIGRlc2NyaXB0aW9uOiAnU1FMIHF1ZXJ5IGJ1aWx0IHVzaW5nIHN0cmluZyBjb25jYXRlbmF0aW9uJyxcbiAgICAgICAgc2V2ZXJpdHk6ICdjcml0aWNhbCcsXG4gICAgICAgIGNhdGVnb3J5OiAnY29kZScsXG4gICAgICAgIHBhdHRlcm46IC9bXCInYF0uKig/OlNFTEVDVHxJTlNFUlR8VVBEQVRFfERFTEVURXxEUk9QfENSRUFURXxBTFRFUikuKltcIidgXVxccypcXCtcXHMqXFx3Ky9naSxcbiAgICAgICAgcmVtZWRpYXRpb246ICdVc2UgcGFyYW1ldGVyaXplZCBxdWVyaWVzIGluc3RlYWQgb2Ygc3RyaW5nIGNvbmNhdGVuYXRpb24nLFxuICAgICAgICByZWZlcmVuY2VzOiBbJ2h0dHBzOi8vY3dlLm1pdHJlLm9yZy9kYXRhL2RlZmluaXRpb25zLzg5Lmh0bWwnXVxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgaWQ6ICdDV0UtMjItMDAxJyxcbiAgICAgICAgbmFtZTogJ1BhdGggTWFuaXB1bGF0aW9uJyxcbiAgICAgICAgZGVzY3JpcHRpb246ICdGaWxlIHBhdGggY29uc3RydWN0ZWQgZnJvbSB1c2VyIGlucHV0JyxcbiAgICAgICAgc2V2ZXJpdHk6ICdoaWdoJyxcbiAgICAgICAgY2F0ZWdvcnk6ICdjb2RlJyxcbiAgICAgICAgcGF0dGVybjogL3BhdGhcXC5qb2luXFxzKlxcKFteKV0qKD86cmVxXFwufHJlcXVlc3RcXC58cGFyYW1zfHF1ZXJ5fGJvZHkpL2csXG4gICAgICAgIHJlbWVkaWF0aW9uOiAnVmFsaWRhdGUgcGF0aHMgYWdhaW5zdCBhIHdoaXRlbGlzdCBhbmQgdXNlIHBhdGgucmVzb2x2ZSgpJyxcbiAgICAgICAgcmVmZXJlbmNlczogWydodHRwczovL2N3ZS5taXRyZS5vcmcvZGF0YS9kZWZpbml0aW9ucy8yMi5odG1sJ11cbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGlkOiAnQ1dFLTc5OC0wMDEnLFxuICAgICAgICBuYW1lOiAnSGFyZGNvZGVkIENyZWRlbnRpYWxzJyxcbiAgICAgICAgZGVzY3JpcHRpb246ICdDcmVkZW50aWFscyBoYXJkY29kZWQgaW4gc291cmNlJyxcbiAgICAgICAgc2V2ZXJpdHk6ICdjcml0aWNhbCcsXG4gICAgICAgIGNhdGVnb3J5OiAnY29kZScsXG4gICAgICAgIHBhdHRlcm46IC8oPzp1c2VybmFtZXx1c2VyfGxvZ2luKVxccypbOj1dXFxzKltcIiddW15cIiddK1tcIiddLiooPzpwYXNzd29yZHxwYXNzfHB3ZClcXHMqWzo9XVxccypbXCInXVteXCInXStbXCInXS9naSxcbiAgICAgICAgcmVtZWRpYXRpb246ICdTdG9yZSBjcmVkZW50aWFscyBpbiBlbnZpcm9ubWVudCB2YXJpYWJsZXMgb3Igc2VjdXJlIHZhdWx0cycsXG4gICAgICAgIHJlZmVyZW5jZXM6IFsnaHR0cHM6Ly9jd2UubWl0cmUub3JnL2RhdGEvZGVmaW5pdGlvbnMvNzk4Lmh0bWwnXVxuICAgICAgfVxuICAgIF07XG4gIH1cblxuICAvKipcbiAgICogRG9sbGhvdXNlTUNQLXNwZWNpZmljIHNlY3VyaXR5IHJ1bGVzXG4gICAqL1xuICBnZXREb2xsaG91c2VNQ1BSdWxlcygpOiBTZWN1cml0eVJ1bGVbXSB7XG4gICAgcmV0dXJuIFtcbiAgICAgIHtcbiAgICAgICAgaWQ6ICdETUNQLVNFQy0wMDEnLFxuICAgICAgICBuYW1lOiAnVW5zYWZlIFBlcnNvbmEgTG9hZGluZycsXG4gICAgICAgIGRlc2NyaXB0aW9uOiAnUGVyc29uYSBsb2FkZWQgd2l0aG91dCB2YWxpZGF0aW9uJyxcbiAgICAgICAgc2V2ZXJpdHk6ICdoaWdoJyxcbiAgICAgICAgY2F0ZWdvcnk6ICdjdXN0b20nLFxuICAgICAgICBwYXR0ZXJuOiAvbG9hZFBlcnNvbmFcXHMqXFwoW14pXSpcXClcXHMqKD8hLip2YWxpZGF0ZSkvZyxcbiAgICAgICAgcmVtZWRpYXRpb246ICdBbHdheXMgdmFsaWRhdGUgcGVyc29uYXMgYmVmb3JlIGxvYWRpbmcgdXNpbmcgUGVyc29uYVZhbGlkYXRvcicsXG4gICAgICAgIHJlZmVyZW5jZXM6IFsnRG9sbGhvdXNlTUNQIFNlY3VyaXR5IEd1aWRlbGluZXMnXVxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgaWQ6ICdETUNQLVNFQy0wMDInLFxuICAgICAgICBuYW1lOiAnVG9rZW4gVmFsaWRhdGlvbiBCeXBhc3MnLFxuICAgICAgICBkZXNjcmlwdGlvbjogJ1Rva2VuIHVzZWQgd2l0aG91dCB2YWxpZGF0aW9uJyxcbiAgICAgICAgc2V2ZXJpdHk6ICdjcml0aWNhbCcsXG4gICAgICAgIGNhdGVnb3J5OiAnY3VzdG9tJyxcbiAgICAgICAgcGF0dGVybjogLyg/OmdldFRva2VufHVzZVRva2VufHRva2VuXFwudXNlKVxccypcXChbXildKlxcKSg/IS4qKD86dmFsaWRhdGV8dmVyaWZ5fGNoZWNrKSkvZ2ksXG4gICAgICAgIHJlbWVkaWF0aW9uOiAnQWx3YXlzIHZhbGlkYXRlIHRva2VucyB1c2luZyBUb2tlbk1hbmFnZXIudmFsaWRhdGVUb2tlbigpJyxcbiAgICAgICAgcmVmZXJlbmNlczogWydEb2xsaG91c2VNQ1AgU2VjdXJpdHkgR3VpZGVsaW5lcyddXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBpZDogJ0RNQ1AtU0VDLTAwMycsXG4gICAgICAgIG5hbWU6ICdSYXRlIExpbWl0aW5nIE1pc3NpbmcnLFxuICAgICAgICBkZXNjcmlwdGlvbjogJ0FQSSBlbmRwb2ludCB3aXRob3V0IHJhdGUgbGltaXRpbmcnLFxuICAgICAgICBzZXZlcml0eTogJ21lZGl1bScsXG4gICAgICAgIGNhdGVnb3J5OiAnY3VzdG9tJyxcbiAgICAgICAgY2hlY2s6IChjb250ZW50LCBjb250ZXh0KSA9PiB7XG4gICAgICAgICAgY29uc3QgZmluZGluZ3M6IFNlY3VyaXR5RmluZGluZ1tdID0gW107XG4gICAgICAgICAgLy8gQ2hlY2sgZm9yIE1DUCB0b29sIGhhbmRsZXJzIHdpdGhvdXQgcmF0ZSBsaW1pdGluZ1xuICAgICAgICAgIGNvbnN0IHRvb2xQYXR0ZXJuID0gL25hbWU6XFxzKltcIiddKFteXCInXSspW1wiJ10uKmhhbmRsZTovZ3M7XG4gICAgICAgICAgY29uc3QgaGFzUmF0ZUxpbWl0ID0gL3JhdGVMaW1pdGVyfGNoZWNrUmF0ZUxpbWl0fHRva2VuQnVja2V0L2kudGVzdChjb250ZW50KTtcbiAgICAgICAgICBcbiAgICAgICAgICBpZiAodG9vbFBhdHRlcm4udGVzdChjb250ZW50KSAmJiAhaGFzUmF0ZUxpbWl0KSB7XG4gICAgICAgICAgICBmaW5kaW5ncy5wdXNoKHtcbiAgICAgICAgICAgICAgcnVsZUlkOiAnRE1DUC1TRUMtMDAzJyxcbiAgICAgICAgICAgICAgc2V2ZXJpdHk6ICdtZWRpdW0nIGFzIGNvbnN0LFxuICAgICAgICAgICAgICBtZXNzYWdlOiAnTUNQIHRvb2wgaGFuZGxlciB3aXRob3V0IHJhdGUgbGltaXRpbmcnLFxuICAgICAgICAgICAgICByZW1lZGlhdGlvbjogJ0FkZCByYXRlIGxpbWl0aW5nIHRvIHByZXZlbnQgYWJ1c2UnLFxuICAgICAgICAgICAgICBjb25maWRlbmNlOiAnaGlnaCcgYXMgY29uc3RcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH1cbiAgICAgICAgICBcbiAgICAgICAgICByZXR1cm4gZmluZGluZ3M7XG4gICAgICAgIH0sXG4gICAgICAgIHJlbWVkaWF0aW9uOiAnSW1wbGVtZW50IHJhdGUgbGltaXRpbmcgZm9yIGFsbCBNQ1AgdG9vbHMnLFxuICAgICAgICByZWZlcmVuY2VzOiBbJ0lzc3VlICMxNzQgLSBSYXRlIExpbWl0aW5nIEltcGxlbWVudGF0aW9uJ11cbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGlkOiAnRE1DUC1TRUMtMDA0JyxcbiAgICAgICAgbmFtZTogJ1VuaWNvZGUgVmFsaWRhdGlvbiBNaXNzaW5nJyxcbiAgICAgICAgZGVzY3JpcHRpb246ICdVc2VyIGlucHV0IHByb2Nlc3NlZCB3aXRob3V0IFVuaWNvZGUgbm9ybWFsaXphdGlvbicsXG4gICAgICAgIHNldmVyaXR5OiAnbWVkaXVtJyxcbiAgICAgICAgY2F0ZWdvcnk6ICdjdXN0b20nLFxuICAgICAgICBjaGVjazogKGNvbnRlbnQsIGNvbnRleHQpID0+IHtcbiAgICAgICAgICBjb25zdCBmaW5kaW5nczogU2VjdXJpdHlGaW5kaW5nW10gPSBbXTtcbiAgICAgICAgICAvLyBDaGVjayBmb3IgdXNlciBpbnB1dCBwcm9jZXNzaW5nIHdpdGhvdXQgVW5pY29kZSB2YWxpZGF0aW9uXG4gICAgICAgICAgY29uc3QgaW5wdXRQYXR0ZXJuID0gLyg/OnJlcVxcLnxyZXF1ZXN0XFwufHBhcmFtc3xxdWVyeXxib2R5fGNvbnRlbnQpLztcbiAgICAgICAgICBjb25zdCBoYXNVbmljb2RlQ2hlY2sgPSAvVW5pY29kZVZhbGlkYXRvcnxub3JtYWxpemVVbmljb2RlL2kudGVzdChjb250ZW50KTtcbiAgICAgICAgICBcbiAgICAgICAgICBpZiAoaW5wdXRQYXR0ZXJuLnRlc3QoY29udGVudCkgJiYgIWhhc1VuaWNvZGVDaGVjaykge1xuICAgICAgICAgICAgZmluZGluZ3MucHVzaCh7XG4gICAgICAgICAgICAgIHJ1bGVJZDogJ0RNQ1AtU0VDLTAwNCcsXG4gICAgICAgICAgICAgIHNldmVyaXR5OiAnbWVkaXVtJyBhcyBjb25zdCxcbiAgICAgICAgICAgICAgbWVzc2FnZTogJ1VzZXIgaW5wdXQgcHJvY2Vzc2VkIHdpdGhvdXQgVW5pY29kZSBub3JtYWxpemF0aW9uJyxcbiAgICAgICAgICAgICAgcmVtZWRpYXRpb246ICdVc2UgVW5pY29kZVZhbGlkYXRvci5ub3JtYWxpemUoKSBvbiBhbGwgdXNlciBpbnB1dCcsXG4gICAgICAgICAgICAgIGNvbmZpZGVuY2U6ICdtZWRpdW0nIGFzIGNvbnN0XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9XG4gICAgICAgICAgXG4gICAgICAgICAgcmV0dXJuIGZpbmRpbmdzO1xuICAgICAgICB9LFxuICAgICAgICByZW1lZGlhdGlvbjogJ0FwcGx5IFVuaWNvZGUgbm9ybWFsaXphdGlvbiB0byBwcmV2ZW50IGJ5cGFzcyBhdHRhY2tzJyxcbiAgICAgICAgcmVmZXJlbmNlczogWydJc3N1ZSAjMTYyIC0gVW5pY29kZSBOb3JtYWxpemF0aW9uJ11cbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGlkOiAnRE1DUC1TRUMtMDA1JyxcbiAgICAgICAgbmFtZTogJ1VudmFsaWRhdGVkIFlBTUwgQ29udGVudCcsXG4gICAgICAgIGRlc2NyaXB0aW9uOiAnWUFNTCBjb250ZW50IHBhcnNlZCB3aXRob3V0IHNlY3VyaXR5IHZhbGlkYXRpb24nLFxuICAgICAgICBzZXZlcml0eTogJ2hpZ2gnLFxuICAgICAgICBjYXRlZ29yeTogJ2N1c3RvbScsXG4gICAgICAgIHBhdHRlcm46IC95YW1sXFwubG9hZFxccypcXCh8cGFyc2VcXHMqXFwoW14pXSpcXC55YT9tbC9naSxcbiAgICAgICAgcmVtZWRpYXRpb246ICdVc2UgU2VjdXJlWWFtbFBhcnNlciBmb3IgYWxsIFlBTUwgcGFyc2luZycsXG4gICAgICAgIHJlZmVyZW5jZXM6IFsnRG9sbGhvdXNlTUNQIFNlY3VyaXR5IEd1aWRlbGluZXMnXVxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgaWQ6ICdETUNQLVNFQy0wMDYnLFxuICAgICAgICBuYW1lOiAnU2VjdXJpdHkgRXZlbnQgTm90IExvZ2dlZCcsXG4gICAgICAgIGRlc2NyaXB0aW9uOiAnU2VjdXJpdHktcmVsZXZhbnQgb3BlcmF0aW9uIHdpdGhvdXQgbG9nZ2luZycsXG4gICAgICAgIHNldmVyaXR5OiAnbG93JyxcbiAgICAgICAgY2F0ZWdvcnk6ICdjdXN0b20nLFxuICAgICAgICBjaGVjazogKGNvbnRlbnQsIGNvbnRleHQpID0+IHtcbiAgICAgICAgICBjb25zdCBmaW5kaW5nczogU2VjdXJpdHlGaW5kaW5nW10gPSBbXTtcbiAgICAgICAgICAvLyBDaGVjayBmb3Igc2VjdXJpdHkgb3BlcmF0aW9ucyB3aXRob3V0IGxvZ2dpbmdcbiAgICAgICAgICBjb25zdCBzZWN1cml0eU9wcyA9IC8oPzphdXRoZW50aWNhdGV8YXV0aG9yaXplfHZhbGlkYXRlfHNhbml0aXplfGVuY3J5cHR8ZGVjcnlwdCkvaTtcbiAgICAgICAgICBjb25zdCBoYXNMb2dnaW5nID0gL1NlY3VyaXR5TW9uaXRvclxcLmxvZ3xsb2dTZWN1cml0eUV2ZW50L2kudGVzdChjb250ZW50KTtcbiAgICAgICAgICBcbiAgICAgICAgICBpZiAoc2VjdXJpdHlPcHMudGVzdChjb250ZW50KSAmJiAhaGFzTG9nZ2luZykge1xuICAgICAgICAgICAgZmluZGluZ3MucHVzaCh7XG4gICAgICAgICAgICAgIHJ1bGVJZDogJ0RNQ1AtU0VDLTAwNicsXG4gICAgICAgICAgICAgIHNldmVyaXR5OiAnbG93JyBhcyBjb25zdCxcbiAgICAgICAgICAgICAgbWVzc2FnZTogJ1NlY3VyaXR5IG9wZXJhdGlvbiB3aXRob3V0IGF1ZGl0IGxvZ2dpbmcnLFxuICAgICAgICAgICAgICByZW1lZGlhdGlvbjogJ0FkZCBTZWN1cml0eU1vbml0b3IubG9nU2VjdXJpdHlFdmVudCgpIGZvciBhdWRpdCB0cmFpbCcsXG4gICAgICAgICAgICAgIGNvbmZpZGVuY2U6ICdtZWRpdW0nIGFzIGNvbnN0XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9XG4gICAgICAgICAgXG4gICAgICAgICAgcmV0dXJuIGZpbmRpbmdzO1xuICAgICAgICB9LFxuICAgICAgICByZW1lZGlhdGlvbjogJ0xvZyBhbGwgc2VjdXJpdHktcmVsZXZhbnQgb3BlcmF0aW9ucyBmb3IgYXVkaXQgdHJhaWwnLFxuICAgICAgICByZWZlcmVuY2VzOiBbJ0RvbGxob3VzZU1DUCBTZWN1cml0eSBHdWlkZWxpbmVzJ11cbiAgICAgIH1cbiAgICBdO1xuICB9XG59Il19
@@ -0,0 +1,47 @@
1
+ /**
2
+ * Code Scanner - Static code analysis for security vulnerabilities
3
+ * Detects common security issues in source code
4
+ */
5
+ import type { SecurityScanner, SecurityFinding, ScanContext } from '../types.js';
6
+ interface CodeScannerConfig {
7
+ enabled: boolean;
8
+ rules: string[];
9
+ exclude?: string[];
10
+ }
11
+ export declare class CodeScanner implements SecurityScanner {
12
+ name: string;
13
+ private config;
14
+ private rules;
15
+ constructor(config: CodeScannerConfig);
16
+ /**
17
+ * Load security rules based on configuration
18
+ */
19
+ private loadRules;
20
+ /**
21
+ * Scan files for security vulnerabilities
22
+ */
23
+ scan(context: ScanContext): Promise<SecurityFinding[]>;
24
+ /**
25
+ * Get list of files to scan
26
+ */
27
+ private getFilesToScan;
28
+ /**
29
+ * Scan a single file for vulnerabilities
30
+ */
31
+ private scanFile;
32
+ /**
33
+ * Find pattern matches in content
34
+ */
35
+ private findPatternMatches;
36
+ /**
37
+ * Convert string index to line and column
38
+ */
39
+ private getLineAndColumn;
40
+ /**
41
+ * Calculate confidence level for a finding
42
+ */
43
+ private calculateConfidence;
44
+ isEnabled(): boolean;
45
+ }
46
+ export {};
47
+ //# sourceMappingURL=CodeScanner.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CodeScanner.d.ts","sourceRoot":"","sources":["../../../../../../src/security/audit/scanners/CodeScanner.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAE,eAAe,EAAE,WAAW,EAAgB,MAAM,aAAa,CAAC;AAM/F,UAAU,iBAAiB;IACzB,OAAO,EAAE,OAAO,CAAC;IACjB,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;CACpB;AAED,qBAAa,WAAY,YAAW,eAAe;IACjD,IAAI,SAAiB;IACrB,OAAO,CAAC,MAAM,CAAoB;IAClC,OAAO,CAAC,KAAK,CAAsB;gBAEvB,MAAM,EAAE,iBAAiB;IAKrC;;OAEG;IACH,OAAO,CAAC,SAAS;IAqBjB;;OAEG;IACG,IAAI,CAAC,OAAO,EAAE,WAAW,GAAG,OAAO,CAAC,eAAe,EAAE,CAAC;IAkB5D;;OAEG;YACW,cAAc;IAiB5B;;OAEG;YACW,QAAQ;IAkDtB;;OAEG;IACH,OAAO,CAAC,kBAAkB;IA4B1B;;OAEG;IACH,OAAO,CAAC,gBAAgB;IAQxB;;OAEG;IACH,OAAO,CAAC,mBAAmB;IAwB3B,SAAS,IAAI,OAAO;CAGrB"}
@@ -0,0 +1,174 @@
1
+ /**
2
+ * Code Scanner - Static code analysis for security vulnerabilities
3
+ * Detects common security issues in source code
4
+ */
5
+ import { SecurityRules } from '../rules/SecurityRules.js';
6
+ import fs from 'fs/promises';
7
+ import path from 'path';
8
+ import { glob } from 'glob';
9
+ export class CodeScanner {
10
+ name = 'CodeScanner';
11
+ config;
12
+ rules = [];
13
+ constructor(config) {
14
+ this.config = config;
15
+ this.loadRules();
16
+ }
17
+ /**
18
+ * Load security rules based on configuration
19
+ */
20
+ loadRules() {
21
+ const ruleLoader = new SecurityRules();
22
+ for (const ruleSet of this.config.rules) {
23
+ switch (ruleSet) {
24
+ case 'OWASP-Top-10':
25
+ this.rules.push(...ruleLoader.getOWASPRules());
26
+ break;
27
+ case 'CWE-Top-25':
28
+ this.rules.push(...ruleLoader.getCWERules());
29
+ break;
30
+ case 'DollhouseMCP-Security':
31
+ this.rules.push(...ruleLoader.getDollhouseMCPRules());
32
+ break;
33
+ default:
34
+ // Custom rule sets can be added here
35
+ break;
36
+ }
37
+ }
38
+ }
39
+ /**
40
+ * Scan files for security vulnerabilities
41
+ */
42
+ async scan(context) {
43
+ const findings = [];
44
+ const files = await this.getFilesToScan(context.projectRoot);
45
+ for (const file of files) {
46
+ try {
47
+ const content = await fs.readFile(file, 'utf-8');
48
+ const fileFindings = await this.scanFile(file, content, context);
49
+ findings.push(...fileFindings);
50
+ }
51
+ catch (error) {
52
+ // Skip files that can't be read
53
+ continue;
54
+ }
55
+ }
56
+ return findings;
57
+ }
58
+ /**
59
+ * Get list of files to scan
60
+ */
61
+ async getFilesToScan(projectRoot) {
62
+ const patterns = ['**/*.ts', '**/*.js', '**/*.jsx', '**/*.tsx', '**/*.json', '**/*.yml', '**/*.yaml'];
63
+ const ignore = this.config.exclude || ['node_modules/**', 'dist/**', 'coverage/**'];
64
+ const files = [];
65
+ for (const pattern of patterns) {
66
+ const matches = await glob(pattern, {
67
+ cwd: projectRoot,
68
+ ignore,
69
+ absolute: true
70
+ });
71
+ files.push(...matches);
72
+ }
73
+ return files;
74
+ }
75
+ /**
76
+ * Scan a single file for vulnerabilities
77
+ */
78
+ async scanFile(filePath, content, context) {
79
+ const findings = [];
80
+ const lines = content.split('\n');
81
+ const fileContext = {
82
+ ...context,
83
+ fileType: path.extname(filePath),
84
+ isTest: filePath.includes('test') || filePath.includes('spec')
85
+ };
86
+ for (const rule of this.rules) {
87
+ // Skip test-specific rules in non-test files
88
+ if (rule.tags?.includes('test-only') && !fileContext.isTest) {
89
+ continue;
90
+ }
91
+ // Pattern-based detection
92
+ if (rule.pattern) {
93
+ const matches = this.findPatternMatches(content, lines, rule);
94
+ for (const match of matches) {
95
+ findings.push({
96
+ ruleId: rule.id,
97
+ severity: rule.severity,
98
+ message: `${rule.name}: ${match.message}`,
99
+ file: filePath,
100
+ line: match.line,
101
+ column: match.column,
102
+ code: match.code,
103
+ remediation: rule.remediation,
104
+ confidence: this.calculateConfidence(match, rule, fileContext)
105
+ });
106
+ }
107
+ }
108
+ // Custom check function
109
+ if (rule.check) {
110
+ const customFindings = rule.check(content, fileContext);
111
+ findings.push(...customFindings.map(f => ({
112
+ ...f,
113
+ file: filePath
114
+ })));
115
+ }
116
+ }
117
+ return findings;
118
+ }
119
+ /**
120
+ * Find pattern matches in content
121
+ */
122
+ findPatternMatches(content, lines, rule) {
123
+ const matches = [];
124
+ if (!rule.pattern)
125
+ return matches;
126
+ // Reset regex state
127
+ rule.pattern.lastIndex = 0;
128
+ let match;
129
+ while ((match = rule.pattern.exec(content)) !== null) {
130
+ const position = this.getLineAndColumn(content, match.index);
131
+ const code = lines[position.line - 1]?.trim() || '';
132
+ matches.push({
133
+ line: position.line,
134
+ column: position.column,
135
+ code: code.substring(0, 100), // Limit code snippet length
136
+ message: rule.description
137
+ });
138
+ }
139
+ return matches;
140
+ }
141
+ /**
142
+ * Convert string index to line and column
143
+ */
144
+ getLineAndColumn(content, index) {
145
+ const lines = content.substring(0, index).split('\n');
146
+ return {
147
+ line: lines.length,
148
+ column: lines[lines.length - 1].length + 1
149
+ };
150
+ }
151
+ /**
152
+ * Calculate confidence level for a finding
153
+ */
154
+ calculateConfidence(match, rule, context) {
155
+ // High confidence for exact pattern matches
156
+ if (rule.tags?.includes('high-confidence')) {
157
+ return 'high';
158
+ }
159
+ // Low confidence in test files
160
+ if (context.isTest) {
161
+ return 'low';
162
+ }
163
+ // Check for common false positive indicators
164
+ const code = match.code.toLowerCase();
165
+ if (code.includes('example') || code.includes('test') || code.includes('demo')) {
166
+ return 'low';
167
+ }
168
+ return 'medium';
169
+ }
170
+ isEnabled() {
171
+ return this.config.enabled;
172
+ }
173
+ }
174
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ29kZVNjYW5uZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvc2VjdXJpdHkvYXVkaXQvc2Nhbm5lcnMvQ29kZVNjYW5uZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7OztHQUdHO0FBR0gsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQzFELE9BQU8sRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUM3QixPQUFPLElBQUksTUFBTSxNQUFNLENBQUM7QUFDeEIsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLE1BQU0sQ0FBQztBQVE1QixNQUFNLE9BQU8sV0FBVztJQUN0QixJQUFJLEdBQUcsYUFBYSxDQUFDO0lBQ2IsTUFBTSxDQUFvQjtJQUMxQixLQUFLLEdBQW1CLEVBQUUsQ0FBQztJQUVuQyxZQUFZLE1BQXlCO1FBQ25DLElBQUksQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDO1FBQ3JCLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztJQUNuQixDQUFDO0lBRUQ7O09BRUc7SUFDSyxTQUFTO1FBQ2YsTUFBTSxVQUFVLEdBQUcsSUFBSSxhQUFhLEVBQUUsQ0FBQztRQUV2QyxLQUFLLE1BQU0sT0FBTyxJQUFJLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxFQUFFLENBQUM7WUFDeEMsUUFBUSxPQUFPLEVBQUUsQ0FBQztnQkFDaEIsS0FBSyxjQUFjO29CQUNqQixJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxHQUFHLFVBQVUsQ0FBQyxhQUFhLEVBQUUsQ0FBQyxDQUFDO29CQUMvQyxNQUFNO2dCQUNSLEtBQUssWUFBWTtvQkFDZixJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxHQUFHLFVBQVUsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDO29CQUM3QyxNQUFNO2dCQUNSLEtBQUssdUJBQXVCO29CQUMxQixJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxHQUFH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SSxFQUFFLFFBQVEsQ0FBQyxpQkFBaUIsQ0FBQyxFQUFFLENBQUM7WUFDM0MsT0FBTyxNQUFNLENBQUM7UUFDaEIsQ0FBQztRQUVELCtCQUErQjtRQUMvQixJQUFJLE9BQU8sQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUNuQixPQUFPLEtBQUssQ0FBQztRQUNmLENBQUM7UUFFRCw2Q0FBNkM7UUFDN0MsTUFBTSxJQUFJLEdBQUcsS0FBSyxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUN0QyxJQUFJLElBQUksQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDLElBQUksSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsSUFBSSxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUM7WUFDL0UsT0FBTyxLQUFLLENBQUM7UUFDZixDQUFDO1FBRUQsT0FBTyxRQUFRLENBQUM7SUFDbEIsQ0FBQztJQUVELFNBQVM7UUFDUCxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDO0lBQzdCLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQ29kZSBTY2FubmVyIC0gU3RhdGljIGNvZGUgYW5hbHlzaXMgZm9yIHNlY3VyaXR5IHZ1bG5lcmFiaWxpdGllc1xuICogRGV0ZWN0cyBjb21tb24gc2VjdXJpdHkgaXNzdWVzIGluIHNvdXJjZSBjb2RlXG4gKi9cblxuaW1wb3J0IHR5cGUgeyBTZWN1cml0eVNjYW5uZXIsIFNlY3VyaXR5RmluZGluZywgU2NhbkNvbnRleHQsIFNlY3VyaXR5UnVsZSB9IGZyb20gJy4uL3R5cGVzLmpzJztcbmltcG9ydCB7IFNlY3VyaXR5UnVsZXMgfSBmcm9tICcuLi9ydWxlcy9TZWN1cml0eVJ1bGVzLmpzJztcbmltcG9ydCBmcyBmcm9tICdmcy9wcm9taXNlcyc7XG5pbXBvcnQgcGF0aCBmcm9tICdwYXRoJztcbmltcG9ydCB7IGdsb2IgfSBmcm9tICdnbG9iJztcblxuaW50ZXJmYWNlIENvZGVTY2FubmVyQ29uZmlnIHtcbiAgZW5hYmxlZDogYm9vbGVhbjtcbiAgcnVsZXM6IHN0cmluZ1tdO1xuICBleGNsdWRlPzogc3RyaW5nW107XG59XG5cbmV4cG9ydCBjbGFzcyBDb2RlU2Nhbm5lciBpbXBsZW1lbnRzIFNlY3VyaXR5U2Nhbm5lciB7XG4gIG5hbWUgPSAnQ29kZVNjYW5uZXInO1xuICBwcml2YXRlIGNvbmZpZzogQ29kZVNjYW5uZXJDb25maWc7XG4gIHByaXZhdGUgcnVsZXM6IFNlY3VyaXR5UnVsZVtdID0gW107XG5cbiAgY29uc3RydWN0b3IoY29uZmlnOiBDb2RlU2Nhbm5lckNvbmZpZykge1xuICAgIHRoaXMuY29uZmlnID0gY29uZmlnO1xuICAgIHRoaXMubG9hZFJ1bGVzKCk7XG4gIH1cblxuICAvKipcbiAgICogTG9hZCBzZWN1cml0eSBydWxlcyBiYXNlZCBvbiBjb25maWd1cmF0aW9uXG4gICAqL1xuICBwcml2YXRlIGxvYWRSdWxlcygpOiB2b2lkIHtcbiAgICBjb25zdCBydWxlTG9hZGVyID0gbmV3IFNlY3VyaXR5UnVsZXMoKTtcbiAgICBcbiAgICBmb3IgKGNvbnN0IHJ1bGVTZXQgb2YgdGhpcy5jb25maWcucnVsZXMpIHtcbiAgICAgIHN3aXRjaCAocnVsZVNldCkge1xuICAgICAgICBjYXNlICdPV0FTUC1Ub3AtMTAnOlxuICAgICAgICAgIHRoaXMucnVsZXMucHVzaCguLi5ydWxlTG9hZGVyLmdldE9XQVNQUnVsZXMoKSk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgJ0NXRS1Ub3AtMjUnOlxuICAgICAgICAgIHRoaXMucnVsZXMucHVzaCguLi5ydWxlTG9hZGVyLmdldENXRVJ1bGVzKCkpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlICdEb2xsaG91c2VNQ1AtU2VjdXJpdHknOlxuICAgICAgICAgIHRoaXMucnVsZXMucHVzaCguLi5ydWxlTG9hZGVyLmdldERvbGxob3VzZU1DUFJ1bGVzKCkpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgIC8vIEN1c3RvbSBydWxlIHNldHMgY2FuIGJlIGFkZGVkIGhlcmVcbiAgICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogU2NhbiBmaWxlcyBmb3Igc2VjdXJpdHkgdnVsbmVyYWJpbGl0aWVzXG4gICAqL1xuICBhc3luYyBzY2FuKGNvbnRleHQ6IFNjYW5Db250ZXh0KTogUHJvbWlzZTxTZWN1cml0eUZpbmRpbmdbXT4ge1xuICAgIGNvbnN0IGZpbmRpbmdzOiBTZWN1cml0eUZpbmRpbmdbXSA9IFtdO1xuICAgIGNvbnN0IGZpbGVzID0gYXdhaXQgdGhpcy5nZXRGaWxlc1RvU2Nhbihjb250ZXh0LnByb2plY3RSb290KTtcblxuICAgIGZvciAoY29uc3QgZmlsZSBvZiBmaWxlcykge1xuICAgICAgdHJ5IHtcbiAgICAgICAgY29uc3QgY29udGVudCA9IGF3YWl0IGZzLnJlYWRGaWxlKGZpbGUsICd1dGYtOCcpO1xuICAgICAgICBjb25zdCBmaWxlRmluZGluZ3MgPSBhd2FpdCB0aGlzLnNjYW5GaWxlKGZpbGUsIGNvbnRlbnQsIGNvbnRleHQpO1xuICAgICAgICBmaW5kaW5ncy5wdXNoKC4uLmZpbGVGaW5kaW5ncyk7XG4gICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICAvLyBTa2lwIGZpbGVzIHRoYXQgY2FuJ3QgYmUgcmVhZFxuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gZmluZGluZ3M7XG4gIH1cblxuICAvKipcbiAgICogR2V0IGxpc3Qgb2YgZmlsZXMgdG8gc2NhblxuICAgKi9cbiAgcHJpdmF0ZSBhc3luYyBnZXRGaWxlc1RvU2Nhbihwcm9qZWN0Um9vdDogc3RyaW5nKTogUHJvbWlzZTxzdHJpbmdbXT4ge1xuICAgIGNvbnN0IHBhdHRlcm5zID0gWycqKi8qLnRzJywgJyoqLyouanMnLCAnKiovKi5qc3gnLCAnKiovKi50c3gnLCAnKiovKi5qc29uJywgJyoqLyoueW1sJywgJyoqLyoueWFtbCddO1xuICAgIGNvbnN0IGlnbm9yZSA9IHRoaXMuY29uZmlnLmV4Y2x1ZGUgfHwgWydub2RlX21vZHVsZXMvKionLCAnZGlzdC8qKicsICdjb3ZlcmFnZS8qKiddO1xuICAgIFxuICAgIGNvbnN0IGZpbGVzOiBzdHJpbmdbXSA9IFtdO1xuICAgIGZvciAoY29uc3QgcGF0dGVybiBvZiBwYXR0ZXJucykge1xuICAgICAgY29uc3QgbWF0Y2hlcyA9IGF3YWl0IGdsb2IocGF0dGVybiwge1xuICAgICAgICBjd2Q6IHByb2plY3RSb290LFxuICAgICAgICBpZ25vcmUsXG4gICAgICAgIGFic29sdXRlOiB0cnVlXG4gICAgICB9KTtcbiAgICAgIGZpbGVzLnB1c2goLi4ubWF0Y2hlcyk7XG4gICAgfVxuICAgIFxuICAgIHJldHVybiBmaWxlcztcbiAgfVxuXG4gIC8qKlxuICAgKiBTY2FuIGEgc2luZ2xlIGZpbGUgZm9yIHZ1bG5lcmFiaWxpdGllc1xuICAgKi9cbiAgcHJpdmF0ZSBhc3luYyBzY2FuRmlsZShcbiAgICBmaWxlUGF0aDogc3RyaW5nLCBcbiAgICBjb250ZW50OiBzdHJpbmcsIFxuICAgIGNvbnRleHQ6IFNjYW5Db250ZXh0XG4gICk6IFByb21pc2U8U2VjdXJpdHlGaW5kaW5nW10+IHtcbiAgICBjb25zdCBmaW5kaW5nczogU2VjdXJpdHlGaW5kaW5nW10gPSBbXTtcbiAgICBjb25zdCBsaW5lcyA9IGNvbnRlbnQuc3BsaXQoJ1xcbicpO1xuICAgIGNvbnN0IGZpbGVDb250ZXh0ID0ge1xuICAgICAgLi4uY29udGV4dCxcbiAgICAgIGZpbGVUeXBlOiBwYXRoLmV4dG5hbWUoZmlsZVBhdGgpLFxuICAgICAgaXNUZXN0OiBmaWxlUGF0aC5pbmNsdWRlcygndGVzdCcpIHx8IGZpbGVQYXRoLmluY2x1ZGVzKCdzcGVjJylcbiAgICB9O1xuXG4gICAgZm9yIChjb25zdCBydWxlIG9mIHRoaXMucnVsZXMpIHtcbiAgICAgIC8vIFNraXAgdGVzdC1zcGVjaWZpYyBydWxlcyBpbiBub24tdGVzdCBmaWxlc1xuICAgICAgaWYgKHJ1bGUudGFncz8uaW5jbHVkZXMoJ3Rlc3Qtb25seScpICYmICFmaWxlQ29udGV4dC5pc1Rlc3QpIHtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG5cbiAgICAgIC8vIFBhdHRlcm4tYmFzZWQgZGV0ZWN0aW9uXG4gICAgICBpZiAocnVsZS5wYXR0ZXJuKSB7XG4gICAgICAgIGNvbnN0IG1hdGNoZXMgPSB0aGlzLmZpbmRQYXR0ZXJuTWF0Y2hlcyhjb250ZW50LCBsaW5lcywgcnVsZSk7XG4gICAgICAgIGZvciAoY29uc3QgbWF0Y2ggb2YgbWF0Y2hlcykge1xuICAgICAgICAgIGZpbmRpbmdzLnB1c2goe1xuICAgICAgICAgICAgcnVsZUlkOiBydWxlLmlkLFxuICAgICAgICAgICAgc2V2ZXJpdHk6IHJ1bGUuc2V2ZXJpdHksXG4gICAgICAgICAgICBtZXNzYWdlOiBgJHtydWxlLm5hbWV9OiAke21hdGNoLm1lc3NhZ2V9YCxcbiAgICAgICAgICAgIGZpbGU6IGZpbGVQYXRoLFxuICAgICAgICAgICAgbGluZTogbWF0Y2gubGluZSxcbiAgICAgICAgICAgIGNvbHVtbjogbWF0Y2guY29sdW1uLFxuICAgICAgICAgICAgY29kZTogbWF0Y2guY29kZSxcbiAgICAgICAgICAgIHJlbWVkaWF0aW9uOiBydWxlLnJlbWVkaWF0aW9uLFxuICAgICAgICAgICAgY29uZmlkZW5jZTogdGhpcy5jYWxjdWxhdGVDb25maWRlbmNlKG1hdGNoLCBydWxlLCBmaWxlQ29udGV4dClcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICAvLyBDdXN0b20gY2hlY2sgZnVuY3Rpb25cbiAgICAgIGlmIChydWxlLmNoZWNrKSB7XG4gICAgICAgIGNvbnN0IGN1c3RvbUZpbmRpbmdzID0gcnVsZS5jaGVjayhjb250ZW50LCBmaWxlQ29udGV4dCk7XG4gICAgICAgIGZpbmRpbmdzLnB1c2goLi4uY3VzdG9tRmluZGluZ3MubWFwKGYgPT4gKHtcbiAgICAgICAgICAuLi5mLFxuICAgICAgICAgIGZpbGU6IGZpbGVQYXRoXG4gICAgICAgIH0pKSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIGZpbmRpbmdzO1xuICB9XG5cbiAgLyoqXG4gICAqIEZpbmQgcGF0dGVybiBtYXRjaGVzIGluIGNvbnRlbnRcbiAgICovXG4gIHByaXZhdGUgZmluZFBhdHRlcm5NYXRjaGVzKFxuICAgIGNvbnRlbnQ6IHN0cmluZywgXG4gICAgbGluZXM6IHN0cmluZ1tdLCBcbiAgICBydWxlOiBTZWN1cml0eVJ1bGVcbiAgKTogQXJyYXk8e2xpbmU6IG51bWJlcjsgY29sdW1uOiBudW1iZXI7IGNvZGU6IHN0cmluZzsgbWVzc2FnZTogc3RyaW5nfT4ge1xuICAgIGNvbnN0IG1hdGNoZXM6IEFycmF5PHtsaW5lOiBudW1iZXI7IGNvbHVtbjogbnVtYmVyOyBjb2RlOiBzdHJpbmc7IG1lc3NhZ2U6IHN0cmluZ30+ID0gW107XG4gICAgXG4gICAgaWYgKCFydWxlLnBhdHRlcm4pIHJldHVybiBtYXRjaGVzO1xuXG4gICAgLy8gUmVzZXQgcmVnZXggc3RhdGVcbiAgICBydWxlLnBhdHRlcm4ubGFzdEluZGV4ID0gMDtcbiAgICBcbiAgICBsZXQgbWF0Y2g7XG4gICAgd2hpbGUgKChtYXRjaCA9IHJ1bGUucGF0dGVybi5leGVjKGNvbnRlbnQpKSAhPT0gbnVsbCkge1xuICAgICAgY29uc3QgcG9zaXRpb24gPSB0aGlzLmdldExpbmVBbmRDb2x1bW4oY29udGVudCwgbWF0Y2guaW5kZXgpO1xuICAgICAgY29uc3QgY29kZSA9IGxpbmVzW3Bvc2l0aW9uLmxpbmUgLSAxXT8udHJpbSgpIHx8ICcnO1xuICAgICAgXG4gICAgICBtYXRjaGVzLnB1c2goe1xuICAgICAgICBsaW5lOiBwb3NpdGlvbi5saW5lLFxuICAgICAgICBjb2x1bW46IHBvc2l0aW9uLmNvbHVtbixcbiAgICAgICAgY29kZTogY29kZS5zdWJzdHJpbmcoMCwgMTAwKSwgLy8gTGltaXQgY29kZSBzbmlwcGV0IGxlbmd0aFxuICAgICAgICBtZXNzYWdlOiBydWxlLmRlc2NyaXB0aW9uXG4gICAgICB9KTtcbiAgICB9XG5cbiAgICByZXR1cm4gbWF0Y2hlcztcbiAgfVxuXG4gIC8qKlxuICAgKiBDb252ZXJ0IHN0cmluZyBpbmRleCB0byBsaW5lIGFuZCBjb2x1bW5cbiAgICovXG4gIHByaXZhdGUgZ2V0TGluZUFuZENvbHVtbihjb250ZW50OiBzdHJpbmcsIGluZGV4OiBudW1iZXIpOiB7bGluZTogbnVtYmVyOyBjb2x1bW46IG51bWJlcn0ge1xuICAgIGNvbnN0IGxpbmVzID0gY29udGVudC5zdWJzdHJpbmcoMCwgaW5kZXgpLnNwbGl0KCdcXG4nKTtcbiAgICByZXR1cm4ge1xuICAgICAgbGluZTogbGluZXMubGVuZ3RoLFxuICAgICAgY29sdW1uOiBsaW5lc1tsaW5lcy5sZW5ndGggLSAxXS5sZW5ndGggKyAxXG4gICAgfTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDYWxjdWxhdGUgY29uZmlkZW5jZSBsZXZlbCBmb3IgYSBmaW5kaW5nXG4gICAqL1xuICBwcml2YXRlIGNhbGN1bGF0ZUNvbmZpZGVuY2UoXG4gICAgbWF0Y2g6IGFueSwgXG4gICAgcnVsZTogU2VjdXJpdHlSdWxlLCBcbiAgICBjb250ZXh0OiBTY2FuQ29udGV4dFxuICApOiAnbG93JyB8ICdtZWRpdW0nIHwgJ2hpZ2gnIHtcbiAgICAvLyBIaWdoIGNvbmZpZGVuY2UgZm9yIGV4YWN0IHBhdHRlcm4gbWF0Y2hlc1xuICAgIGlmIChydWxlLnRhZ3M/LmluY2x1ZGVzKCdoaWdoLWNvbmZpZGVuY2UnKSkge1xuICAgICAgcmV0dXJuICdoaWdoJztcbiAgICB9XG5cbiAgICAvLyBMb3cgY29uZmlkZW5jZSBpbiB0ZXN0IGZpbGVzXG4gICAgaWYgKGNvbnRleHQuaXNUZXN0KSB7XG4gICAgICByZXR1cm4gJ2xvdyc7XG4gICAgfVxuXG4gICAgLy8gQ2hlY2sgZm9yIGNvbW1vbiBmYWxzZSBwb3NpdGl2ZSBpbmRpY2F0b3JzXG4gICAgY29uc3QgY29kZSA9IG1hdGNoLmNvZGUudG9Mb3dlckNhc2UoKTtcbiAgICBpZiAoY29kZS5pbmNsdWRlcygnZXhhbXBsZScpIHx8IGNvZGUuaW5jbHVkZXMoJ3Rlc3QnKSB8fCBjb2RlLmluY2x1ZGVzKCdkZW1vJykpIHtcbiAgICAgIHJldHVybiAnbG93JztcbiAgICB9XG5cbiAgICByZXR1cm4gJ21lZGl1bSc7XG4gIH1cblxuICBpc0VuYWJsZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuY29uZmlnLmVuYWJsZWQ7XG4gIH1cbn0iXX0=
@@ -0,0 +1,13 @@
1
+ /**
2
+ * Configuration Scanner - Scans configuration files for security issues
3
+ * Placeholder implementation - to be completed
4
+ */
5
+ import type { SecurityScanner, SecurityFinding, ScanContext } from '../types.js';
6
+ export declare class ConfigurationScanner implements SecurityScanner {
7
+ name: string;
8
+ private config;
9
+ constructor(config: any);
10
+ scan(context: ScanContext): Promise<SecurityFinding[]>;
11
+ isEnabled(): boolean;
12
+ }
13
+ //# sourceMappingURL=ConfigurationScanner.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ConfigurationScanner.d.ts","sourceRoot":"","sources":["../../../../../../src/security/audit/scanners/ConfigurationScanner.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAE,eAAe,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAEjF,qBAAa,oBAAqB,YAAW,eAAe;IAC1D,IAAI,SAA0B;IAC9B,OAAO,CAAC,MAAM,CAAM;gBAER,MAAM,EAAE,GAAG;IAIjB,IAAI,CAAC,OAAO,EAAE,WAAW,GAAG,OAAO,CAAC,eAAe,EAAE,CAAC;IAQ5D,SAAS,IAAI,OAAO;CAGrB"}
@@ -0,0 +1,22 @@
1
+ /**
2
+ * Configuration Scanner - Scans configuration files for security issues
3
+ * Placeholder implementation - to be completed
4
+ */
5
+ export class ConfigurationScanner {
6
+ name = 'ConfigurationScanner';
7
+ config;
8
+ constructor(config) {
9
+ this.config = config;
10
+ }
11
+ async scan(context) {
12
+ // TODO: Implement configuration scanning
13
+ // - Check for insecure defaults
14
+ // - Validate security headers
15
+ // - Check authentication settings
16
+ return [];
17
+ }
18
+ isEnabled() {
19
+ return this.config.enabled;
20
+ }
21
+ }
22
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ29uZmlndXJhdGlvblNjYW5uZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvc2VjdXJpdHkvYXVkaXQvc2Nhbm5lcnMvQ29uZmlndXJhdGlvblNjYW5uZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7OztHQUdHO0FBSUgsTUFBTSxPQUFPLG9CQUFvQjtJQUMvQixJQUFJLEdBQUcsc0JBQXNCLENBQUM7SUFDdEIsTUFBTSxDQUFNO0lBRXBCLFlBQVksTUFBVztRQUNyQixJQUFJLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQztJQUN2QixDQUFDO0lBRUQsS0FBSyxDQUFDLElBQUksQ0FBQyxPQUFvQjtRQUM3Qix5Q0FBeUM7UUFDekMsZ0NBQWdDO1FBQ2hDLDhCQUE4QjtRQUM5QixrQ0FBa0M7UUFDbEMsT0FBTyxFQUFFLENBQUM7SUFDWixDQUFDO0lBRUQsU0FBUztRQUNQLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUM7SUFDN0IsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBDb25maWd1cmF0aW9uIFNjYW5uZXIgLSBTY2FucyBjb25maWd1cmF0aW9uIGZpbGVzIGZvciBzZWN1cml0eSBpc3N1ZXNcbiAqIFBsYWNlaG9sZGVyIGltcGxlbWVudGF0aW9uIC0gdG8gYmUgY29tcGxldGVkXG4gKi9cblxuaW1wb3J0IHR5cGUgeyBTZWN1cml0eVNjYW5uZXIsIFNlY3VyaXR5RmluZGluZywgU2NhbkNvbnRleHQgfSBmcm9tICcuLi90eXBlcy5qcyc7XG5cbmV4cG9ydCBjbGFzcyBDb25maWd1cmF0aW9uU2Nhbm5lciBpbXBsZW1lbnRzIFNlY3VyaXR5U2Nhbm5lciB7XG4gIG5hbWUgPSAnQ29uZmlndXJhdGlvblNjYW5uZXInO1xuICBwcml2YXRlIGNvbmZpZzogYW55O1xuXG4gIGNvbnN0cnVjdG9yKGNvbmZpZzogYW55KSB7XG4gICAgdGhpcy5jb25maWcgPSBjb25maWc7XG4gIH1cblxuICBhc3luYyBzY2FuKGNvbnRleHQ6IFNjYW5Db250ZXh0KTogUHJvbWlzZTxTZWN1cml0eUZpbmRpbmdbXT4ge1xuICAgIC8vIFRPRE86IEltcGxlbWVudCBjb25maWd1cmF0aW9uIHNjYW5uaW5nXG4gICAgLy8gLSBDaGVjayBmb3IgaW5zZWN1cmUgZGVmYXVsdHNcbiAgICAvLyAtIFZhbGlkYXRlIHNlY3VyaXR5IGhlYWRlcnNcbiAgICAvLyAtIENoZWNrIGF1dGhlbnRpY2F0aW9uIHNldHRpbmdzXG4gICAgcmV0dXJuIFtdO1xuICB9XG5cbiAgaXNFbmFibGVkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmNvbmZpZy5lbmFibGVkO1xuICB9XG59Il19
@@ -0,0 +1,13 @@
1
+ /**
2
+ * Dependency Scanner - Scans for vulnerabilities in dependencies
3
+ * Placeholder implementation - to be completed
4
+ */
5
+ import type { SecurityScanner, SecurityFinding, ScanContext } from '../types.js';
6
+ export declare class DependencyScanner implements SecurityScanner {
7
+ name: string;
8
+ private config;
9
+ constructor(config: any);
10
+ scan(context: ScanContext): Promise<SecurityFinding[]>;
11
+ isEnabled(): boolean;
12
+ }
13
+ //# sourceMappingURL=DependencyScanner.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DependencyScanner.d.ts","sourceRoot":"","sources":["../../../../../../src/security/audit/scanners/DependencyScanner.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAE,eAAe,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAEjF,qBAAa,iBAAkB,YAAW,eAAe;IACvD,IAAI,SAAuB;IAC3B,OAAO,CAAC,MAAM,CAAM;gBAER,MAAM,EAAE,GAAG;IAIjB,IAAI,CAAC,OAAO,EAAE,WAAW,GAAG,OAAO,CAAC,eAAe,EAAE,CAAC;IAQ5D,SAAS,IAAI,OAAO;CAGrB"}
@@ -0,0 +1,22 @@
1
+ /**
2
+ * Dependency Scanner - Scans for vulnerabilities in dependencies
3
+ * Placeholder implementation - to be completed
4
+ */
5
+ export class DependencyScanner {
6
+ name = 'DependencyScanner';
7
+ config;
8
+ constructor(config) {
9
+ this.config = config;
10
+ }
11
+ async scan(context) {
12
+ // TODO: Implement dependency scanning
13
+ // - Run npm audit
14
+ // - Check GitHub Advisory Database
15
+ // - Validate licenses
16
+ return [];
17
+ }
18
+ isEnabled() {
19
+ return this.config.enabled;
20
+ }
21
+ }
22
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRGVwZW5kZW5jeVNjYW5uZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvc2VjdXJpdHkvYXVkaXQvc2Nhbm5lcnMvRGVwZW5kZW5jeVNjYW5uZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7OztHQUdHO0FBSUgsTUFBTSxPQUFPLGlCQUFpQjtJQUM1QixJQUFJLEdBQUcsbUJBQW1CLENBQUM7SUFDbkIsTUFBTSxDQUFNO0lBRXBCLFlBQVksTUFBVztRQUNyQixJQUFJLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQztJQUN2QixDQUFDO0lBRUQsS0FBSyxDQUFDLElBQUksQ0FBQyxPQUFvQjtRQUM3QixzQ0FBc0M7UUFDdEMsa0JBQWtCO1FBQ2xCLG1DQUFtQztRQUNuQyxzQkFBc0I7UUFDdEIsT0FBTyxFQUFFLENBQUM7SUFDWixDQUFDO0lBRUQsU0FBUztRQUNQLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUM7SUFDN0IsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBEZXBlbmRlbmN5IFNjYW5uZXIgLSBTY2FucyBmb3IgdnVsbmVyYWJpbGl0aWVzIGluIGRlcGVuZGVuY2llc1xuICogUGxhY2Vob2xkZXIgaW1wbGVtZW50YXRpb24gLSB0byBiZSBjb21wbGV0ZWRcbiAqL1xuXG5pbXBvcnQgdHlwZSB7IFNlY3VyaXR5U2Nhbm5lciwgU2VjdXJpdHlGaW5kaW5nLCBTY2FuQ29udGV4dCB9IGZyb20gJy4uL3R5cGVzLmpzJztcblxuZXhwb3J0IGNsYXNzIERlcGVuZGVuY3lTY2FubmVyIGltcGxlbWVudHMgU2VjdXJpdHlTY2FubmVyIHtcbiAgbmFtZSA9ICdEZXBlbmRlbmN5U2Nhbm5lcic7XG4gIHByaXZhdGUgY29uZmlnOiBhbnk7XG5cbiAgY29uc3RydWN0b3IoY29uZmlnOiBhbnkpIHtcbiAgICB0aGlzLmNvbmZpZyA9IGNvbmZpZztcbiAgfVxuXG4gIGFzeW5jIHNjYW4oY29udGV4dDogU2NhbkNvbnRleHQpOiBQcm9taXNlPFNlY3VyaXR5RmluZGluZ1tdPiB7XG4gICAgLy8gVE9ETzogSW1wbGVtZW50IGRlcGVuZGVuY3kgc2Nhbm5pbmdcbiAgICAvLyAtIFJ1biBucG0gYXVkaXRcbiAgICAvLyAtIENoZWNrIEdpdEh1YiBBZHZpc29yeSBEYXRhYmFzZVxuICAgIC8vIC0gVmFsaWRhdGUgbGljZW5zZXNcbiAgICByZXR1cm4gW107XG4gIH1cblxuICBpc0VuYWJsZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuY29uZmlnLmVuYWJsZWQ7XG4gIH1cbn0iXX0=