@dollhousemcp/mcp-server 1.4.4 → 1.5.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +31 -0
- package/README.md +68 -7
- package/dist/auth/GitHubAuthManager.d.ts +93 -0
- package/dist/auth/GitHubAuthManager.d.ts.map +1 -0
- package/dist/auth/GitHubAuthManager.js +465 -0
- package/dist/generated/version.d.ts +2 -2
- package/dist/generated/version.js +3 -3
- package/dist/index.d.ts +23 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +244 -5
- package/dist/security/tokenManager.d.ts +34 -0
- package/dist/security/tokenManager.d.ts.map +1 -1
- package/dist/security/tokenManager.js +199 -1
- package/dist/server/ServerSetup.d.ts.map +1 -1
- package/dist/server/ServerSetup.js +4 -1
- package/dist/server/tools/AuthTools.d.ts +10 -0
- package/dist/server/tools/AuthTools.d.ts.map +1 -0
- package/dist/server/tools/AuthTools.js +41 -0
- package/dist/server/types.d.ts +3 -0
- package/dist/server/types.d.ts.map +1 -1
- package/dist/server/types.js +1 -1
- package/package.json +1 -1
- package/dist/collection/MarketplaceBrowser.d.ts +0 -24
- package/dist/collection/MarketplaceBrowser.d.ts.map +0 -1
- package/dist/collection/MarketplaceBrowser.js +0 -115
- package/dist/collection/MarketplaceSearch.d.ts +0 -18
- package/dist/collection/MarketplaceSearch.d.ts.map +0 -1
- package/dist/collection/MarketplaceSearch.js +0 -48
- package/dist/collection/PersonaInstaller.d.ts +0 -26
- package/dist/collection/PersonaInstaller.d.ts.map +0 -1
- package/dist/collection/PersonaInstaller.js +0 -103
- package/dist/elements/ensembles/Ensemble.d.ts +0 -144
- package/dist/elements/ensembles/Ensemble.d.ts.map +0 -1
- package/dist/elements/ensembles/Ensemble.js +0 -860
- package/dist/elements/ensembles/EnsembleManager.d.ts +0 -85
- package/dist/elements/ensembles/EnsembleManager.d.ts.map +0 -1
- package/dist/elements/ensembles/EnsembleManager.js +0 -378
- package/dist/elements/ensembles/constants.d.ts +0 -73
- package/dist/elements/ensembles/constants.d.ts.map +0 -1
- package/dist/elements/ensembles/constants.js +0 -92
- package/dist/elements/ensembles/index.d.ts +0 -8
- package/dist/elements/ensembles/index.d.ts.map +0 -1
- package/dist/elements/ensembles/index.js +0 -8
- package/dist/elements/ensembles/types.d.ts +0 -92
- package/dist/elements/ensembles/types.d.ts.map +0 -1
- package/dist/elements/ensembles/types.js +0 -8
- package/dist/elements/memories/Memory.d.ts +0 -110
- package/dist/elements/memories/Memory.d.ts.map +0 -1
- package/dist/elements/memories/Memory.js +0 -470
- package/dist/elements/memories/MemoryManager.d.ts +0 -86
- package/dist/elements/memories/MemoryManager.d.ts.map +0 -1
- package/dist/elements/memories/MemoryManager.js +0 -435
- package/dist/elements/memories/constants.d.ts +0 -42
- package/dist/elements/memories/constants.d.ts.map +0 -1
- package/dist/elements/memories/constants.js +0 -49
- package/dist/elements/memories/index.d.ts +0 -6
- package/dist/elements/memories/index.d.ts.map +0 -1
- package/dist/elements/memories/index.js +0 -6
- package/dist/marketplace/GitHubClient.d.ts +0 -22
- package/dist/marketplace/GitHubClient.d.ts.map +0 -1
- package/dist/marketplace/GitHubClient.js +0 -112
- package/dist/marketplace/MarketplaceBrowser.d.ts +0 -24
- package/dist/marketplace/MarketplaceBrowser.d.ts.map +0 -1
- package/dist/marketplace/MarketplaceBrowser.js +0 -115
- package/dist/marketplace/MarketplaceSearch.d.ts +0 -18
- package/dist/marketplace/MarketplaceSearch.d.ts.map +0 -1
- package/dist/marketplace/MarketplaceSearch.js +0 -48
- package/dist/marketplace/PersonaDetails.d.ts +0 -22
- package/dist/marketplace/PersonaDetails.d.ts.map +0 -1
- package/dist/marketplace/PersonaDetails.js +0 -71
- package/dist/marketplace/PersonaInstaller.d.ts +0 -25
- package/dist/marketplace/PersonaInstaller.d.ts.map +0 -1
- package/dist/marketplace/PersonaInstaller.js +0 -100
- package/dist/marketplace/PersonaSubmitter.d.ts +0 -19
- package/dist/marketplace/PersonaSubmitter.d.ts.map +0 -1
- package/dist/marketplace/PersonaSubmitter.js +0 -57
- package/dist/marketplace/index.d.ts +0 -10
- package/dist/marketplace/index.d.ts.map +0 -1
- package/dist/marketplace/index.js +0 -10
- package/dist/server/tools/MarketplaceTools.d.ts +0 -10
- package/dist/server/tools/MarketplaceTools.d.ts.map +0 -1
- package/dist/server/tools/MarketplaceTools.js +0 -96
- package/dist/src/cache/APICache.d.ts +0 -23
- package/dist/src/cache/APICache.d.ts.map +0 -1
- package/dist/src/cache/APICache.js +0 -42
- package/dist/src/cache/index.d.ts +0 -5
- package/dist/src/cache/index.d.ts.map +0 -1
- package/dist/src/cache/index.js +0 -5
- package/dist/src/config/constants.d.ts +0 -25
- package/dist/src/config/constants.d.ts.map +0 -1
- package/dist/src/config/constants.js +0 -30
- package/dist/src/config/index.d.ts +0 -6
- package/dist/src/config/index.d.ts.map +0 -1
- package/dist/src/config/index.js +0 -6
- package/dist/src/config/indicator-config.d.ts +0 -107
- package/dist/src/config/indicator-config.d.ts.map +0 -1
- package/dist/src/config/indicator-config.js +0 -158
- package/dist/src/constants/defaultPersonas.d.ts +0 -10
- package/dist/src/constants/defaultPersonas.d.ts.map +0 -1
- package/dist/src/constants/defaultPersonas.js +0 -18
- package/dist/src/constants/limits.d.ts +0 -10
- package/dist/src/constants/limits.d.ts.map +0 -1
- package/dist/src/constants/limits.js +0 -13
- package/dist/src/errors/SecurityError.d.ts +0 -29
- package/dist/src/errors/SecurityError.d.ts.map +0 -1
- package/dist/src/errors/SecurityError.js +0 -47
- package/dist/src/errors/index.d.ts +0 -2
- package/dist/src/errors/index.d.ts.map +0 -1
- package/dist/src/errors/index.js +0 -2
- package/dist/src/index.barrel.d.ts +0 -21
- package/dist/src/index.barrel.d.ts.map +0 -1
- package/dist/src/index.barrel.js +0 -31
- package/dist/src/index.d.ts +0 -220
- package/dist/src/index.d.ts.map +0 -1
- package/dist/src/index.js +0 -1559
- package/dist/src/marketplace/GitHubClient.d.ts +0 -22
- package/dist/src/marketplace/GitHubClient.d.ts.map +0 -1
- package/dist/src/marketplace/GitHubClient.js +0 -112
- package/dist/src/marketplace/MarketplaceBrowser.d.ts +0 -21
- package/dist/src/marketplace/MarketplaceBrowser.d.ts.map +0 -1
- package/dist/src/marketplace/MarketplaceBrowser.js +0 -45
- package/dist/src/marketplace/MarketplaceSearch.d.ts +0 -18
- package/dist/src/marketplace/MarketplaceSearch.d.ts.map +0 -1
- package/dist/src/marketplace/MarketplaceSearch.js +0 -36
- package/dist/src/marketplace/PersonaDetails.d.ts +0 -22
- package/dist/src/marketplace/PersonaDetails.d.ts.map +0 -1
- package/dist/src/marketplace/PersonaDetails.js +0 -71
- package/dist/src/marketplace/PersonaInstaller.d.ts +0 -25
- package/dist/src/marketplace/PersonaInstaller.d.ts.map +0 -1
- package/dist/src/marketplace/PersonaInstaller.js +0 -100
- package/dist/src/marketplace/PersonaSubmitter.d.ts +0 -19
- package/dist/src/marketplace/PersonaSubmitter.d.ts.map +0 -1
- package/dist/src/marketplace/PersonaSubmitter.js +0 -57
- package/dist/src/marketplace/index.d.ts +0 -10
- package/dist/src/marketplace/index.d.ts.map +0 -1
- package/dist/src/marketplace/index.js +0 -10
- package/dist/src/persona/PersonaLoader.d.ts +0 -33
- package/dist/src/persona/PersonaLoader.d.ts.map +0 -1
- package/dist/src/persona/PersonaLoader.js +0 -139
- package/dist/src/persona/PersonaManager.d.ts +0 -112
- package/dist/src/persona/PersonaManager.d.ts.map +0 -1
- package/dist/src/persona/PersonaManager.js +0 -341
- package/dist/src/persona/PersonaValidator.d.ts +0 -33
- package/dist/src/persona/PersonaValidator.d.ts.map +0 -1
- package/dist/src/persona/PersonaValidator.js +0 -157
- package/dist/src/persona/export-import/PersonaExporter.d.ts +0 -43
- package/dist/src/persona/export-import/PersonaExporter.d.ts.map +0 -1
- package/dist/src/persona/export-import/PersonaExporter.js +0 -99
- package/dist/src/persona/export-import/PersonaImporter.d.ts +0 -65
- package/dist/src/persona/export-import/PersonaImporter.d.ts.map +0 -1
- package/dist/src/persona/export-import/PersonaImporter.js +0 -313
- package/dist/src/persona/export-import/PersonaSharer.d.ts +0 -60
- package/dist/src/persona/export-import/PersonaSharer.d.ts.map +0 -1
- package/dist/src/persona/export-import/PersonaSharer.js +0 -363
- package/dist/src/persona/export-import/index.d.ts +0 -10
- package/dist/src/persona/export-import/index.d.ts.map +0 -1
- package/dist/src/persona/export-import/index.js +0 -7
- package/dist/src/persona/index.d.ts +0 -7
- package/dist/src/persona/index.d.ts.map +0 -1
- package/dist/src/persona/index.js +0 -7
- package/dist/src/security/InputValidator.d.ts +0 -69
- package/dist/src/security/InputValidator.d.ts.map +0 -1
- package/dist/src/security/InputValidator.js +0 -381
- package/dist/src/security/commandValidator.d.ts +0 -7
- package/dist/src/security/commandValidator.d.ts.map +0 -1
- package/dist/src/security/commandValidator.js +0 -77
- package/dist/src/security/constants.d.ts +0 -21
- package/dist/src/security/constants.d.ts.map +0 -1
- package/dist/src/security/constants.js +0 -23
- package/dist/src/security/contentValidator.d.ts +0 -47
- package/dist/src/security/contentValidator.d.ts.map +0 -1
- package/dist/src/security/contentValidator.js +0 -188
- package/dist/src/security/fileLockManager.d.ts +0 -70
- package/dist/src/security/fileLockManager.d.ts.map +0 -1
- package/dist/src/security/fileLockManager.js +0 -187
- package/dist/src/security/index.d.ts +0 -12
- package/dist/src/security/index.d.ts.map +0 -1
- package/dist/src/security/index.js +0 -14
- package/dist/src/security/pathValidator.d.ts +0 -9
- package/dist/src/security/pathValidator.d.ts.map +0 -1
- package/dist/src/security/pathValidator.js +0 -97
- package/dist/src/security/secureYamlParser.d.ts +0 -46
- package/dist/src/security/secureYamlParser.d.ts.map +0 -1
- package/dist/src/security/secureYamlParser.js +0 -203
- package/dist/src/security/securityMonitor.d.ts +0 -58
- package/dist/src/security/securityMonitor.d.ts.map +0 -1
- package/dist/src/security/securityMonitor.js +0 -108
- package/dist/src/security/tokenManager.d.ts +0 -59
- package/dist/src/security/tokenManager.d.ts.map +0 -1
- package/dist/src/security/tokenManager.js +0 -216
- package/dist/src/security/yamlValidator.d.ts +0 -20
- package/dist/src/security/yamlValidator.d.ts.map +0 -1
- package/dist/src/security/yamlValidator.js +0 -138
- package/dist/src/server/ServerSetup.d.ts +0 -31
- package/dist/src/server/ServerSetup.d.ts.map +0 -1
- package/dist/src/server/ServerSetup.js +0 -79
- package/dist/src/server/index.d.ts +0 -7
- package/dist/src/server/index.d.ts.map +0 -1
- package/dist/src/server/index.js +0 -7
- package/dist/src/server/tools/ConfigTools.d.ts +0 -10
- package/dist/src/server/tools/ConfigTools.d.ts.map +0 -1
- package/dist/src/server/tools/ConfigTools.js +0 -63
- package/dist/src/server/tools/MarketplaceTools.d.ts +0 -10
- package/dist/src/server/tools/MarketplaceTools.d.ts.map +0 -1
- package/dist/src/server/tools/MarketplaceTools.js +0 -92
- package/dist/src/server/tools/PersonaTools.d.ts +0 -10
- package/dist/src/server/tools/PersonaTools.d.ts.map +0 -1
- package/dist/src/server/tools/PersonaTools.js +0 -257
- package/dist/src/server/tools/ToolRegistry.d.ts +0 -37
- package/dist/src/server/tools/ToolRegistry.d.ts.map +0 -1
- package/dist/src/server/tools/ToolRegistry.js +0 -40
- package/dist/src/server/tools/UpdateTools.d.ts +0 -10
- package/dist/src/server/tools/UpdateTools.d.ts.map +0 -1
- package/dist/src/server/tools/UpdateTools.js +0 -64
- package/dist/src/server/tools/UserTools.d.ts +0 -10
- package/dist/src/server/tools/UserTools.d.ts.map +0 -1
- package/dist/src/server/tools/UserTools.js +0 -51
- package/dist/src/server/tools/index.d.ts +0 -10
- package/dist/src/server/tools/index.d.ts.map +0 -1
- package/dist/src/server/tools/index.js +0 -10
- package/dist/src/server/types.d.ts +0 -34
- package/dist/src/server/types.d.ts.map +0 -1
- package/dist/src/server/types.js +0 -5
- package/dist/src/tools/debug.d.ts +0 -20
- package/dist/src/tools/debug.d.ts.map +0 -1
- package/dist/src/tools/debug.js +0 -37
- package/dist/src/types/cache.d.ts +0 -8
- package/dist/src/types/cache.d.ts.map +0 -1
- package/dist/src/types/cache.js +0 -5
- package/dist/src/types/index.d.ts +0 -8
- package/dist/src/types/index.d.ts.map +0 -1
- package/dist/src/types/index.js +0 -8
- package/dist/src/types/marketplace.d.ts +0 -23
- package/dist/src/types/marketplace.d.ts.map +0 -1
- package/dist/src/types/marketplace.js +0 -5
- package/dist/src/types/mcp.d.ts +0 -161
- package/dist/src/types/mcp.d.ts.map +0 -1
- package/dist/src/types/mcp.js +0 -75
- package/dist/src/types/persona.d.ts +0 -30
- package/dist/src/types/persona.d.ts.map +0 -1
- package/dist/src/types/persona.js +0 -5
- package/dist/src/update/BackupManager.d.ts +0 -46
- package/dist/src/update/BackupManager.d.ts.map +0 -1
- package/dist/src/update/BackupManager.js +0 -261
- package/dist/src/update/DependencyChecker.d.ts +0 -41
- package/dist/src/update/DependencyChecker.d.ts.map +0 -1
- package/dist/src/update/DependencyChecker.js +0 -132
- package/dist/src/update/RateLimiter.d.ts +0 -80
- package/dist/src/update/RateLimiter.d.ts.map +0 -1
- package/dist/src/update/RateLimiter.js +0 -172
- package/dist/src/update/SignatureVerifier.d.ts +0 -71
- package/dist/src/update/SignatureVerifier.d.ts.map +0 -1
- package/dist/src/update/SignatureVerifier.js +0 -214
- package/dist/src/update/UpdateChecker.d.ts +0 -127
- package/dist/src/update/UpdateChecker.d.ts.map +0 -1
- package/dist/src/update/UpdateChecker.js +0 -460
- package/dist/src/update/UpdateManager.d.ts +0 -41
- package/dist/src/update/UpdateManager.d.ts.map +0 -1
- package/dist/src/update/UpdateManager.js +0 -260
- package/dist/src/update/VersionManager.d.ts +0 -31
- package/dist/src/update/VersionManager.d.ts.map +0 -1
- package/dist/src/update/VersionManager.js +0 -134
- package/dist/src/update/index.d.ts +0 -9
- package/dist/src/update/index.d.ts.map +0 -1
- package/dist/src/update/index.js +0 -9
- package/dist/src/utils/filesystem.d.ts +0 -32
- package/dist/src/utils/filesystem.d.ts.map +0 -1
- package/dist/src/utils/filesystem.js +0 -73
- package/dist/src/utils/git.d.ts +0 -32
- package/dist/src/utils/git.d.ts.map +0 -1
- package/dist/src/utils/git.js +0 -65
- package/dist/src/utils/index.d.ts +0 -7
- package/dist/src/utils/index.d.ts.map +0 -1
- package/dist/src/utils/index.js +0 -7
- package/dist/src/utils/logger.d.ts +0 -45
- package/dist/src/utils/logger.d.ts.map +0 -1
- package/dist/src/utils/logger.js +0 -91
- package/dist/src/utils/version.d.ts +0 -25
- package/dist/src/utils/version.d.ts.map +0 -1
- package/dist/src/utils/version.js +0 -97
- package/dist/test/src/cache/APICache.d.ts +0 -23
- package/dist/test/src/cache/APICache.d.ts.map +0 -1
- package/dist/test/src/cache/APICache.js +0 -42
- package/dist/test/src/cache/index.d.ts +0 -5
- package/dist/test/src/cache/index.d.ts.map +0 -1
- package/dist/test/src/cache/index.js +0 -5
- package/dist/test/src/collection/CollectionBrowser.d.ts +0 -24
- package/dist/test/src/collection/CollectionBrowser.d.ts.map +0 -1
- package/dist/test/src/collection/CollectionBrowser.js +0 -115
- package/dist/test/src/collection/CollectionSearch.d.ts +0 -18
- package/dist/test/src/collection/CollectionSearch.d.ts.map +0 -1
- package/dist/test/src/collection/CollectionSearch.js +0 -48
- package/dist/test/src/collection/GitHubClient.d.ts +0 -22
- package/dist/test/src/collection/GitHubClient.d.ts.map +0 -1
- package/dist/test/src/collection/GitHubClient.js +0 -114
- package/dist/test/src/collection/PersonaDetails.d.ts +0 -22
- package/dist/test/src/collection/PersonaDetails.d.ts.map +0 -1
- package/dist/test/src/collection/PersonaDetails.js +0 -71
- package/dist/test/src/collection/PersonaInstaller.d.ts +0 -26
- package/dist/test/src/collection/PersonaInstaller.d.ts.map +0 -1
- package/dist/test/src/collection/PersonaInstaller.js +0 -103
- package/dist/test/src/collection/PersonaSubmitter.d.ts +0 -19
- package/dist/test/src/collection/PersonaSubmitter.d.ts.map +0 -1
- package/dist/test/src/collection/PersonaSubmitter.js +0 -57
- package/dist/test/src/collection/index.d.ts +0 -10
- package/dist/test/src/collection/index.d.ts.map +0 -1
- package/dist/test/src/collection/index.js +0 -10
- package/dist/test/src/config/constants.d.ts +0 -25
- package/dist/test/src/config/constants.d.ts.map +0 -1
- package/dist/test/src/config/constants.js +0 -30
- package/dist/test/src/config/index.d.ts +0 -6
- package/dist/test/src/config/index.d.ts.map +0 -1
- package/dist/test/src/config/index.js +0 -6
- package/dist/test/src/config/indicator-config.d.ts +0 -107
- package/dist/test/src/config/indicator-config.d.ts.map +0 -1
- package/dist/test/src/config/indicator-config.js +0 -158
- package/dist/test/src/constants/defaultPersonas.d.ts +0 -10
- package/dist/test/src/constants/defaultPersonas.d.ts.map +0 -1
- package/dist/test/src/constants/defaultPersonas.js +0 -18
- package/dist/test/src/constants/limits.d.ts +0 -10
- package/dist/test/src/constants/limits.d.ts.map +0 -1
- package/dist/test/src/constants/limits.js +0 -13
- package/dist/test/src/elements/BaseElement.d.ts +0 -81
- package/dist/test/src/elements/BaseElement.d.ts.map +0 -1
- package/dist/test/src/elements/BaseElement.js +0 -381
- package/dist/test/src/elements/FeedbackProcessor.d.ts +0 -57
- package/dist/test/src/elements/FeedbackProcessor.d.ts.map +0 -1
- package/dist/test/src/elements/FeedbackProcessor.js +0 -418
- package/dist/test/src/elements/agents/Agent.d.ts +0 -145
- package/dist/test/src/elements/agents/Agent.d.ts.map +0 -1
- package/dist/test/src/elements/agents/Agent.js +0 -848
- package/dist/test/src/elements/agents/AgentManager.d.ts +0 -125
- package/dist/test/src/elements/agents/AgentManager.d.ts.map +0 -1
- package/dist/test/src/elements/agents/AgentManager.js +0 -608
- package/dist/test/src/elements/agents/constants.d.ts +0 -42
- package/dist/test/src/elements/agents/constants.d.ts.map +0 -1
- package/dist/test/src/elements/agents/constants.js +0 -45
- package/dist/test/src/elements/agents/goalTemplates.d.ts +0 -44
- package/dist/test/src/elements/agents/goalTemplates.d.ts.map +0 -1
- package/dist/test/src/elements/agents/goalTemplates.js +0 -297
- package/dist/test/src/elements/agents/index.d.ts +0 -8
- package/dist/test/src/elements/agents/index.d.ts.map +0 -1
- package/dist/test/src/elements/agents/index.js +0 -8
- package/dist/test/src/elements/agents/ruleEngineConfig.d.ts +0 -76
- package/dist/test/src/elements/agents/ruleEngineConfig.d.ts.map +0 -1
- package/dist/test/src/elements/agents/ruleEngineConfig.js +0 -143
- package/dist/test/src/elements/agents/types.d.ts +0 -97
- package/dist/test/src/elements/agents/types.d.ts.map +0 -1
- package/dist/test/src/elements/agents/types.js +0 -5
- package/dist/test/src/elements/index.d.ts +0 -6
- package/dist/test/src/elements/index.d.ts.map +0 -1
- package/dist/test/src/elements/index.js +0 -6
- package/dist/test/src/elements/memories/Memory.d.ts +0 -110
- package/dist/test/src/elements/memories/Memory.d.ts.map +0 -1
- package/dist/test/src/elements/memories/Memory.js +0 -470
- package/dist/test/src/elements/memories/MemoryManager.d.ts +0 -86
- package/dist/test/src/elements/memories/MemoryManager.d.ts.map +0 -1
- package/dist/test/src/elements/memories/MemoryManager.js +0 -435
- package/dist/test/src/elements/memories/constants.d.ts +0 -42
- package/dist/test/src/elements/memories/constants.d.ts.map +0 -1
- package/dist/test/src/elements/memories/constants.js +0 -49
- package/dist/test/src/elements/memories/index.d.ts +0 -6
- package/dist/test/src/elements/memories/index.d.ts.map +0 -1
- package/dist/test/src/elements/memories/index.js +0 -6
- package/dist/test/src/elements/skills/Skill.d.ts +0 -109
- package/dist/test/src/elements/skills/Skill.d.ts.map +0 -1
- package/dist/test/src/elements/skills/Skill.js +0 -381
- package/dist/test/src/elements/templates/Template.d.ts +0 -138
- package/dist/test/src/elements/templates/Template.d.ts.map +0 -1
- package/dist/test/src/elements/templates/Template.js +0 -673
- package/dist/test/src/elements/templates/TemplateManager.d.ts +0 -104
- package/dist/test/src/elements/templates/TemplateManager.d.ts.map +0 -1
- package/dist/test/src/elements/templates/TemplateManager.js +0 -496
- package/dist/test/src/elements/templates/index.d.ts +0 -6
- package/dist/test/src/elements/templates/index.d.ts.map +0 -1
- package/dist/test/src/elements/templates/index.js +0 -6
- package/dist/test/src/errors/SecurityError.d.ts +0 -29
- package/dist/test/src/errors/SecurityError.d.ts.map +0 -1
- package/dist/test/src/errors/SecurityError.js +0 -47
- package/dist/test/src/errors/index.d.ts +0 -2
- package/dist/test/src/errors/index.d.ts.map +0 -1
- package/dist/test/src/errors/index.js +0 -2
- package/dist/test/src/index.barrel.d.ts +0 -21
- package/dist/test/src/index.barrel.d.ts.map +0 -1
- package/dist/test/src/index.barrel.js +0 -31
- package/dist/test/src/index.d.ts +0 -223
- package/dist/test/src/index.d.ts.map +0 -1
- package/dist/test/src/index.js +0 -1594
- package/dist/test/src/marketplace/GitHubClient.d.ts +0 -22
- package/dist/test/src/marketplace/GitHubClient.d.ts.map +0 -1
- package/dist/test/src/marketplace/GitHubClient.js +0 -112
- package/dist/test/src/marketplace/MarketplaceBrowser.d.ts +0 -21
- package/dist/test/src/marketplace/MarketplaceBrowser.d.ts.map +0 -1
- package/dist/test/src/marketplace/MarketplaceBrowser.js +0 -45
- package/dist/test/src/marketplace/MarketplaceSearch.d.ts +0 -18
- package/dist/test/src/marketplace/MarketplaceSearch.d.ts.map +0 -1
- package/dist/test/src/marketplace/MarketplaceSearch.js +0 -36
- package/dist/test/src/marketplace/PersonaDetails.d.ts +0 -22
- package/dist/test/src/marketplace/PersonaDetails.d.ts.map +0 -1
- package/dist/test/src/marketplace/PersonaDetails.js +0 -71
- package/dist/test/src/marketplace/PersonaInstaller.d.ts +0 -25
- package/dist/test/src/marketplace/PersonaInstaller.d.ts.map +0 -1
- package/dist/test/src/marketplace/PersonaInstaller.js +0 -100
- package/dist/test/src/marketplace/PersonaSubmitter.d.ts +0 -19
- package/dist/test/src/marketplace/PersonaSubmitter.d.ts.map +0 -1
- package/dist/test/src/marketplace/PersonaSubmitter.js +0 -57
- package/dist/test/src/marketplace/index.d.ts +0 -10
- package/dist/test/src/marketplace/index.d.ts.map +0 -1
- package/dist/test/src/marketplace/index.js +0 -10
- package/dist/test/src/persona/PersonaElement.d.ts +0 -64
- package/dist/test/src/persona/PersonaElement.d.ts.map +0 -1
- package/dist/test/src/persona/PersonaElement.js +0 -223
- package/dist/test/src/persona/PersonaElementManager.d.ts +0 -97
- package/dist/test/src/persona/PersonaElementManager.d.ts.map +0 -1
- package/dist/test/src/persona/PersonaElementManager.js +0 -342
- package/dist/test/src/persona/PersonaLoader.d.ts +0 -34
- package/dist/test/src/persona/PersonaLoader.d.ts.map +0 -1
- package/dist/test/src/persona/PersonaLoader.js +0 -145
- package/dist/test/src/persona/PersonaManager.d.ts +0 -112
- package/dist/test/src/persona/PersonaManager.d.ts.map +0 -1
- package/dist/test/src/persona/PersonaManager.js +0 -341
- package/dist/test/src/persona/PersonaValidator.d.ts +0 -33
- package/dist/test/src/persona/PersonaValidator.d.ts.map +0 -1
- package/dist/test/src/persona/PersonaValidator.js +0 -157
- package/dist/test/src/persona/export-import/PersonaExporter.d.ts +0 -43
- package/dist/test/src/persona/export-import/PersonaExporter.d.ts.map +0 -1
- package/dist/test/src/persona/export-import/PersonaExporter.js +0 -99
- package/dist/test/src/persona/export-import/PersonaImporter.d.ts +0 -65
- package/dist/test/src/persona/export-import/PersonaImporter.d.ts.map +0 -1
- package/dist/test/src/persona/export-import/PersonaImporter.js +0 -315
- package/dist/test/src/persona/export-import/PersonaSharer.d.ts +0 -60
- package/dist/test/src/persona/export-import/PersonaSharer.d.ts.map +0 -1
- package/dist/test/src/persona/export-import/PersonaSharer.js +0 -502
- package/dist/test/src/persona/export-import/index.d.ts +0 -10
- package/dist/test/src/persona/export-import/index.d.ts.map +0 -1
- package/dist/test/src/persona/export-import/index.js +0 -7
- package/dist/test/src/persona/index.d.ts +0 -7
- package/dist/test/src/persona/index.d.ts.map +0 -1
- package/dist/test/src/persona/index.js +0 -7
- package/dist/test/src/portfolio/MigrationManager.d.ts +0 -44
- package/dist/test/src/portfolio/MigrationManager.d.ts.map +0 -1
- package/dist/test/src/portfolio/MigrationManager.js +0 -163
- package/dist/test/src/portfolio/PortfolioManager.d.ts +0 -54
- package/dist/test/src/portfolio/PortfolioManager.d.ts.map +0 -1
- package/dist/test/src/portfolio/PortfolioManager.js +0 -224
- package/dist/test/src/portfolio/types.d.ts +0 -18
- package/dist/test/src/portfolio/types.d.ts.map +0 -1
- package/dist/test/src/portfolio/types.js +0 -13
- package/dist/test/src/security/InputValidator.d.ts +0 -80
- package/dist/test/src/security/InputValidator.d.ts.map +0 -1
- package/dist/test/src/security/InputValidator.js +0 -436
- package/dist/test/src/security/audit/SecurityAuditor.d.ts +0 -44
- package/dist/test/src/security/audit/SecurityAuditor.d.ts.map +0 -1
- package/dist/test/src/security/audit/SecurityAuditor.js +0 -274
- package/dist/test/src/security/audit/config/suppressions.d.ts +0 -34
- package/dist/test/src/security/audit/config/suppressions.d.ts.map +0 -1
- package/dist/test/src/security/audit/config/suppressions.js +0 -575
- package/dist/test/src/security/audit/index.d.ts +0 -14
- package/dist/test/src/security/audit/index.d.ts.map +0 -1
- package/dist/test/src/security/audit/index.js +0 -15
- package/dist/test/src/security/audit/reporters/ConsoleReporter.d.ts +0 -46
- package/dist/test/src/security/audit/reporters/ConsoleReporter.d.ts.map +0 -1
- package/dist/test/src/security/audit/reporters/ConsoleReporter.js +0 -174
- package/dist/test/src/security/audit/reporters/JsonReporter.d.ts +0 -13
- package/dist/test/src/security/audit/reporters/JsonReporter.d.ts.map +0 -1
- package/dist/test/src/security/audit/reporters/JsonReporter.js +0 -25
- package/dist/test/src/security/audit/reporters/MarkdownReporter.d.ts +0 -13
- package/dist/test/src/security/audit/reporters/MarkdownReporter.d.ts.map +0 -1
- package/dist/test/src/security/audit/reporters/MarkdownReporter.js +0 -79
- package/dist/test/src/security/audit/rules/SecurityRules.d.ts +0 -20
- package/dist/test/src/security/audit/rules/SecurityRules.d.ts.map +0 -1
- package/dist/test/src/security/audit/rules/SecurityRules.js +0 -244
- package/dist/test/src/security/audit/scanners/CodeScanner.d.ts +0 -47
- package/dist/test/src/security/audit/scanners/CodeScanner.d.ts.map +0 -1
- package/dist/test/src/security/audit/scanners/CodeScanner.js +0 -174
- package/dist/test/src/security/audit/scanners/ConfigurationScanner.d.ts +0 -13
- package/dist/test/src/security/audit/scanners/ConfigurationScanner.d.ts.map +0 -1
- package/dist/test/src/security/audit/scanners/ConfigurationScanner.js +0 -22
- package/dist/test/src/security/audit/scanners/DependencyScanner.d.ts +0 -13
- package/dist/test/src/security/audit/scanners/DependencyScanner.d.ts.map +0 -1
- package/dist/test/src/security/audit/scanners/DependencyScanner.js +0 -22
- package/dist/test/src/security/audit/types.d.ts +0 -94
- package/dist/test/src/security/audit/types.d.ts.map +0 -1
- package/dist/test/src/security/audit/types.js +0 -6
- package/dist/test/src/security/commandValidator.d.ts +0 -7
- package/dist/test/src/security/commandValidator.d.ts.map +0 -1
- package/dist/test/src/security/commandValidator.js +0 -78
- package/dist/test/src/security/constants.d.ts +0 -24
- package/dist/test/src/security/constants.d.ts.map +0 -1
- package/dist/test/src/security/constants.js +0 -26
- package/dist/test/src/security/contentValidator.d.ts +0 -47
- package/dist/test/src/security/contentValidator.d.ts.map +0 -1
- package/dist/test/src/security/contentValidator.js +0 -301
- package/dist/test/src/security/errors.d.ts +0 -14
- package/dist/test/src/security/errors.d.ts.map +0 -1
- package/dist/test/src/security/errors.js +0 -28
- package/dist/test/src/security/fileLockManager.d.ts +0 -70
- package/dist/test/src/security/fileLockManager.d.ts.map +0 -1
- package/dist/test/src/security/fileLockManager.js +0 -187
- package/dist/test/src/security/index.d.ts +0 -12
- package/dist/test/src/security/index.d.ts.map +0 -1
- package/dist/test/src/security/index.js +0 -14
- package/dist/test/src/security/pathValidator.d.ts +0 -9
- package/dist/test/src/security/pathValidator.d.ts.map +0 -1
- package/dist/test/src/security/pathValidator.js +0 -98
- package/dist/test/src/security/regexValidator.d.ts +0 -59
- package/dist/test/src/security/regexValidator.d.ts.map +0 -1
- package/dist/test/src/security/regexValidator.js +0 -214
- package/dist/test/src/security/secureYamlParser.d.ts +0 -46
- package/dist/test/src/security/secureYamlParser.d.ts.map +0 -1
- package/dist/test/src/security/secureYamlParser.js +0 -203
- package/dist/test/src/security/securityMonitor.d.ts +0 -58
- package/dist/test/src/security/securityMonitor.d.ts.map +0 -1
- package/dist/test/src/security/securityMonitor.js +0 -108
- package/dist/test/src/security/tokenManager.d.ts +0 -85
- package/dist/test/src/security/tokenManager.d.ts.map +0 -1
- package/dist/test/src/security/tokenManager.js +0 -286
- package/dist/test/src/security/validators/unicodeValidator.d.ts +0 -97
- package/dist/test/src/security/validators/unicodeValidator.d.ts.map +0 -1
- package/dist/test/src/security/validators/unicodeValidator.js +0 -312
- package/dist/test/src/security/yamlValidator.d.ts +0 -21
- package/dist/test/src/security/yamlValidator.d.ts.map +0 -1
- package/dist/test/src/security/yamlValidator.js +0 -164
- package/dist/test/src/server/ServerSetup.d.ts +0 -35
- package/dist/test/src/server/ServerSetup.d.ts.map +0 -1
- package/dist/test/src/server/ServerSetup.js +0 -116
- package/dist/test/src/server/index.d.ts +0 -7
- package/dist/test/src/server/index.d.ts.map +0 -1
- package/dist/test/src/server/index.js +0 -7
- package/dist/test/src/server/startup.d.ts +0 -31
- package/dist/test/src/server/startup.d.ts.map +0 -1
- package/dist/test/src/server/startup.js +0 -67
- package/dist/test/src/server/tools/CollectionTools.d.ts +0 -10
- package/dist/test/src/server/tools/CollectionTools.d.ts.map +0 -1
- package/dist/test/src/server/tools/CollectionTools.js +0 -96
- package/dist/test/src/server/tools/ConfigTools.d.ts +0 -10
- package/dist/test/src/server/tools/ConfigTools.d.ts.map +0 -1
- package/dist/test/src/server/tools/ConfigTools.js +0 -63
- package/dist/test/src/server/tools/MarketplaceTools.d.ts +0 -10
- package/dist/test/src/server/tools/MarketplaceTools.d.ts.map +0 -1
- package/dist/test/src/server/tools/MarketplaceTools.js +0 -92
- package/dist/test/src/server/tools/PersonaTools.d.ts +0 -10
- package/dist/test/src/server/tools/PersonaTools.d.ts.map +0 -1
- package/dist/test/src/server/tools/PersonaTools.js +0 -257
- package/dist/test/src/server/tools/ToolRegistry.d.ts +0 -37
- package/dist/test/src/server/tools/ToolRegistry.d.ts.map +0 -1
- package/dist/test/src/server/tools/ToolRegistry.js +0 -40
- package/dist/test/src/server/tools/UpdateTools.d.ts +0 -10
- package/dist/test/src/server/tools/UpdateTools.d.ts.map +0 -1
- package/dist/test/src/server/tools/UpdateTools.js +0 -64
- package/dist/test/src/server/tools/UserTools.d.ts +0 -10
- package/dist/test/src/server/tools/UserTools.d.ts.map +0 -1
- package/dist/test/src/server/tools/UserTools.js +0 -51
- package/dist/test/src/server/tools/index.d.ts +0 -10
- package/dist/test/src/server/tools/index.d.ts.map +0 -1
- package/dist/test/src/server/tools/index.js +0 -10
- package/dist/test/src/server/types.d.ts +0 -34
- package/dist/test/src/server/types.d.ts.map +0 -1
- package/dist/test/src/server/types.js +0 -5
- package/dist/test/src/tools/debug.d.ts +0 -20
- package/dist/test/src/tools/debug.d.ts.map +0 -1
- package/dist/test/src/tools/debug.js +0 -37
- package/dist/test/src/types/cache.d.ts +0 -8
- package/dist/test/src/types/cache.d.ts.map +0 -1
- package/dist/test/src/types/cache.js +0 -5
- package/dist/test/src/types/collection.d.ts +0 -23
- package/dist/test/src/types/collection.d.ts.map +0 -1
- package/dist/test/src/types/collection.js +0 -5
- package/dist/test/src/types/elements/IElement.d.ts +0 -123
- package/dist/test/src/types/elements/IElement.d.ts.map +0 -1
- package/dist/test/src/types/elements/IElement.js +0 -30
- package/dist/test/src/types/elements/IElementManager.d.ts +0 -65
- package/dist/test/src/types/elements/IElementManager.d.ts.map +0 -1
- package/dist/test/src/types/elements/IElementManager.js +0 -6
- package/dist/test/src/types/elements/IRatingManager.d.ts +0 -109
- package/dist/test/src/types/elements/IRatingManager.d.ts.map +0 -1
- package/dist/test/src/types/elements/IRatingManager.js +0 -6
- package/dist/test/src/types/elements/IReferenceResolver.d.ts +0 -52
- package/dist/test/src/types/elements/IReferenceResolver.d.ts.map +0 -1
- package/dist/test/src/types/elements/IReferenceResolver.js +0 -6
- package/dist/test/src/types/elements/RatingBreakdowns.d.ts +0 -49
- package/dist/test/src/types/elements/RatingBreakdowns.d.ts.map +0 -1
- package/dist/test/src/types/elements/RatingBreakdowns.js +0 -6
- package/dist/test/src/types/elements/index.d.ts +0 -9
- package/dist/test/src/types/elements/index.d.ts.map +0 -1
- package/dist/test/src/types/elements/index.js +0 -11
- package/dist/test/src/types/index.d.ts +0 -9
- package/dist/test/src/types/index.d.ts.map +0 -1
- package/dist/test/src/types/index.js +0 -9
- package/dist/test/src/types/marketplace.d.ts +0 -23
- package/dist/test/src/types/marketplace.d.ts.map +0 -1
- package/dist/test/src/types/marketplace.js +0 -5
- package/dist/test/src/types/mcp.d.ts +0 -84
- package/dist/test/src/types/mcp.d.ts.map +0 -1
- package/dist/test/src/types/mcp.js +0 -80
- package/dist/test/src/types/persona.d.ts +0 -30
- package/dist/test/src/types/persona.d.ts.map +0 -1
- package/dist/test/src/types/persona.js +0 -5
- package/dist/test/src/update/BackupManager.d.ts +0 -46
- package/dist/test/src/update/BackupManager.d.ts.map +0 -1
- package/dist/test/src/update/BackupManager.js +0 -261
- package/dist/test/src/update/DependencyChecker.d.ts +0 -41
- package/dist/test/src/update/DependencyChecker.d.ts.map +0 -1
- package/dist/test/src/update/DependencyChecker.js +0 -132
- package/dist/test/src/update/RateLimiter.d.ts +0 -80
- package/dist/test/src/update/RateLimiter.d.ts.map +0 -1
- package/dist/test/src/update/RateLimiter.js +0 -172
- package/dist/test/src/update/SignatureVerifier.d.ts +0 -71
- package/dist/test/src/update/SignatureVerifier.d.ts.map +0 -1
- package/dist/test/src/update/SignatureVerifier.js +0 -214
- package/dist/test/src/update/UpdateChecker.d.ts +0 -127
- package/dist/test/src/update/UpdateChecker.d.ts.map +0 -1
- package/dist/test/src/update/UpdateChecker.js +0 -469
- package/dist/test/src/update/UpdateManager.d.ts +0 -41
- package/dist/test/src/update/UpdateManager.d.ts.map +0 -1
- package/dist/test/src/update/UpdateManager.js +0 -260
- package/dist/test/src/update/VersionManager.d.ts +0 -31
- package/dist/test/src/update/VersionManager.d.ts.map +0 -1
- package/dist/test/src/update/VersionManager.js +0 -134
- package/dist/test/src/update/index.d.ts +0 -9
- package/dist/test/src/update/index.d.ts.map +0 -1
- package/dist/test/src/update/index.js +0 -9
- package/dist/test/src/utils/filesystem.d.ts +0 -29
- package/dist/test/src/utils/filesystem.d.ts.map +0 -1
- package/dist/test/src/utils/filesystem.js +0 -94
- package/dist/test/src/utils/git.d.ts +0 -32
- package/dist/test/src/utils/git.d.ts.map +0 -1
- package/dist/test/src/utils/git.js +0 -65
- package/dist/test/src/utils/index.d.ts +0 -7
- package/dist/test/src/utils/index.d.ts.map +0 -1
- package/dist/test/src/utils/index.js +0 -7
- package/dist/test/src/utils/logger.d.ts +0 -45
- package/dist/test/src/utils/logger.d.ts.map +0 -1
- package/dist/test/src/utils/logger.js +0 -91
- package/dist/test/src/utils/version.d.ts +0 -25
- package/dist/test/src/utils/version.d.ts.map +0 -1
- package/dist/test/src/utils/version.js +0 -97
- package/dist/test/test/__tests__/integration/helpers/file-utils.d.ts +0 -33
- package/dist/test/test/__tests__/integration/helpers/file-utils.d.ts.map +0 -1
- package/dist/test/test/__tests__/integration/helpers/file-utils.js +0 -83
- package/dist/test/test/__tests__/integration/helpers/test-fixtures.d.ts +0 -26
- package/dist/test/test/__tests__/integration/helpers/test-fixtures.d.ts.map +0 -1
- package/dist/test/test/__tests__/integration/helpers/test-fixtures.js +0 -95
- package/dist/test/test/__tests__/integration/helpers/test-server.d.ts +0 -26
- package/dist/test/test/__tests__/integration/helpers/test-server.d.ts.map +0 -1
- package/dist/test/test/__tests__/integration/helpers/test-server.js +0 -41
- package/dist/test/test/__tests__/integration/setup.d.ts +0 -8
- package/dist/test/test/__tests__/integration/setup.d.ts.map +0 -1
- package/dist/test/test/__tests__/integration/setup.js +0 -31
- package/dist/test/test/__tests__/integration/teardown.d.ts +0 -5
- package/dist/test/test/__tests__/integration/teardown.d.ts.map +0 -1
- package/dist/test/test/__tests__/integration/teardown.js +0 -23
- package/dist/test/test/__tests__/security/framework/RapidSecurityTesting.d.ts +0 -34
- package/dist/test/test/__tests__/security/framework/RapidSecurityTesting.d.ts.map +0 -1
- package/dist/test/test/__tests__/security/framework/RapidSecurityTesting.js +0 -224
- package/dist/test/test/__tests__/security/framework/SecurityTestFramework.d.ts +0 -89
- package/dist/test/test/__tests__/security/framework/SecurityTestFramework.d.ts.map +0 -1
- package/dist/test/test/__tests__/security/framework/SecurityTestFramework.js +0 -543
- package/dist/test/test/__tests__/security/index.d.ts +0 -46
- package/dist/test/test/__tests__/security/index.d.ts.map +0 -1
- package/dist/test/test/__tests__/security/index.js +0 -98
- package/dist/test/test/__tests__/security/setup.d.ts +0 -3
- package/dist/test/test/__tests__/security/setup.d.ts.map +0 -1
- package/dist/test/test/__tests__/security/setup.js +0 -23
- package/dist/types/marketplace.d.ts +0 -23
- package/dist/types/marketplace.d.ts.map +0 -1
- package/dist/types/marketplace.js +0 -5
|
@@ -1,274 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Security Auditor - Core orchestrator for security scanning
|
|
3
|
-
* Implements automated security auditing for DollhouseMCP (Issue #53)
|
|
4
|
-
*/
|
|
5
|
-
import { CodeScanner } from './scanners/CodeScanner.js';
|
|
6
|
-
import { DependencyScanner } from './scanners/DependencyScanner.js';
|
|
7
|
-
import { ConfigurationScanner } from './scanners/ConfigurationScanner.js';
|
|
8
|
-
import { ConsoleReporter } from './reporters/ConsoleReporter.js';
|
|
9
|
-
import { MarkdownReporter } from './reporters/MarkdownReporter.js';
|
|
10
|
-
import { JsonReporter } from './reporters/JsonReporter.js';
|
|
11
|
-
import { shouldSuppress } from './config/suppressions.js';
|
|
12
|
-
import fs from 'fs/promises';
|
|
13
|
-
export class SecurityAuditor {
|
|
14
|
-
config;
|
|
15
|
-
scanners = [];
|
|
16
|
-
suppressions = new Map();
|
|
17
|
-
constructor(config) {
|
|
18
|
-
this.config = config;
|
|
19
|
-
this.initializeScanners();
|
|
20
|
-
this.loadSuppressions();
|
|
21
|
-
}
|
|
22
|
-
/**
|
|
23
|
-
* Initialize enabled scanners based on configuration
|
|
24
|
-
*/
|
|
25
|
-
initializeScanners() {
|
|
26
|
-
if (this.config.scanners.code.enabled) {
|
|
27
|
-
this.scanners.push(new CodeScanner(this.config.scanners.code));
|
|
28
|
-
}
|
|
29
|
-
if (this.config.scanners.dependencies.enabled) {
|
|
30
|
-
this.scanners.push(new DependencyScanner(this.config.scanners.dependencies));
|
|
31
|
-
}
|
|
32
|
-
if (this.config.scanners.configuration.enabled) {
|
|
33
|
-
this.scanners.push(new ConfigurationScanner(this.config.scanners.configuration));
|
|
34
|
-
}
|
|
35
|
-
// Audit logging would go here if SecurityMonitor supported audit events
|
|
36
|
-
console.log(`SecurityAuditor: Initialized ${this.scanners.length} security scanners`);
|
|
37
|
-
}
|
|
38
|
-
/**
|
|
39
|
-
* Load suppression rules from configuration
|
|
40
|
-
*/
|
|
41
|
-
loadSuppressions() {
|
|
42
|
-
if (!this.config.suppressions)
|
|
43
|
-
return;
|
|
44
|
-
for (const suppression of this.config.suppressions) {
|
|
45
|
-
const key = suppression.file || '*';
|
|
46
|
-
if (!this.suppressions.has(key)) {
|
|
47
|
-
this.suppressions.set(key, new Set());
|
|
48
|
-
}
|
|
49
|
-
this.suppressions.get(key).add(suppression.rule);
|
|
50
|
-
}
|
|
51
|
-
}
|
|
52
|
-
/**
|
|
53
|
-
* Run security audit on the project
|
|
54
|
-
*/
|
|
55
|
-
async audit(projectRoot = process.cwd()) {
|
|
56
|
-
const startTime = Date.now();
|
|
57
|
-
const context = { projectRoot };
|
|
58
|
-
const allFindings = [];
|
|
59
|
-
const errors = [];
|
|
60
|
-
const scannedFilesSet = new Set();
|
|
61
|
-
console.log(`SecurityAuditor: Starting security audit of ${projectRoot}`);
|
|
62
|
-
// Run all enabled scanners
|
|
63
|
-
for (const scanner of this.scanners) {
|
|
64
|
-
try {
|
|
65
|
-
const findings = await scanner.scan(context);
|
|
66
|
-
const filteredFindings = this.filterSuppressions(findings);
|
|
67
|
-
allFindings.push(...filteredFindings);
|
|
68
|
-
// Track unique files that were scanned
|
|
69
|
-
for (const finding of findings) {
|
|
70
|
-
if (finding.file) {
|
|
71
|
-
scannedFilesSet.add(finding.file);
|
|
72
|
-
}
|
|
73
|
-
}
|
|
74
|
-
}
|
|
75
|
-
catch (error) {
|
|
76
|
-
const errorMessage = `Scanner ${scanner.name} failed: ${error instanceof Error ? error.message : String(error)}`;
|
|
77
|
-
errors.push(errorMessage);
|
|
78
|
-
console.error(`SecurityAuditor: ${errorMessage}`);
|
|
79
|
-
}
|
|
80
|
-
}
|
|
81
|
-
const duration = Date.now() - startTime;
|
|
82
|
-
const result = this.createScanResult(allFindings, duration, scannedFilesSet.size, errors);
|
|
83
|
-
// Log audit completion
|
|
84
|
-
console.log(`SecurityAuditor: Audit completed: ${result.summary.total} findings in ${duration}ms`);
|
|
85
|
-
// Generate reports
|
|
86
|
-
await this.generateReports(result);
|
|
87
|
-
// Check if build should fail
|
|
88
|
-
if (this.shouldFailBuild(result)) {
|
|
89
|
-
throw new Error(`Security audit failed: ${result.summary.bySeverity.critical} critical, ${result.summary.bySeverity.high} high severity issues found`);
|
|
90
|
-
}
|
|
91
|
-
return result;
|
|
92
|
-
}
|
|
93
|
-
/**
|
|
94
|
-
* Filter out suppressed findings
|
|
95
|
-
*/
|
|
96
|
-
filterSuppressions(findings) {
|
|
97
|
-
const suppressedFindings = [];
|
|
98
|
-
const filtered = findings.filter(finding => {
|
|
99
|
-
try {
|
|
100
|
-
// Check comprehensive suppressions (includes both file-based and pattern-based)
|
|
101
|
-
if (shouldSuppress(finding.ruleId, finding.file)) {
|
|
102
|
-
// Log suppression for audit trail if verbose mode is enabled
|
|
103
|
-
if (this.config.reporting?.verbose) {
|
|
104
|
-
suppressedFindings.push({
|
|
105
|
-
rule: finding.ruleId,
|
|
106
|
-
file: finding.file
|
|
107
|
-
});
|
|
108
|
-
}
|
|
109
|
-
return false;
|
|
110
|
-
}
|
|
111
|
-
// Check legacy config-based suppressions if they exist
|
|
112
|
-
// This maintains backward compatibility with existing configs
|
|
113
|
-
if (this.config.suppressions && this.config.suppressions.length > 0) {
|
|
114
|
-
const globalSuppressions = this.suppressions.get('*');
|
|
115
|
-
if (globalSuppressions?.has(finding.ruleId)) {
|
|
116
|
-
if (this.config.reporting?.verbose) {
|
|
117
|
-
suppressedFindings.push({
|
|
118
|
-
rule: finding.ruleId,
|
|
119
|
-
file: finding.file,
|
|
120
|
-
reason: 'Config-based global suppression'
|
|
121
|
-
});
|
|
122
|
-
}
|
|
123
|
-
return false;
|
|
124
|
-
}
|
|
125
|
-
if (finding.file) {
|
|
126
|
-
const fileSuppressions = this.suppressions.get(finding.file);
|
|
127
|
-
if (fileSuppressions?.has(finding.ruleId)) {
|
|
128
|
-
if (this.config.reporting?.verbose) {
|
|
129
|
-
suppressedFindings.push({
|
|
130
|
-
rule: finding.ruleId,
|
|
131
|
-
file: finding.file,
|
|
132
|
-
reason: 'Config-based file suppression'
|
|
133
|
-
});
|
|
134
|
-
}
|
|
135
|
-
return false;
|
|
136
|
-
}
|
|
137
|
-
}
|
|
138
|
-
}
|
|
139
|
-
return true;
|
|
140
|
-
}
|
|
141
|
-
catch (error) {
|
|
142
|
-
// If suppression check fails, log error but don't suppress the finding
|
|
143
|
-
console.error(`Error checking suppression for ${finding.ruleId} in ${finding.file}:`, error);
|
|
144
|
-
return true;
|
|
145
|
-
}
|
|
146
|
-
});
|
|
147
|
-
// Log suppression summary if verbose and suppressions were applied
|
|
148
|
-
if (this.config.reporting?.verbose && suppressedFindings.length > 0) {
|
|
149
|
-
console.log(`\nSecurityAuditor: Suppressed ${suppressedFindings.length} findings:`);
|
|
150
|
-
suppressedFindings.forEach(s => {
|
|
151
|
-
console.log(` - ${s.rule} in ${s.file || 'global'}${s.reason ? ` (${s.reason})` : ''}`);
|
|
152
|
-
});
|
|
153
|
-
}
|
|
154
|
-
return filtered;
|
|
155
|
-
}
|
|
156
|
-
/**
|
|
157
|
-
* Create scan result summary
|
|
158
|
-
*/
|
|
159
|
-
createScanResult(findings, duration, scannedFiles, errors) {
|
|
160
|
-
const bySeverity = {
|
|
161
|
-
info: 0,
|
|
162
|
-
low: 0,
|
|
163
|
-
medium: 0,
|
|
164
|
-
high: 0,
|
|
165
|
-
critical: 0
|
|
166
|
-
};
|
|
167
|
-
const byCategory = {};
|
|
168
|
-
for (const finding of findings) {
|
|
169
|
-
bySeverity[finding.severity]++;
|
|
170
|
-
// Extract category from ruleId (e.g., SEC-CODE-001 -> CODE)
|
|
171
|
-
const category = finding.ruleId.split('-')[1] || 'OTHER';
|
|
172
|
-
byCategory[category] = (byCategory[category] || 0) + 1;
|
|
173
|
-
}
|
|
174
|
-
return {
|
|
175
|
-
timestamp: new Date(),
|
|
176
|
-
duration,
|
|
177
|
-
scannedFiles,
|
|
178
|
-
findings,
|
|
179
|
-
summary: {
|
|
180
|
-
total: findings.length,
|
|
181
|
-
bySeverity,
|
|
182
|
-
byCategory
|
|
183
|
-
},
|
|
184
|
-
errors: errors.length > 0 ? errors : undefined
|
|
185
|
-
};
|
|
186
|
-
}
|
|
187
|
-
/**
|
|
188
|
-
* Generate reports in configured formats
|
|
189
|
-
*/
|
|
190
|
-
async generateReports(result) {
|
|
191
|
-
for (const format of this.config.reporting.formats) {
|
|
192
|
-
try {
|
|
193
|
-
switch (format) {
|
|
194
|
-
case 'console':
|
|
195
|
-
const consoleReporter = new ConsoleReporter(result);
|
|
196
|
-
console.log(consoleReporter.generate());
|
|
197
|
-
break;
|
|
198
|
-
case 'markdown':
|
|
199
|
-
const markdownReporter = new MarkdownReporter(result);
|
|
200
|
-
const mdReport = markdownReporter.generate();
|
|
201
|
-
await fs.writeFile('security-audit-report.md', mdReport);
|
|
202
|
-
break;
|
|
203
|
-
case 'json':
|
|
204
|
-
const jsonReporter = new JsonReporter(result);
|
|
205
|
-
const jsonReport = JSON.stringify(jsonReporter.generate(), null, 2);
|
|
206
|
-
await fs.writeFile('security-audit-report.json', jsonReport);
|
|
207
|
-
break;
|
|
208
|
-
// SARIF format would be implemented similarly
|
|
209
|
-
}
|
|
210
|
-
}
|
|
211
|
-
catch (error) {
|
|
212
|
-
console.error(`SecurityAuditor: Failed to generate ${format} report: ${error instanceof Error ? error.message : String(error)}`);
|
|
213
|
-
}
|
|
214
|
-
}
|
|
215
|
-
}
|
|
216
|
-
/**
|
|
217
|
-
* Determine if the build should fail based on findings
|
|
218
|
-
*/
|
|
219
|
-
shouldFailBuild(result) {
|
|
220
|
-
const thresholds = {
|
|
221
|
-
info: 5,
|
|
222
|
-
low: 4,
|
|
223
|
-
medium: 3,
|
|
224
|
-
high: 2,
|
|
225
|
-
critical: 1
|
|
226
|
-
};
|
|
227
|
-
const failThreshold = thresholds[this.config.reporting.failOnSeverity];
|
|
228
|
-
for (const [severity, count] of Object.entries(result.summary.bySeverity)) {
|
|
229
|
-
if (count > 0 && thresholds[severity] <= failThreshold) {
|
|
230
|
-
return true;
|
|
231
|
-
}
|
|
232
|
-
}
|
|
233
|
-
return false;
|
|
234
|
-
}
|
|
235
|
-
/**
|
|
236
|
-
* Get default configuration
|
|
237
|
-
*/
|
|
238
|
-
static getDefaultConfig() {
|
|
239
|
-
return {
|
|
240
|
-
enabled: true,
|
|
241
|
-
scanners: {
|
|
242
|
-
code: {
|
|
243
|
-
enabled: true,
|
|
244
|
-
rules: ['OWASP-Top-10', 'CWE-Top-25', 'DollhouseMCP-Security'],
|
|
245
|
-
exclude: ['node_modules/**', 'dist/**', 'coverage/**']
|
|
246
|
-
},
|
|
247
|
-
dependencies: {
|
|
248
|
-
enabled: true,
|
|
249
|
-
severityThreshold: 'high',
|
|
250
|
-
checkLicenses: true,
|
|
251
|
-
allowedLicenses: ['MIT', 'Apache-2.0', 'BSD-3-Clause', 'ISC', 'AGPL-3.0']
|
|
252
|
-
},
|
|
253
|
-
configuration: {
|
|
254
|
-
enabled: true,
|
|
255
|
-
checkFiles: ['*.yml', '*.yaml', '*.json', '.env.example']
|
|
256
|
-
}
|
|
257
|
-
},
|
|
258
|
-
reporting: {
|
|
259
|
-
formats: ['console', 'markdown'],
|
|
260
|
-
createIssues: true,
|
|
261
|
-
commentOnPr: true,
|
|
262
|
-
failOnSeverity: 'high'
|
|
263
|
-
},
|
|
264
|
-
suppressions: [
|
|
265
|
-
{
|
|
266
|
-
rule: 'SEC-TEST-001',
|
|
267
|
-
file: '__tests__/**/*',
|
|
268
|
-
reason: 'Test files may contain security test patterns'
|
|
269
|
-
}
|
|
270
|
-
]
|
|
271
|
-
};
|
|
272
|
-
}
|
|
273
|
-
}
|
|
274
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiU2VjdXJpdHlBdWRpdG9yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL3NlY3VyaXR5L2F1ZGl0L1NlY3VyaXR5QXVkaXRvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7O0dBR0c7QUFXSCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDeEQsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFDcEUsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sb0NBQW9DLENBQUM7QUFDMUUsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLGdDQUFnQyxDQUFDO0FBQ2pFLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLGlDQUFpQyxDQUFDO0FBQ25FLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUMzRCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFFMUQsT0FBTyxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBRTdCLE1BQU0sT0FBTyxlQUFlO0lBQ2xCLE1BQU0sQ0FBc0I7SUFDNUIsUUFBUSxHQUFzQixFQUFFLENBQUM7SUFDakMsWUFBWSxHQUE2QixJQUFJLEdBQUcsRUFBRSxDQUFDO0lBRTNELFlBQVksTUFBMkI7UUFDckMsSUFBSSxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUM7UUFDckIsSUFBSSxDQUFDLGtCQUFrQixFQUFFLENBQUM7UUFDMUIsSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUM7SUFDMUIsQ0FBQztJQUVEOztPQUVHO0lBQ0ssa0JBQWtCO1FBQ3hCLElBQUksSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO1lBQ3RDLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLElBQUksV0FBVyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLElB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QztpQkFDMUQ7YUFDRjtZQUNELFNBQVMsRUFBRTtnQkFDVCxPQUFPLEVBQUUsQ0FBQyxTQUFTLEVBQUUsVUFBVSxDQUFDO2dCQUNoQyxZQUFZLEVBQUUsSUFBSTtnQkFDbEIsV0FBVyxFQUFFLElBQUk7Z0JBQ2pCLGNBQWMsRUFBRSxNQUFNO2FBQ3ZCO1lBQ0QsWUFBWSxFQUFFO2dCQUNaO29CQUNFLElBQUksRUFBRSxjQUFjO29CQUNwQixJQUFJLEVBQUUsZ0JBQWdCO29CQUN0QixNQUFNLEVBQUUsK0NBQStDO2lCQUN4RDthQUNGO1NBQ0YsQ0FBQztJQUNKLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogU2VjdXJpdHkgQXVkaXRvciAtIENvcmUgb3JjaGVzdHJhdG9yIGZvciBzZWN1cml0eSBzY2FubmluZ1xuICogSW1wbGVtZW50cyBhdXRvbWF0ZWQgc2VjdXJpdHkgYXVkaXRpbmcgZm9yIERvbGxob3VzZU1DUCAoSXNzdWUgIzUzKVxuICovXG5cbi8vIGltcG9ydCB7IFNlY3VyaXR5TW9uaXRvciB9IGZyb20gJy4uL3NlY3VyaXR5TW9uaXRvci5qcyc7XG5pbXBvcnQgdHlwZSB7IFxuICBTZWN1cml0eUF1ZGl0Q29uZmlnLCBcbiAgU2NhbkNvbnRleHQsIFxuICBTY2FuUmVzdWx0LCBcbiAgU2VjdXJpdHlGaW5kaW5nLCBcbiAgU2VjdXJpdHlTY2FubmVyLFxuICBTZXZlcml0eUxldmVsIFxufSBmcm9tICcuL3R5cGVzLmpzJztcbmltcG9ydCB7IENvZGVTY2FubmVyIH0gZnJvbSAnLi9zY2FubmVycy9Db2RlU2Nhbm5lci5qcyc7XG5pbXBvcnQgeyBEZXBlbmRlbmN5U2Nhbm5lciB9IGZyb20gJy4vc2Nhbm5lcnMvRGVwZW5kZW5jeVNjYW5uZXIuanMnO1xuaW1wb3J0IHsgQ29uZmlndXJhdGlvblNjYW5uZXIgfSBmcm9tICcuL3NjYW5uZXJzL0NvbmZpZ3VyYXRpb25TY2FubmVyLmpzJztcbmltcG9ydCB7IENvbnNvbGVSZXBvcnRlciB9IGZyb20gJy4vcmVwb3J0ZXJzL0NvbnNvbGVSZXBvcnRlci5qcyc7XG5pbXBvcnQgeyBNYXJrZG93blJlcG9ydGVyIH0gZnJvbSAnLi9yZXBvcnRlcnMvTWFya2Rvd25SZXBvcnRlci5qcyc7XG5pbXBvcnQgeyBKc29uUmVwb3J0ZXIgfSBmcm9tICcuL3JlcG9ydGVycy9Kc29uUmVwb3J0ZXIuanMnO1xuaW1wb3J0IHsgc2hvdWxkU3VwcHJlc3MgfSBmcm9tICcuL2NvbmZpZy9zdXBwcmVzc2lvbnMuanMnO1xuaW1wb3J0IHBhdGggZnJvbSAncGF0aCc7XG5pbXBvcnQgZnMgZnJvbSAnZnMvcHJvbWlzZXMnO1xuXG5leHBvcnQgY2xhc3MgU2VjdXJpdHlBdWRpdG9yIHtcbiAgcHJpdmF0ZSBjb25maWc6IFNlY3VyaXR5QXVkaXRDb25maWc7XG4gIHByaXZhdGUgc2Nhbm5lcnM6IFNlY3VyaXR5U2Nhbm5lcltdID0gW107XG4gIHByaXZhdGUgc3VwcHJlc3Npb25zOiBNYXA8c3RyaW5nLCBTZXQ8c3RyaW5nPj4gPSBuZXcgTWFwKCk7XG5cbiAgY29uc3RydWN0b3IoY29uZmlnOiBTZWN1cml0eUF1ZGl0Q29uZmlnKSB7XG4gICAgdGhpcy5jb25maWcgPSBjb25maWc7XG4gICAgdGhpcy5pbml0aWFsaXplU2Nhbm5lcnMoKTtcbiAgICB0aGlzLmxvYWRTdXBwcmVzc2lvbnMoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBJbml0aWFsaXplIGVuYWJsZWQgc2Nhbm5lcnMgYmFzZWQgb24gY29uZmlndXJhdGlvblxuICAgKi9cbiAgcHJpdmF0ZSBpbml0aWFsaXplU2Nhbm5lcnMoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuY29uZmlnLnNjYW5uZXJzLmNvZGUuZW5hYmxlZCkge1xuICAgICAgdGhpcy5zY2FubmVycy5wdXNoKG5ldyBDb2RlU2Nhbm5lcih0aGlzLmNvbmZpZy5zY2FubmVycy5jb2RlKSk7XG4gICAgfVxuICAgIFxuICAgIGlmICh0aGlzLmNvbmZpZy5zY2FubmVycy5kZXBlbmRlbmNpZXMuZW5hYmxlZCkge1xuICAgICAgdGhpcy5zY2FubmVycy5wdXNoKG5ldyBEZXBlbmRlbmN5U2Nhbm5lcih0aGlzLmNvbmZpZy5zY2FubmVycy5kZXBlbmRlbmNpZXMpKTtcbiAgICB9XG4gICAgXG4gICAgaWYgKHRoaXMuY29uZmlnLnNjYW5uZXJzLmNvbmZpZ3VyYXRpb24uZW5hYmxlZCkge1xuICAgICAgdGhpcy5zY2FubmVycy5wdXNoKG5ldyBDb25maWd1cmF0aW9uU2Nhbm5lcih0aGlzLmNvbmZpZy5zY2FubmVycy5jb25maWd1cmF0aW9uKSk7XG4gICAgfVxuXG4gICAgLy8gQXVkaXQgbG9nZ2luZyB3b3VsZCBnbyBoZXJlIGlmIFNlY3VyaXR5TW9uaXRvciBzdXBwb3J0ZWQgYXVkaXQgZXZlbnRzXG4gICAgY29uc29sZS5sb2coYFNlY3VyaXR5QXVkaXRvcjogSW5pdGlhbGl6ZWQgJHt0aGlzLnNjYW5uZXJzLmxlbmd0aH0gc2VjdXJpdHkgc2Nhbm5lcnNgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBMb2FkIHN1cHByZXNzaW9uIHJ1bGVzIGZyb20gY29uZmlndXJhdGlvblxuICAgKi9cbiAgcHJpdmF0ZSBsb2FkU3VwcHJlc3Npb25zKCk6IHZvaWQge1xuICAgIGlmICghdGhpcy5jb25maWcuc3VwcHJlc3Npb25zKSByZXR1cm47XG5cbiAgICBmb3IgKGNvbnN0IHN1cHByZXNzaW9uIG9mIHRoaXMuY29uZmlnLnN1cHByZXNzaW9ucykge1xuICAgICAgY29uc3Qga2V5ID0gc3VwcHJlc3Npb24uZmlsZSB8fCAnKic7XG4gICAgICBpZiAoIXRoaXMuc3VwcHJlc3Npb25zLmhhcyhrZXkpKSB7XG4gICAgICAgIHRoaXMuc3VwcHJlc3Npb25zLnNldChrZXksIG5ldyBTZXQoKSk7XG4gICAgICB9XG4gICAgICB0aGlzLnN1cHByZXNzaW9ucy5nZXQoa2V5KSEuYWRkKHN1cHByZXNzaW9uLnJ1bGUpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBSdW4gc2VjdXJpdHkgYXVkaXQgb24gdGhlIHByb2plY3RcbiAgICovXG4gIGFzeW5jIGF1ZGl0KHByb2plY3RSb290OiBzdHJpbmcgPSBwcm9jZXNzLmN3ZCgpKTogUHJvbWlzZTxTY2FuUmVzdWx0PiB7XG4gICAgY29uc3Qgc3RhcnRUaW1lID0gRGF0ZS5ub3coKTtcbiAgICBjb25zdCBjb250ZXh0OiBTY2FuQ29udGV4dCA9IHsgcHJvamVjdFJvb3QgfTtcbiAgICBjb25zdCBhbGxGaW5kaW5nczogU2VjdXJpdHlGaW5kaW5nW10gPSBbXTtcbiAgICBjb25zdCBlcnJvcnM6IHN0cmluZ1tdID0gW107XG4gICAgY29uc3Qgc2Nhbm5lZEZpbGVzU2V0ID0gbmV3IFNldDxzdHJpbmc+KCk7XG5cbiAgICBjb25zb2xlLmxvZyhgU2VjdXJpdHlBdWRpdG9yOiBTdGFydGluZyBzZWN1cml0eSBhdWRpdCBvZiAke3Byb2plY3RSb290fWApO1xuXG4gICAgLy8gUnVuIGFsbCBlbmFibGVkIHNjYW5uZXJzXG4gICAgZm9yIChjb25zdCBzY2FubmVyIG9mIHRoaXMuc2Nhbm5lcnMpIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIGNvbnN0IGZpbmRpbmdzID0gYXdhaXQgc2Nhbm5lci5zY2FuKGNvbnRleHQpO1xuICAgICAgICBjb25zdCBmaWx0ZXJlZEZpbmRpbmdzID0gdGhpcy5maWx0ZXJTdXBwcmVzc2lvbnMoZmluZGluZ3MpO1xuICAgICAgICBhbGxGaW5kaW5ncy5wdXNoKC4uLmZpbHRlcmVkRmluZGluZ3MpO1xuICAgICAgICAvLyBUcmFjayB1bmlxdWUgZmlsZXMgdGhhdCB3ZXJlIHNjYW5uZWRcbiAgICAgICAgZm9yIChjb25zdCBmaW5kaW5nIG9mIGZpbmRpbmdzKSB7XG4gICAgICAgICAgaWYgKGZpbmRpbmcuZmlsZSkge1xuICAgICAgICAgICAgc2Nhbm5lZEZpbGVzU2V0LmFkZChmaW5kaW5nLmZpbGUpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgY29uc3QgZXJyb3JNZXNzYWdlID0gYFNjYW5uZXIgJHtzY2FubmVyLm5hbWV9IGZhaWxlZDogJHtlcnJvciBpbnN0YW5jZW9mIEVycm9yID8gZXJyb3IubWVzc2FnZSA6IFN0cmluZyhlcnJvcil9YDtcbiAgICAgICAgZXJyb3JzLnB1c2goZXJyb3JNZXNzYWdlKTtcbiAgICAgICAgY29uc29sZS5lcnJvcihgU2VjdXJpdHlBdWRpdG9yOiAke2Vycm9yTWVzc2FnZX1gKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBjb25zdCBkdXJhdGlvbiA9IERhdGUubm93KCkgLSBzdGFydFRpbWU7XG4gICAgY29uc3QgcmVzdWx0ID0gdGhpcy5jcmVhdGVTY2FuUmVzdWx0KGFsbEZpbmRpbmdzLCBkdXJhdGlvbiwgc2Nhbm5lZEZpbGVzU2V0LnNpemUsIGVycm9ycyk7XG5cbiAgICAvLyBMb2cgYXVkaXQgY29tcGxldGlvblxuICAgIGNvbnNvbGUubG9nKGBTZWN1cml0eUF1ZGl0b3I6IEF1ZGl0IGNvbXBsZXRlZDogJHtyZXN1bHQuc3VtbWFyeS50b3RhbH0gZmluZGluZ3MgaW4gJHtkdXJhdGlvbn1tc2ApO1xuXG4gICAgLy8gR2VuZXJhdGUgcmVwb3J0c1xuICAgIGF3YWl0IHRoaXMuZ2VuZXJhdGVSZXBvcnRzKHJlc3VsdCk7XG5cbiAgICAvLyBDaGVjayBpZiBidWlsZCBzaG91bGQgZmFpbFxuICAgIGlmICh0aGlzLnNob3VsZEZhaWxCdWlsZChyZXN1bHQpKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYFNlY3VyaXR5IGF1ZGl0IGZhaWxlZDogJHtyZXN1bHQuc3VtbWFyeS5ieVNldmVyaXR5LmNyaXRpY2FsfSBjcml0aWNhbCwgJHtyZXN1bHQuc3VtbWFyeS5ieVNldmVyaXR5LmhpZ2h9IGhpZ2ggc2V2ZXJpdHkgaXNzdWVzIGZvdW5kYCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuXG4gIC8qKlxuICAgKiBGaWx0ZXIgb3V0IHN1cHByZXNzZWQgZmluZGluZ3NcbiAgICovXG4gIHByaXZhdGUgZmlsdGVyU3VwcHJlc3Npb25zKGZpbmRpbmdzOiBTZWN1cml0eUZpbmRpbmdbXSk6IFNlY3VyaXR5RmluZGluZ1tdIHtcbiAgICBjb25zdCBzdXBwcmVzc2VkRmluZGluZ3M6IEFycmF5PHtydWxlOiBzdHJpbmc7IGZpbGU/OiBzdHJpbmc7IHJlYXNvbj86IHN0cmluZ30+ID0gW107XG4gICAgXG4gICAgY29uc3QgZmlsdGVyZWQgPSBmaW5kaW5ncy5maWx0ZXIoZmluZGluZyA9PiB7XG4gICAgICB0cnkge1xuICAgICAgICAvLyBDaGVjayBjb21wcmVoZW5zaXZlIHN1cHByZXNzaW9ucyAoaW5jbHVkZXMgYm90aCBmaWxlLWJhc2VkIGFuZCBwYXR0ZXJuLWJhc2VkKVxuICAgICAgICBpZiAoc2hvdWxkU3VwcHJlc3MoZmluZGluZy5ydWxlSWQsIGZpbmRpbmcuZmlsZSkpIHtcbiAgICAgICAgICAvLyBMb2cgc3VwcHJlc3Npb24gZm9yIGF1ZGl0IHRyYWlsIGlmIHZlcmJvc2UgbW9kZSBpcyBlbmFibGVkXG4gICAgICAgICAgaWYgKHRoaXMuY29uZmlnLnJlcG9ydGluZz8udmVyYm9zZSkge1xuICAgICAgICAgICAgc3VwcHJlc3NlZEZpbmRpbmdzLnB1c2goe1xuICAgICAgICAgICAgICBydWxlOiBmaW5kaW5nLnJ1bGVJZCxcbiAgICAgICAgICAgICAgZmlsZTogZmluZGluZy5maWxlXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgICAgIFxuICAgICAgICAvLyBDaGVjayBsZWdhY3kgY29uZmlnLWJhc2VkIHN1cHByZXNzaW9ucyBpZiB0aGV5IGV4aXN0XG4gICAgICAgIC8vIFRoaXMgbWFpbnRhaW5zIGJhY2t3YXJkIGNvbXBhdGliaWxpdHkgd2l0aCBleGlzdGluZyBjb25maWdzXG4gICAgICAgIGlmICh0aGlzLmNvbmZpZy5zdXBwcmVzc2lvbnMgJiYgdGhpcy5jb25maWcuc3VwcHJlc3Npb25zLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICBjb25zdCBnbG9iYWxTdXBwcmVzc2lvbnMgPSB0aGlzLnN1cHByZXNzaW9ucy5nZXQoJyonKTtcbiAgICAgICAgICBpZiAoZ2xvYmFsU3VwcHJlc3Npb25zPy5oYXMoZmluZGluZy5ydWxlSWQpKSB7XG4gICAgICAgICAgICBpZiAodGhpcy5jb25maWcucmVwb3J0aW5nPy52ZXJib3NlKSB7XG4gICAgICAgICAgICAgIHN1cHByZXNzZWRGaW5kaW5ncy5wdXNoKHtcbiAgICAgICAgICAgICAgICBydWxlOiBmaW5kaW5nLnJ1bGVJZCxcbiAgICAgICAgICAgICAgICBmaWxlOiBmaW5kaW5nLmZpbGUsXG4gICAgICAgICAgICAgICAgcmVhc29uOiAnQ29uZmlnLWJhc2VkIGdsb2JhbCBzdXBwcmVzc2lvbidcbiAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgaWYgKGZpbmRpbmcuZmlsZSkge1xuICAgICAgICAgICAgY29uc3QgZmlsZVN1cHByZXNzaW9ucyA9IHRoaXMuc3VwcHJlc3Npb25zLmdldChmaW5kaW5nLmZpbGUpO1xuICAgICAgICAgICAgaWYgKGZpbGVTdXBwcmVzc2lvbnM/LmhhcyhmaW5kaW5nLnJ1bGVJZCkpIHtcbiAgICAgICAgICAgICAgaWYgKHRoaXMuY29uZmlnLnJlcG9ydGluZz8udmVyYm9zZSkge1xuICAgICAgICAgICAgICAgIHN1cHByZXNzZWRGaW5kaW5ncy5wdXNoKHtcbiAgICAgICAgICAgICAgICAgIHJ1bGU6IGZpbmRpbmcucnVsZUlkLFxuICAgICAgICAgICAgICAgICAgZmlsZTogZmluZGluZy5maWxlLFxuICAgICAgICAgICAgICAgICAgcmVhc29uOiAnQ29uZmlnLWJhc2VkIGZpbGUgc3VwcHJlc3Npb24nXG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgLy8gSWYgc3VwcHJlc3Npb24gY2hlY2sgZmFpbHMsIGxvZyBlcnJvciBidXQgZG9uJ3Qgc3VwcHJlc3MgdGhlIGZpbmRpbmdcbiAgICAgICAgY29uc29sZS5lcnJvcihgRXJyb3IgY2hlY2tpbmcgc3VwcHJlc3Npb24gZm9yICR7ZmluZGluZy5ydWxlSWR9IGluICR7ZmluZGluZy5maWxlfTpgLCBlcnJvcik7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfVxuICAgIH0pO1xuICAgIFxuICAgIC8vIExvZyBzdXBwcmVzc2lvbiBzdW1tYXJ5IGlmIHZlcmJvc2UgYW5kIHN1cHByZXNzaW9ucyB3ZXJlIGFwcGxpZWRcbiAgICBpZiAodGhpcy5jb25maWcucmVwb3J0aW5nPy52ZXJib3NlICYmIHN1cHByZXNzZWRGaW5kaW5ncy5sZW5ndGggPiAwKSB7XG4gICAgICBjb25zb2xlLmxvZyhgXFxuU2VjdXJpdHlBdWRpdG9yOiBTdXBwcmVzc2VkICR7c3VwcHJlc3NlZEZpbmRpbmdzLmxlbmd0aH0gZmluZGluZ3M6YCk7XG4gICAgICBzdXBwcmVzc2VkRmluZGluZ3MuZm9yRWFjaChzID0+IHtcbiAgICAgICAgY29uc29sZS5sb2coYCAgLSAke3MucnVsZX0gaW4gJHtzLmZpbGUgfHwgJ2dsb2JhbCd9JHtzLnJlYXNvbiA/IGAgKCR7cy5yZWFzb259KWAgOiAnJ31gKTtcbiAgICAgIH0pO1xuICAgIH1cbiAgICBcbiAgICByZXR1cm4gZmlsdGVyZWQ7XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlIHNjYW4gcmVzdWx0IHN1bW1hcnlcbiAgICovXG4gIHByaXZhdGUgY3JlYXRlU2NhblJlc3VsdChcbiAgICBmaW5kaW5nczogU2VjdXJpdHlGaW5kaW5nW10sIFxuICAgIGR1cmF0aW9uOiBudW1iZXIsIFxuICAgIHNjYW5uZWRGaWxlczogbnVtYmVyLFxuICAgIGVycm9yczogc3RyaW5nW11cbiAgKTogU2NhblJlc3VsdCB7XG4gICAgY29uc3QgYnlTZXZlcml0eTogUmVjb3JkPFNldmVyaXR5TGV2ZWwsIG51bWJlcj4gPSB7XG4gICAgICBpbmZvOiAwLFxuICAgICAgbG93OiAwLFxuICAgICAgbWVkaXVtOiAwLFxuICAgICAgaGlnaDogMCxcbiAgICAgIGNyaXRpY2FsOiAwXG4gICAgfTtcblxuICAgIGNvbnN0IGJ5Q2F0ZWdvcnk6IFJlY29yZDxzdHJpbmcsIG51bWJlcj4gPSB7fTtcblxuICAgIGZvciAoY29uc3QgZmluZGluZyBvZiBmaW5kaW5ncykge1xuICAgICAgYnlTZXZlcml0eVtmaW5kaW5nLnNldmVyaXR5XSsrO1xuICAgICAgXG4gICAgICAvLyBFeHRyYWN0IGNhdGVnb3J5IGZyb20gcnVsZUlkIChlLmcuLCBTRUMtQ09ERS0wMDEgLT4gQ09ERSlcbiAgICAgIGNvbnN0IGNhdGVnb3J5ID0gZmluZGluZy5ydWxlSWQuc3BsaXQoJy0nKVsxXSB8fCAnT1RIRVInO1xuICAgICAgYnlDYXRlZ29yeVtjYXRlZ29yeV0gPSAoYnlDYXRlZ29yeVtjYXRlZ29yeV0gfHwgMCkgKyAxO1xuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICB0aW1lc3RhbXA6IG5ldyBEYXRlKCksXG4gICAgICBkdXJhdGlvbixcbiAgICAgIHNjYW5uZWRGaWxlcyxcbiAgICAgIGZpbmRpbmdzLFxuICAgICAgc3VtbWFyeToge1xuICAgICAgICB0b3RhbDogZmluZGluZ3MubGVuZ3RoLFxuICAgICAgICBieVNldmVyaXR5LFxuICAgICAgICBieUNhdGVnb3J5XG4gICAgICB9LFxuICAgICAgZXJyb3JzOiBlcnJvcnMubGVuZ3RoID4gMCA/IGVycm9ycyA6IHVuZGVmaW5lZFxuICAgIH07XG4gIH1cblxuICAvKipcbiAgICogR2VuZXJhdGUgcmVwb3J0cyBpbiBjb25maWd1cmVkIGZvcm1hdHNcbiAgICovXG4gIHByaXZhdGUgYXN5bmMgZ2VuZXJhdGVSZXBvcnRzKHJlc3VsdDogU2NhblJlc3VsdCk6IFByb21pc2U8dm9pZD4ge1xuICAgIGZvciAoY29uc3QgZm9ybWF0IG9mIHRoaXMuY29uZmlnLnJlcG9ydGluZy5mb3JtYXRzKSB7XG4gICAgICB0cnkge1xuICAgICAgICBzd2l0Y2ggKGZvcm1hdCkge1xuICAgICAgICAgIGNhc2UgJ2NvbnNvbGUnOlxuICAgICAgICAgICAgY29uc3QgY29uc29sZVJlcG9ydGVyID0gbmV3IENvbnNvbGVSZXBvcnRlcihyZXN1bHQpO1xuICAgICAgICAgICAgY29uc29sZS5sb2coY29uc29sZVJlcG9ydGVyLmdlbmVyYXRlKCkpO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBcbiAgICAgICAgICBjYXNlICdtYXJrZG93bic6XG4gICAgICAgICAgICBjb25zdCBtYXJrZG93blJlcG9ydGVyID0gbmV3IE1hcmtkb3duUmVwb3J0ZXIocmVzdWx0KTtcbiAgICAgICAgICAgIGNvbnN0IG1kUmVwb3J0ID0gbWFya2Rvd25SZXBvcnRlci5nZW5lcmF0ZSgpIGFzIHN0cmluZztcbiAgICAgICAgICAgIGF3YWl0IGZzLndyaXRlRmlsZSgnc2VjdXJpdHktYXVkaXQtcmVwb3J0Lm1kJywgbWRSZXBvcnQpO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBcbiAgICAgICAgICBjYXNlICdqc29uJzpcbiAgICAgICAgICAgIGNvbnN0IGpzb25SZXBvcnRlciA9IG5ldyBKc29uUmVwb3J0ZXIocmVzdWx0KTtcbiAgICAgICAgICAgIGNvbnN0IGpzb25SZXBvcnQgPSBKU09OLnN0cmluZ2lmeShqc29uUmVwb3J0ZXIuZ2VuZXJhdGUoKSwgbnVsbCwgMik7XG4gICAgICAgICAgICBhd2FpdCBmcy53cml0ZUZpbGUoJ3NlY3VyaXR5LWF1ZGl0LXJlcG9ydC5qc29uJywganNvblJlcG9ydCk7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIFxuICAgICAgICAgIC8vIFNBUklGIGZvcm1hdCB3b3VsZCBiZSBpbXBsZW1lbnRlZCBzaW1pbGFybHlcbiAgICAgICAgfVxuICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgY29uc29sZS5lcnJvcihgU2VjdXJpdHlBdWRpdG9yOiBGYWlsZWQgdG8gZ2VuZXJhdGUgJHtmb3JtYXR9IHJlcG9ydDogJHtlcnJvciBpbnN0YW5jZW9mIEVycm9yID8gZXJyb3IubWVzc2FnZSA6IFN0cmluZyhlcnJvcil9YCk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIERldGVybWluZSBpZiB0aGUgYnVpbGQgc2hvdWxkIGZhaWwgYmFzZWQgb24gZmluZGluZ3NcbiAgICovXG4gIHByaXZhdGUgc2hvdWxkRmFpbEJ1aWxkKHJlc3VsdDogU2NhblJlc3VsdCk6IGJvb2xlYW4ge1xuICAgIGNvbnN0IHRocmVzaG9sZHM6IFJlY29yZDxTZXZlcml0eUxldmVsLCBudW1iZXI+ID0ge1xuICAgICAgaW5mbzogNSxcbiAgICAgIGxvdzogNCxcbiAgICAgIG1lZGl1bTogMyxcbiAgICAgIGhpZ2g6IDIsXG4gICAgICBjcml0aWNhbDogMVxuICAgIH07XG5cbiAgICBjb25zdCBmYWlsVGhyZXNob2xkID0gdGhyZXNob2xkc1t0aGlzLmNvbmZpZy5yZXBvcnRpbmcuZmFpbE9uU2V2ZXJpdHldO1xuICAgIFxuICAgIGZvciAoY29uc3QgW3NldmVyaXR5LCBjb3VudF0gb2YgT2JqZWN0LmVudHJpZXMocmVzdWx0LnN1bW1hcnkuYnlTZXZlcml0eSkpIHtcbiAgICAgIGlmIChjb3VudCA+IDAgJiYgdGhyZXNob2xkc1tzZXZlcml0eSBhcyBTZXZlcml0eUxldmVsXSA8PSBmYWlsVGhyZXNob2xkKSB7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgZGVmYXVsdCBjb25maWd1cmF0aW9uXG4gICAqL1xuICBzdGF0aWMgZ2V0RGVmYXVsdENvbmZpZygpOiBTZWN1cml0eUF1ZGl0Q29uZmlnIHtcbiAgICByZXR1cm4ge1xuICAgICAgZW5hYmxlZDogdHJ1ZSxcbiAgICAgIHNjYW5uZXJzOiB7XG4gICAgICAgIGNvZGU6IHtcbiAgICAgICAgICBlbmFibGVkOiB0cnVlLFxuICAgICAgICAgIHJ1bGVzOiBbJ09XQVNQLVRvcC0xMCcsICdDV0UtVG9wLTI1JywgJ0RvbGxob3VzZU1DUC1TZWN1cml0eSddLFxuICAgICAgICAgIGV4Y2x1ZGU6IFsnbm9kZV9tb2R1bGVzLyoqJywgJ2Rpc3QvKionLCAnY292ZXJhZ2UvKionXVxuICAgICAgICB9LFxuICAgICAgICBkZXBlbmRlbmNpZXM6IHtcbiAgICAgICAgICBlbmFibGVkOiB0cnVlLFxuICAgICAgICAgIHNldmVyaXR5VGhyZXNob2xkOiAnaGlnaCcsXG4gICAgICAgICAgY2hlY2tMaWNlbnNlczogdHJ1ZSxcbiAgICAgICAgICBhbGxvd2VkTGljZW5zZXM6IFsnTUlUJywgJ0FwYWNoZS0yLjAnLCAnQlNELTMtQ2xhdXNlJywgJ0lTQycsICdBR1BMLTMuMCddXG4gICAgICAgIH0sXG4gICAgICAgIGNvbmZpZ3VyYXRpb246IHtcbiAgICAgICAgICBlbmFibGVkOiB0cnVlLFxuICAgICAgICAgIGNoZWNrRmlsZXM6IFsnKi55bWwnLCAnKi55YW1sJywgJyouanNvbicsICcuZW52LmV4YW1wbGUnXVxuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgcmVwb3J0aW5nOiB7XG4gICAgICAgIGZvcm1hdHM6IFsnY29uc29sZScsICdtYXJrZG93biddLFxuICAgICAgICBjcmVhdGVJc3N1ZXM6IHRydWUsXG4gICAgICAgIGNvbW1lbnRPblByOiB0cnVlLFxuICAgICAgICBmYWlsT25TZXZlcml0eTogJ2hpZ2gnXG4gICAgICB9LFxuICAgICAgc3VwcHJlc3Npb25zOiBbXG4gICAgICAgIHtcbiAgICAgICAgICBydWxlOiAnU0VDLVRFU1QtMDAxJyxcbiAgICAgICAgICBmaWxlOiAnX190ZXN0c19fLyoqLyonLFxuICAgICAgICAgIHJlYXNvbjogJ1Rlc3QgZmlsZXMgbWF5IGNvbnRhaW4gc2VjdXJpdHkgdGVzdCBwYXR0ZXJucydcbiAgICAgICAgfVxuICAgICAgXVxuICAgIH07XG4gIH1cbn0iXX0=
|
|
@@ -1,34 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Security Audit Suppression Configuration
|
|
3
|
-
*
|
|
4
|
-
* This file contains suppression rules for false positives in the security audit.
|
|
5
|
-
* Each suppression should be well-documented with a clear reason.
|
|
6
|
-
*/
|
|
7
|
-
export interface Suppression {
|
|
8
|
-
rule: string;
|
|
9
|
-
file?: string;
|
|
10
|
-
reason: string;
|
|
11
|
-
}
|
|
12
|
-
export declare const suppressions: Suppression[];
|
|
13
|
-
/**
|
|
14
|
-
* Validate suppression configuration at startup
|
|
15
|
-
*/
|
|
16
|
-
export declare function validateSuppressions(): string[];
|
|
17
|
-
/**
|
|
18
|
-
* Check if a finding should be suppressed
|
|
19
|
-
* Optimized with caching and early returns
|
|
20
|
-
*/
|
|
21
|
-
export declare function shouldSuppress(ruleId: string, filePath?: string): boolean;
|
|
22
|
-
/**
|
|
23
|
-
* Clear suppression cache (useful for testing)
|
|
24
|
-
*/
|
|
25
|
-
export declare function clearSuppressionCache(): void;
|
|
26
|
-
/**
|
|
27
|
-
* Get suppression statistics for reporting
|
|
28
|
-
*/
|
|
29
|
-
export declare function getSuppressionStats(): {
|
|
30
|
-
total: number;
|
|
31
|
-
byRule: Record<string, number>;
|
|
32
|
-
byCategory: Record<string, number>;
|
|
33
|
-
};
|
|
34
|
-
//# sourceMappingURL=suppressions.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"suppressions.d.ts","sourceRoot":"","sources":["../../../../../../src/security/audit/config/suppressions.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;CAChB;AAqCD,eAAO,MAAM,YAAY,EAAE,WAAW,EA4TrC,CAAC;AAEF;;GAEG;AACH,wBAAgB,oBAAoB,IAAI,MAAM,EAAE,CA8B/C;AAuJD;;;GAGG;AACH,wBAAgB,cAAc,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,OAAO,CAgDzE;AAED;;GAEG;AACH,wBAAgB,qBAAqB,IAAI,IAAI,CAE5C;AAED;;GAEG;AACH,wBAAgB,mBAAmB,IAAI;IACrC,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC/B,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACpC,CAiBA"}
|