0xray 2.0.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/.opencode/agents/api-design.yml +31 -0
- package/.opencode/agents/architect.yml +15 -0
- package/.opencode/agents/architecture-patterns.yml +14 -0
- package/.opencode/agents/auto-format.yml +14 -0
- package/.opencode/agents/backend-engineer.yml +12 -0
- package/.opencode/agents/boot-orchestrator.yml +14 -0
- package/.opencode/agents/bug-triage-specialist.yml +15 -0
- package/.opencode/agents/code-analyzer.yml +12 -0
- package/.opencode/agents/code-reviewer.yml +14 -0
- package/.opencode/agents/content-creator.yml +12 -0
- package/.opencode/agents/database-engineer.yml +12 -0
- package/.opencode/agents/devops-engineer.yml +12 -0
- package/.opencode/agents/framework-compliance-audit.yml +14 -0
- package/.opencode/agents/frontend-engineer.yml +12 -0
- package/.opencode/agents/frontend-ui-ux-engineer.yml +12 -0
- package/.opencode/agents/git-workflow.yml +15 -0
- package/.opencode/agents/growth-strategist.yml +12 -0
- package/.opencode/agents/hermes-agent.yml +12 -0
- package/.opencode/agents/inference-improve.yml +12 -0
- package/.opencode/agents/lint.yml +14 -0
- package/.opencode/agents/log-monitor.yml +12 -0
- package/.opencode/agents/mobile-developer.yml +12 -0
- package/.opencode/agents/model-health-check.yml +12 -0
- package/.opencode/agents/multimodal-looker.yml +12 -0
- package/.opencode/agents/performance-analysis.yml +12 -0
- package/.opencode/agents/performance-engineer.yml +12 -0
- package/.opencode/agents/performance-optimization.yml +12 -0
- package/.opencode/agents/processor-pipeline.yml +14 -0
- package/.opencode/agents/project-analysis.yml +12 -0
- package/.opencode/agents/refactorer.yml +12 -0
- package/.opencode/agents/researcher.yml +12 -0
- package/.opencode/agents/security-auditor.yml +12 -0
- package/.opencode/agents/security-scan.yml +12 -0
- package/.opencode/agents/seo-consultant.yml +12 -0
- package/.opencode/agents/session-management.yml +12 -0
- package/.opencode/agents/state-manager.yml +12 -0
- package/.opencode/agents/storyteller.yml +12 -0
- package/.opencode/agents/strategist.yml +12 -0
- package/.opencode/agents/tech-writer.yml +12 -0
- package/.opencode/agents/testing-best-practices.yml +12 -0
- package/.opencode/agents/testing-lead.yml +12 -0
- package/.opencode/agents/ui-ux-design.yml +12 -0
- package/.opencode/codex.codex +8 -0
- package/.opencode/commands/auto-format.md +99 -0
- package/.opencode/commands/auto-summary-capture.md +90 -0
- package/.opencode/commands/dependency-audit.md +184 -0
- package/.opencode/commands/enforcer-daily-scan.md +137 -0
- package/.opencode/commands/framework-compliance-audit.md +205 -0
- package/.opencode/commands/interactive-validator.md +75 -0
- package/.opencode/commands/job-summary-logger.md +68 -0
- package/.opencode/commands/lint.md +11 -0
- package/.opencode/commands/mode-switch.md +95 -0
- package/.opencode/commands/model-health-check.md +186 -0
- package/.opencode/commands/performance-analysis.md +144 -0
- package/.opencode/commands/pre-commit-introspection.md +185 -0
- package/.opencode/commands/pre-commit-introspection.sh +133 -0
- package/.opencode/commands/security-scan.md +157 -0
- package/.opencode/commands/sisyphus-validation.md +128 -0
- package/.opencode/commands/summary-logger.md +83 -0
- package/.opencode/enforcer-config.json +285 -0
- package/.opencode/hooks/hook-metrics.json +380 -0
- package/.opencode/hooks/post-commit +114 -0
- package/.opencode/hooks/post-push +34 -0
- package/.opencode/init.sh +151 -0
- package/.opencode/skills/api-design/SKILL.md +37 -0
- package/.opencode/skills/architect-tools/SKILL.md +37 -0
- package/.opencode/skills/architecture-patterns/SKILL.md +37 -0
- package/.opencode/skills/auto-format/SKILL.md +37 -0
- package/.opencode/skills/backend-engineer/SKILL.md +49 -0
- package/.opencode/skills/boot-orchestrator/SKILL.md +37 -0
- package/.opencode/skills/bug-triage/SKILL.md +43 -0
- package/.opencode/skills/code-analyzer/SKILL.md +45 -0
- package/.opencode/skills/code-review/SKILL.md +52 -0
- package/.opencode/skills/content-creator/SKILL.md +38 -0
- package/.opencode/skills/database-engineer/SKILL.md +46 -0
- package/.opencode/skills/devops-engineer/SKILL.md +49 -0
- package/.opencode/skills/enforcer/SKILL.md +37 -0
- package/.opencode/skills/framework-compliance-audit/SKILL.md +37 -0
- package/.opencode/skills/frontend-engineer/SKILL.md +49 -0
- package/.opencode/skills/frontend-ui-ux-engineer/SKILL.md +41 -0
- package/.opencode/skills/git-workflow/SKILL.md +37 -0
- package/.opencode/skills/growth-strategist/SKILL.md +48 -0
- package/.opencode/skills/hermes-agent/SKILL.md +212 -0
- package/.opencode/skills/inference-improve/SKILL.md +97 -0
- package/.opencode/skills/lint/SKILL.md +37 -0
- package/.opencode/skills/log-monitor/SKILL.md +44 -0
- package/.opencode/skills/mobile-developer/SKILL.md +42 -0
- package/.opencode/skills/model-health-check/SKILL.md +37 -0
- package/.opencode/skills/multimodal-looker/SKILL.md +45 -0
- package/.opencode/skills/orchestrator/SKILL.md +37 -0
- package/.opencode/skills/performance-analysis/SKILL.md +37 -0
- package/.opencode/skills/performance-engineer/SKILL.md +41 -0
- package/.opencode/skills/performance-optimization/SKILL.md +37 -0
- package/.opencode/skills/processor-pipeline/SKILL.md +37 -0
- package/.opencode/skills/project-analysis/SKILL.md +42 -0
- package/.opencode/skills/refactoring-strategies/SKILL.md +37 -0
- package/.opencode/skills/registry.json +66 -0
- package/.opencode/skills/researcher/SKILL.md +37 -0
- package/.opencode/skills/security-audit/SKILL.md +47 -0
- package/.opencode/skills/security-scan/SKILL.md +37 -0
- package/.opencode/skills/seo-consultant/SKILL.md +43 -0
- package/.opencode/skills/session-management/SKILL.md +36 -0
- package/.opencode/skills/state-manager/SKILL.md +37 -0
- package/.opencode/skills/storyteller/SKILL.md +130 -0
- package/.opencode/skills/strategist/SKILL.md +32 -0
- package/.opencode/skills/tech-writer/SKILL.md +37 -0
- package/.opencode/skills/testing-best-practices/SKILL.md +37 -0
- package/.opencode/skills/testing-strategy/SKILL.md +43 -0
- package/.opencode/skills/ui-ux-design/SKILL.md +603 -0
- package/.opencode/workflows/post-deployment-audit.yml +123 -0
- package/AGENTS.md +110 -0
- package/LICENSE +21 -0
- package/README.md +131 -0
- package/dist/AGENTS.md +110 -0
- package/dist/CHANGELOG.md +2182 -0
- package/dist/LICENSE +21 -0
- package/dist/README.md +131 -0
- package/dist/agents/architect.js +56 -0
- package/dist/agents/backend-engineer.js +81 -0
- package/dist/agents/bug-triage-specialist.js +74 -0
- package/dist/agents/code-analyzer.js +150 -0
- package/dist/agents/code-reviewer.js +69 -0
- package/dist/agents/content-creator.js +72 -0
- package/dist/agents/database-engineer.js +76 -0
- package/dist/agents/devops-engineer.js +84 -0
- package/dist/agents/frontend-engineer.js +78 -0
- package/dist/agents/frontend-ui-ux-engineer.js +64 -0
- package/dist/agents/growth-strategist.js +111 -0
- package/dist/agents/index.js +45 -0
- package/dist/agents/librarian-agents-updater.js +333 -0
- package/dist/agents/log-monitor.js +109 -0
- package/dist/agents/mobile-developer.js +102 -0
- package/dist/agents/multimodal-looker.js +93 -0
- package/dist/agents/performance-engineer.js +86 -0
- package/dist/agents/refactorer.js +80 -0
- package/dist/agents/registry.js +340 -0
- package/dist/agents/researcher.js +83 -0
- package/dist/agents/security-auditor.js +158 -0
- package/dist/agents/seo-consultant.js +53 -0
- package/dist/agents/strategist.js +47 -0
- package/dist/agents/tech-writer.js +84 -0
- package/dist/agents/testing-lead.js +95 -0
- package/dist/agents/types.js +1 -0
- package/dist/analytics/consent-manager.js +258 -0
- package/dist/analytics/emerging-pattern-detector.js +260 -0
- package/dist/analytics/pattern-learning-engine.js +278 -0
- package/dist/analytics/pattern-performance-tracker.js +336 -0
- package/dist/analytics/predictive-analytics.js +248 -0
- package/dist/analytics/prompt-pattern-analyzer.js +371 -0
- package/dist/analytics/routing-performance-analyzer.js +356 -0
- package/dist/analytics/routing-refiner.js +380 -0
- package/dist/analytics/simple-pattern-analyzer.js +297 -0
- package/dist/architect/architect-tools.js +437 -0
- package/dist/architect/architectural-integrity.js +78 -0
- package/dist/benchmark/performance-benchmark.js +372 -0
- package/dist/cli/commands/analytics-disable.js +72 -0
- package/dist/cli/commands/analytics-enable-action.js +82 -0
- package/dist/cli/commands/analytics-preview.js +106 -0
- package/dist/cli/commands/analytics-status.js +68 -0
- package/dist/cli/commands/antigravity-status.js +106 -0
- package/dist/cli/commands/archive-logs.js +161 -0
- package/dist/cli/commands/credible-init.js +82 -0
- package/dist/cli/commands/grok-install.js +16 -0
- package/dist/cli/commands/hermes-install.js +66 -0
- package/dist/cli/commands/mcp-install.js +253 -0
- package/dist/cli/commands/openclaw-install.js +44 -0
- package/dist/cli/commands/opencode-install.js +99 -0
- package/dist/cli/commands/plugin-commands.js +246 -0
- package/dist/cli/commands/publish-agent.js +184 -0
- package/dist/cli/commands/security-audit.js +219 -0
- package/dist/cli/commands/skill-install.js +481 -0
- package/dist/cli/commands/status.js +196 -0
- package/dist/cli/commands/storyteller.js +230 -0
- package/dist/cli/index.js +986 -0
- package/dist/cli/server.js +147 -0
- package/dist/config/default-agents.js +16 -0
- package/dist/core/activity-logger.js +260 -0
- package/dist/core/adaptive-kernel.js +192 -0
- package/dist/core/agent-spawn-gate.js +120 -0
- package/dist/core/boot-orchestrator.js +812 -0
- package/dist/core/bridge.mjs +945 -0
- package/dist/core/codex-formatter.js +220 -0
- package/dist/core/codex-injector.js +424 -0
- package/dist/core/config-loader.js +148 -0
- package/dist/core/config-paths.js +162 -0
- package/dist/core/context-loader.js +269 -0
- package/dist/core/context-validator.js +212 -0
- package/dist/core/features-config.js +457 -0
- package/dist/core/framework-logger.js +275 -0
- package/dist/core/index.js +6 -0
- package/dist/core/kernel-patterns.js +302 -0
- package/dist/core/logging-config.js +43 -0
- package/dist/core/model-router.js +175 -0
- package/dist/core/orchestrator.js +408 -0
- package/dist/core/system-prompt-generator.js +265 -0
- package/dist/core/trace-context.js +33 -0
- package/dist/core/xray-activation.js +134 -0
- package/dist/delegation/agent-delegator.js +769 -0
- package/dist/delegation/agent-expertise.js +156 -0
- package/dist/delegation/analytics/index.js +12 -0
- package/dist/delegation/analytics/learning-engine.js +277 -0
- package/dist/delegation/analytics/outcome-tracker.js +279 -0
- package/dist/delegation/analytics/routing-analytics.js +193 -0
- package/dist/delegation/ast-code-parser.js +878 -0
- package/dist/delegation/codebase-context-analyzer.js +1040 -0
- package/dist/delegation/complexity-analyzer.js +282 -0
- package/dist/delegation/complexity-core.js +219 -0
- package/dist/delegation/config/types.js +6 -0
- package/dist/delegation/dependency-graph-builder.js +409 -0
- package/dist/delegation/index.js +20 -0
- package/dist/delegation/metrics-aggregator.js +335 -0
- package/dist/delegation/session-coordinator.js +352 -0
- package/dist/delegation/strategy-selector.js +108 -0
- package/dist/delegation/voting-coordinator.js +375 -0
- package/dist/delegation/voting-types.js +10 -0
- package/dist/delegation/weighted-voting-aggregator.js +194 -0
- package/dist/enforcement/core/index.js +19 -0
- package/dist/enforcement/core/rule-executor.js +365 -0
- package/dist/enforcement/core/rule-hierarchy.js +259 -0
- package/dist/enforcement/core/rule-registry.js +240 -0
- package/dist/enforcement/core/violation-fixer.js +651 -0
- package/dist/enforcement/enforcer-tools.js +909 -0
- package/dist/enforcement/index.js +41 -0
- package/dist/enforcement/loaders/agent-triage-loader.js +222 -0
- package/dist/enforcement/loaders/agents-md-validation-loader.js +252 -0
- package/dist/enforcement/loaders/base-loader.js +86 -0
- package/dist/enforcement/loaders/codex-loader.js +396 -0
- package/dist/enforcement/loaders/index.js +40 -0
- package/dist/enforcement/loaders/loader-orchestrator.js +168 -0
- package/dist/enforcement/loaders/processor-loader.js +113 -0
- package/dist/enforcement/rule-enforcer.js +298 -0
- package/dist/enforcement/test-auto-healing.js +325 -0
- package/dist/enforcement/types.js +30 -0
- package/dist/enforcement/validators/architecture-validators.js +600 -0
- package/dist/enforcement/validators/base-validator.js +108 -0
- package/dist/enforcement/validators/code-quality-validators.js +336 -0
- package/dist/enforcement/validators/index.js +21 -0
- package/dist/enforcement/validators/security-validators.js +220 -0
- package/dist/enforcement/validators/testing-validators.js +253 -0
- package/dist/enforcement/validators/validator-registry.js +150 -0
- package/dist/execution/opencode-cli-invoker.js +173 -0
- package/dist/execution/proposal-applier.js +254 -0
- package/dist/governance/codex-policy.service.js +167 -0
- package/dist/governance/governance-core.js +152 -0
- package/dist/governance/governance-service.js +274 -0
- package/dist/governance/governance-types.js +6 -0
- package/dist/index.js +24 -0
- package/dist/inference/deploy-verifier.js +161 -0
- package/dist/inference/index.js +5 -0
- package/dist/inference/inference-accumulator.js +126 -0
- package/dist/inference/inference-cycle.js +1168 -0
- package/dist/inference/semantic-patterns.js +310 -0
- package/dist/inference/session-capture.js +308 -0
- package/dist/integrations/base/ExampleIntegration.js +181 -0
- package/dist/integrations/base/Integration.js +395 -0
- package/dist/integrations/base/README.md +446 -0
- package/dist/integrations/base/index.js +16 -0
- package/dist/integrations/base/registry.js +606 -0
- package/dist/integrations/base/types.js +118 -0
- package/dist/integrations/governance/governance-client.js +316 -0
- package/dist/integrations/governance/index.js +373 -0
- package/dist/integrations/governance/types.js +97 -0
- package/dist/integrations/grok/grok-cli.js +83 -0
- package/dist/integrations/grok/hooks/pre-tool-use.js +134 -0
- package/dist/integrations/grok/plugin/0xray/.mcp.json +15 -0
- package/dist/integrations/grok/plugin/0xray/hooks/hooks.json +30 -0
- package/dist/integrations/hermes-agent/__init__.py +718 -0
- package/dist/integrations/hermes-agent/after-install.md +71 -0
- package/dist/integrations/hermes-agent/bridge.mjs +861 -0
- package/dist/integrations/hermes-agent/conftest.py +14 -0
- package/dist/integrations/hermes-agent/plugin.yaml +12 -0
- package/dist/integrations/hermes-agent/schemas.py +100 -0
- package/dist/integrations/hermes-agent/test_plugin.py +1100 -0
- package/dist/integrations/hermes-agent/tools.py +253 -0
- package/dist/integrations/openclaw/README.md +134 -0
- package/dist/integrations/openclaw/api-server.js +389 -0
- package/dist/integrations/openclaw/client.js +492 -0
- package/dist/integrations/openclaw/config.js +374 -0
- package/dist/integrations/openclaw/hooks/strray-hooks.js +280 -0
- package/dist/integrations/openclaw/index.js +351 -0
- package/dist/integrations/openclaw/types.js +153 -0
- package/dist/integrations/plugins/index.js +10 -0
- package/dist/integrations/plugins/plugin-integration.js +606 -0
- package/dist/integrations/plugins/plugin-registry.js +580 -0
- package/dist/mcps/agent-resolver.js +106 -0
- package/dist/mcps/architect-tools.server.js +277 -0
- package/dist/mcps/auto-format.server.js +413 -0
- package/dist/mcps/boot-orchestrator.server.js +853 -0
- package/dist/mcps/config/config-loader.js +103 -0
- package/dist/mcps/config/config-validator.js +101 -0
- package/dist/mcps/config/index.js +30 -0
- package/dist/mcps/config/plugin-server-registry.js +223 -0
- package/dist/mcps/config/server-config-registry.js +348 -0
- package/dist/mcps/connection/connection-manager.js +79 -0
- package/dist/mcps/connection/connection-pool.js +164 -0
- package/dist/mcps/connection/mcp-connection.js +233 -0
- package/dist/mcps/connection/process-spawner.js +34 -0
- package/dist/mcps/enforcer-tools.server.js +778 -0
- package/dist/mcps/estimation.server.js +192 -0
- package/dist/mcps/framework-compliance-audit.server.js +500 -0
- package/dist/mcps/framework-help.server.js +400 -0
- package/dist/mcps/governance.server.js +464 -0
- package/dist/mcps/in-process-skill-registry.js +48 -0
- package/dist/mcps/knowledge-skills/api-design.server.js +123 -0
- package/dist/mcps/knowledge-skills/architecture-patterns.server.js +113 -0
- package/dist/mcps/knowledge-skills/bug-triage-specialist.server.js +474 -0
- package/dist/mcps/knowledge-skills/code-analyzer.server.js +605 -0
- package/dist/mcps/knowledge-skills/code-review.server.js +847 -0
- package/dist/mcps/knowledge-skills/content-creator.server.js +256 -0
- package/dist/mcps/knowledge-skills/database-design.server.js +822 -0
- package/dist/mcps/knowledge-skills/devops-deployment.server.js +1180 -0
- package/dist/mcps/knowledge-skills/git-workflow.server.js +115 -0
- package/dist/mcps/knowledge-skills/growth-strategist.server.js +361 -0
- package/dist/mcps/knowledge-skills/log-monitor.server.js +451 -0
- package/dist/mcps/knowledge-skills/mobile-development.server.js +525 -0
- package/dist/mcps/knowledge-skills/multimodal-looker.server.js +1063 -0
- package/dist/mcps/knowledge-skills/performance-optimization.server.js +1587 -0
- package/dist/mcps/knowledge-skills/project-analysis.server.js +811 -0
- package/dist/mcps/knowledge-skills/refactoring-strategies.server.js +796 -0
- package/dist/mcps/knowledge-skills/security-audit.server.js +846 -0
- package/dist/mcps/knowledge-skills/seo-consultant.server.js +937 -0
- package/dist/mcps/knowledge-skills/session-management.server.js +470 -0
- package/dist/mcps/knowledge-skills/skill-invocation.server.js +729 -0
- package/dist/mcps/knowledge-skills/strategist.server.js +217 -0
- package/dist/mcps/knowledge-skills/tech-writer.server.js +1191 -0
- package/dist/mcps/knowledge-skills/testing-best-practices.server.js +866 -0
- package/dist/mcps/knowledge-skills/testing-strategy.server.js +827 -0
- package/dist/mcps/knowledge-skills/ui-ux-design.server.js +1538 -0
- package/dist/mcps/lint.server.js +381 -0
- package/dist/mcps/mcp-client.js +574 -0
- package/dist/mcps/model-health-check.server.js +228 -0
- package/dist/mcps/orchestrator/config/agent-capabilities.js +87 -0
- package/dist/mcps/orchestrator/execution/execution-planner.js +279 -0
- package/dist/mcps/orchestrator/handlers/complexity-handler.js +94 -0
- package/dist/mcps/orchestrator/handlers/status-handler.js +232 -0
- package/dist/mcps/orchestrator/handlers/task-handler.js +197 -0
- package/dist/mcps/orchestrator/server.js +305 -0
- package/dist/mcps/orchestrator/types.js +6 -0
- package/dist/mcps/orchestrator.server.js +19 -0
- package/dist/mcps/performance-analysis.server.js +519 -0
- package/dist/mcps/processor-pipeline.server.js +561 -0
- package/dist/mcps/protocol/protocol-constants.js +46 -0
- package/dist/mcps/registry.json +110 -0
- package/dist/mcps/researcher.server.js +504 -0
- package/dist/mcps/security-scan.server.js +531 -0
- package/dist/mcps/simulation/index.js +12 -0
- package/dist/mcps/simulation/server-simulations.js +219 -0
- package/dist/mcps/simulation/simulation-engine.js +96 -0
- package/dist/mcps/state-manager.server.js +637 -0
- package/dist/mcps/tools/index.js +14 -0
- package/dist/mcps/tools/tool-cache.js +112 -0
- package/dist/mcps/tools/tool-discovery.js +65 -0
- package/dist/mcps/tools/tool-executor.js +75 -0
- package/dist/mcps/tools/tool-registry.js +67 -0
- package/dist/mcps/types/index.js +15 -0
- package/dist/mcps/types/json-rpc.types.js +7 -0
- package/dist/mcps/types/mcp.types.js +7 -0
- package/dist/metrics/agent-metrics.js +574 -0
- package/dist/metrics/index.js +6 -0
- package/dist/monitoring/advanced-profiler.js +232 -0
- package/dist/monitoring/memory-monitor.js +315 -0
- package/dist/monitoring/nudge-watchdog.js +356 -0
- package/dist/monitoring/test-auto-generation-monitor.js +157 -0
- package/dist/orchestrator/agent-spawn-governor.js +559 -0
- package/dist/orchestrator/enhanced-multi-agent-orchestrator.js +399 -0
- package/dist/orchestrator/intelligent-commit-batcher.js +353 -0
- package/dist/orchestrator/multi-agent-orchestration-coordinator.js +456 -0
- package/dist/orchestrator/orchestrator.js +657 -0
- package/dist/orchestrator/self-direction-activation.js +245 -0
- package/dist/orchestrator/universal-librarian-consultation.js +216 -0
- package/dist/orchestrator/universal-registry-bridge.js +247 -0
- package/dist/performance/performance-budget-enforcer.js +434 -0
- package/dist/performance/performance-regression-tester.js +342 -0
- package/dist/plugin/xray-codex-injection.js +857 -0
- package/dist/postprocessor/PostProcessor.js +1048 -0
- package/dist/postprocessor/analysis/FailureAnalysisEngine.js +245 -0
- package/dist/postprocessor/autofix/AutoFixEngine.js +254 -0
- package/dist/postprocessor/autofix/FixValidator.js +56 -0
- package/dist/postprocessor/config.js +65 -0
- package/dist/postprocessor/escalation/EscalationEngine.js +492 -0
- package/dist/postprocessor/monitoring/MonitoringEngine.js +125 -0
- package/dist/postprocessor/redeploy/RedeployCoordinator.js +342 -0
- package/dist/postprocessor/services/RegressionAnalysisService.js +131 -0
- package/dist/postprocessor/success/SuccessHandler.js +134 -0
- package/dist/postprocessor/triggers/APITrigger.js +115 -0
- package/dist/postprocessor/triggers/GitHookTrigger.js +551 -0
- package/dist/postprocessor/triggers/WebhookTrigger.js +211 -0
- package/dist/postprocessor/types.js +4 -0
- package/dist/processors/doc-write-guard.js +46 -0
- package/dist/processors/implementations/agents-md-validation-processor.js +286 -0
- package/dist/processors/implementations/async-pattern-processor.js +158 -0
- package/dist/processors/implementations/codex-compliance-processor.js +57 -0
- package/dist/processors/implementations/commit-batcher-processor.js +71 -0
- package/dist/processors/implementations/console-log-guard-processor.js +163 -0
- package/dist/processors/implementations/coverage-analysis-processor.js +138 -0
- package/dist/processors/implementations/error-boundary-processor.js +44 -0
- package/dist/processors/implementations/inference-improvement-processor.js +270 -0
- package/dist/processors/implementations/log-protection-processor.js +118 -0
- package/dist/processors/implementations/nudge-processor.js +130 -0
- package/dist/processors/implementations/performance-budget-processor.js +217 -0
- package/dist/processors/implementations/postprocessor-chain-validator.js +149 -0
- package/dist/processors/implementations/pre-validate-processor.js +18 -0
- package/dist/processors/implementations/publish-preflight-processor.js +249 -0
- package/dist/processors/implementations/refactoring-logging-processor-wrapper.js +33 -0
- package/dist/processors/implementations/refactoring-logging-processor.js +96 -0
- package/dist/processors/implementations/regression-testing-processor.js +59 -0
- package/dist/processors/implementations/session-capture-processor.js +37 -0
- package/dist/processors/implementations/session-summary-processor.js +130 -0
- package/dist/processors/implementations/spawn-governance-processor.js +219 -0
- package/dist/processors/implementations/state-validation-processor.js +15 -0
- package/dist/processors/implementations/storytelling-trigger-processor.js +589 -0
- package/dist/processors/implementations/test-auto-creation-processor.js +484 -0
- package/dist/processors/implementations/test-execution-processor.js +132 -0
- package/dist/processors/implementations/typescript-compilation-processor.js +87 -0
- package/dist/processors/implementations/version-compliance-processor.js +350 -0
- package/dist/processors/processor-interfaces.js +126 -0
- package/dist/processors/processor-manager.js +826 -0
- package/dist/processors/processor-types.js +12 -0
- package/dist/public/about.html +228 -0
- package/dist/public/enterprise.html +27 -0
- package/dist/public/features.html +102 -0
- package/dist/public/index.html +145 -0
- package/dist/reporting/framework-reporting-system.js +187 -0
- package/dist/reporting/log-parser.js +281 -0
- package/dist/reporting/metrics.js +202 -0
- package/dist/reporting/report-formatter.js +146 -0
- package/dist/reporting/types.js +1 -0
- package/dist/scripts/activate-kernel-pipeline.js +101 -0
- package/dist/scripts/integration.js +234 -0
- package/dist/scripts/pre-command +26 -0
- package/dist/scripts/pre-command.mjs +358 -0
- package/dist/security/comprehensive-security-audit.js +1005 -0
- package/dist/security/index.js +13 -0
- package/dist/security/prompt-security-validator.js +148 -0
- package/dist/security/security-agent-coordinator.js +204 -0
- package/dist/security/security-auditor.js +584 -0
- package/dist/security/security-hardener.js +170 -0
- package/dist/security/security-hardening-system.js +727 -0
- package/dist/security/security-headers.js +118 -0
- package/dist/security/security-orchestration-layer.js +496 -0
- package/dist/security/security-scanner.js +429 -0
- package/dist/services/inference-tuner.js +301 -0
- package/dist/session/index.js +3 -0
- package/dist/session/session-cleanup-manager.js +366 -0
- package/dist/session/session-monitor.js +503 -0
- package/dist/session/session-state-manager.js +522 -0
- package/dist/skills/api-design/SKILL.md +37 -0
- package/dist/skills/architect-tools/SKILL.md +37 -0
- package/dist/skills/architecture-patterns/SKILL.md +37 -0
- package/dist/skills/auto-format/SKILL.md +37 -0
- package/dist/skills/backend-engineer/SKILL.md +49 -0
- package/dist/skills/boot-orchestrator/SKILL.md +37 -0
- package/dist/skills/bug-triage/SKILL.md +43 -0
- package/dist/skills/code-analyzer/SKILL.md +45 -0
- package/dist/skills/code-review/SKILL.md +52 -0
- package/dist/skills/content-creator/SKILL.md +38 -0
- package/dist/skills/database-engineer/SKILL.md +46 -0
- package/dist/skills/devops-engineer/SKILL.md +49 -0
- package/dist/skills/enforcer/SKILL.md +37 -0
- package/dist/skills/framework-compliance-audit/SKILL.md +37 -0
- package/dist/skills/frontend-engineer/SKILL.md +49 -0
- package/dist/skills/frontend-ui-ux-engineer/SKILL.md +41 -0
- package/dist/skills/git-workflow/SKILL.md +37 -0
- package/dist/skills/growth-strategist/SKILL.md +48 -0
- package/dist/skills/hermes-agent/SKILL.md +212 -0
- package/dist/skills/inference-improve/SKILL.md +97 -0
- package/dist/skills/lint/SKILL.md +37 -0
- package/dist/skills/log-monitor/SKILL.md +44 -0
- package/dist/skills/mobile-developer/SKILL.md +42 -0
- package/dist/skills/model-health-check/SKILL.md +37 -0
- package/dist/skills/multimodal-looker/SKILL.md +45 -0
- package/dist/skills/orchestrator/SKILL.md +37 -0
- package/dist/skills/performance-analysis/SKILL.md +37 -0
- package/dist/skills/performance-engineer/SKILL.md +41 -0
- package/dist/skills/performance-optimization/SKILL.md +37 -0
- package/dist/skills/processor-pipeline/SKILL.md +37 -0
- package/dist/skills/project-analysis/SKILL.md +42 -0
- package/dist/skills/refactoring-strategies/SKILL.md +37 -0
- package/dist/skills/registry.json +66 -0
- package/dist/skills/researcher/SKILL.md +37 -0
- package/dist/skills/security-audit/SKILL.md +48 -0
- package/dist/skills/security-scan/SKILL.md +37 -0
- package/dist/skills/seo-consultant/SKILL.md +43 -0
- package/dist/skills/session-management/SKILL.md +36 -0
- package/dist/skills/state-manager/SKILL.md +37 -0
- package/dist/skills/storyteller/SKILL.md +130 -0
- package/dist/skills/strategist/SKILL.md +32 -0
- package/dist/skills/tech-writer/SKILL.md +37 -0
- package/dist/skills/testing-best-practices/SKILL.md +37 -0
- package/dist/skills/testing-strategy/SKILL.md +43 -0
- package/dist/skills/ui-ux-design/SKILL.md +603 -0
- package/dist/state/context-providers.js +1 -0
- package/dist/state/index.js +7 -0
- package/dist/state/state-manager.js +208 -0
- package/dist/state/state-types.js +1 -0
- package/dist/testing/memory-regression-suite.js +258 -0
- package/dist/utils/batch-operations.js +292 -0
- package/dist/utils/codex-parser.js +445 -0
- package/dist/utils/command-runner.js +96 -0
- package/dist/utils/import-resolver.js +189 -0
- package/dist/utils/language-detector.js +383 -0
- package/dist/utils/path-resolver.js +112 -0
- package/dist/utils/shutdown-handler.js +75 -0
- package/dist/utils/test-template-generator.js +178 -0
- package/dist/utils/token-manager.js +163 -0
- package/dist/validation/estimation-validator.js +241 -0
- package/dist/validation/report-content-validator.js +218 -0
- package/opencode.json +153 -0
- package/package.json +170 -0
- package/scripts/helpers/resolve-config-path.cjs +57 -0
- package/scripts/helpers/resolve-config-path.mjs +73 -0
- package/scripts/hooks/pre-command +26 -0
- package/scripts/hooks/pre-command.mjs +358 -0
- package/scripts/hooks/run-hook.js +570 -0
- package/scripts/mjs/test-consumer-readiness.mjs +273 -0
- package/scripts/mjs/test-mcp-functionality.mjs +507 -0
- package/scripts/mjs/validate-mcp-connectivity.cjs +75 -0
- package/scripts/mjs/validate-postinstall-config.mjs +308 -0
- package/scripts/node/auto-reflection-generator.mjs +496 -0
- package/scripts/node/basic-security-audit.cjs +338 -0
- package/scripts/node/ci-cd-auto-fix.cjs +263 -0
- package/scripts/node/ci-report-generator.mjs +227 -0
- package/scripts/node/enforce-agents-md.mjs +420 -0
- package/scripts/node/enforce-version-compliance.sh +22 -0
- package/scripts/node/enforce-version-compliance.ts +126 -0
- package/scripts/node/github-actions-monitor.cjs +23 -0
- package/scripts/node/govern-reflection.mjs +160 -0
- package/scripts/node/postinstall.cjs +78 -0
- package/scripts/node/pre-publish-guard.js +267 -0
- package/scripts/node/prepare-consumer.cjs +143 -0
- package/scripts/node/reflection-processor.cjs +213 -0
- package/scripts/node/reflection-validate.sh +194 -0
- package/scripts/node/release-tweet.mjs +39 -0
- package/scripts/node/release.js +159 -0
- package/scripts/node/release.mjs +213 -0
- package/scripts/node/setup-dev.cjs +83 -0
- package/scripts/node/setup.cjs +214 -0
- package/scripts/node/sync-versions.mjs +140 -0
- package/scripts/node/universal-version-manager.js +1025 -0
- package/scripts/node/validate-external-processes.js +265 -0
- package/scripts/node/validate-mcp-connectivity.js +258 -0
- package/scripts/node/version-manager.mjs +524 -0
- package/scripts/validate-stringray-comprehensive.js +636 -0
- package/src/integrations/grok/plugin/0xray/.mcp.json +15 -0
- package/src/integrations/grok/plugin/0xray/hooks/hooks.json +30 -0
- package/src/mcps/agent-resolver.ts +168 -0
- package/src/mcps/architect-tools.server.ts +343 -0
- package/src/mcps/auto-format.server.ts +529 -0
- package/src/mcps/boot-orchestrator.server.ts +1082 -0
- package/src/mcps/config/__tests__/config-loader.test.ts +338 -0
- package/src/mcps/config/__tests__/config-validator.test.ts +646 -0
- package/src/mcps/config/__tests__/server-config-registry.test.ts +257 -0
- package/src/mcps/config/config-loader.ts +127 -0
- package/src/mcps/config/config-validator.ts +127 -0
- package/src/mcps/config/index.ts +32 -0
- package/src/mcps/config/plugin-server-registry.ts +335 -0
- package/src/mcps/config/server-config-registry.ts +395 -0
- package/src/mcps/connection/connection-manager.ts +91 -0
- package/src/mcps/connection/connection-pool.ts +216 -0
- package/src/mcps/connection/mcp-connection.ts +327 -0
- package/src/mcps/connection/process-spawner.ts +47 -0
- package/src/mcps/enforcer-tools.server.ts +1106 -0
- package/src/mcps/estimation.server.ts +229 -0
- package/src/mcps/framework-compliance-audit.server.ts +635 -0
- package/src/mcps/framework-help.server.ts +467 -0
- package/src/mcps/governance.server.ts +551 -0
- package/src/mcps/in-process-skill-registry.ts +79 -0
- package/src/mcps/knowledge-skills/api-design.server.test.ts +41 -0
- package/src/mcps/knowledge-skills/api-design.server.ts +160 -0
- package/src/mcps/knowledge-skills/architecture-patterns.server.ts +152 -0
- package/src/mcps/knowledge-skills/bug-triage-specialist.server.ts +624 -0
- package/src/mcps/knowledge-skills/code-analyzer.server.test.ts +129 -0
- package/src/mcps/knowledge-skills/code-analyzer.server.ts +591 -0
- package/src/mcps/knowledge-skills/code-review.server.ts +1132 -0
- package/src/mcps/knowledge-skills/content-creator.server.ts +300 -0
- package/src/mcps/knowledge-skills/database-design.server.ts +1200 -0
- package/src/mcps/knowledge-skills/devops-deployment.server.ts +1622 -0
- package/src/mcps/knowledge-skills/git-workflow.server.ts +152 -0
- package/src/mcps/knowledge-skills/growth-strategist.server.ts +413 -0
- package/src/mcps/knowledge-skills/log-monitor.server.ts +619 -0
- package/src/mcps/knowledge-skills/mobile-development.server.ts +672 -0
- package/src/mcps/knowledge-skills/multimodal-looker.server.ts +1500 -0
- package/src/mcps/knowledge-skills/performance-optimization.server.ts +2065 -0
- package/src/mcps/knowledge-skills/project-analysis.server.ts +1111 -0
- package/src/mcps/knowledge-skills/refactoring-strategies.server.ts +1092 -0
- package/src/mcps/knowledge-skills/security-audit.server.test.ts +112 -0
- package/src/mcps/knowledge-skills/security-audit.server.ts +1193 -0
- package/src/mcps/knowledge-skills/seo-consultant.server.ts +1160 -0
- package/src/mcps/knowledge-skills/session-management.server.ts +576 -0
- package/src/mcps/knowledge-skills/skill-invocation.server.ts +941 -0
- package/src/mcps/knowledge-skills/strategist.server.ts +267 -0
- package/src/mcps/knowledge-skills/tech-writer.server.ts +1638 -0
- package/src/mcps/knowledge-skills/testing-best-practices.server.test.ts +136 -0
- package/src/mcps/knowledge-skills/testing-best-practices.server.ts +1232 -0
- package/src/mcps/knowledge-skills/testing-strategy.server.test.ts +100 -0
- package/src/mcps/knowledge-skills/testing-strategy.server.ts +1172 -0
- package/src/mcps/knowledge-skills/ui-ux-design.server.ts +2076 -0
- package/src/mcps/lint.server.ts +483 -0
- package/src/mcps/mcp-client.ts +706 -0
- package/src/mcps/model-health-check.server.ts +292 -0
- package/src/mcps/orchestrator/config/agent-capabilities.ts +108 -0
- package/src/mcps/orchestrator/execution/execution-planner.ts +353 -0
- package/src/mcps/orchestrator/handlers/complexity-handler.ts +125 -0
- package/src/mcps/orchestrator/handlers/status-handler.ts +295 -0
- package/src/mcps/orchestrator/handlers/task-handler.ts +268 -0
- package/src/mcps/orchestrator/server.ts +388 -0
- package/src/mcps/orchestrator/types.ts +81 -0
- package/src/mcps/orchestrator.server.ts +34 -0
- package/src/mcps/performance-analysis.server.ts +715 -0
- package/src/mcps/processor-pipeline.server.ts +778 -0
- package/src/mcps/protocol/protocol-constants.ts +51 -0
- package/src/mcps/registry.json +110 -0
- package/src/mcps/researcher.server.ts +595 -0
- package/src/mcps/security-scan.server.ts +651 -0
- package/src/mcps/simulation/__tests__/simulation-engine.test.ts +275 -0
- package/src/mcps/simulation/index.ts +23 -0
- package/src/mcps/simulation/server-simulations.ts +241 -0
- package/src/mcps/simulation/simulation-engine.ts +126 -0
- package/src/mcps/state-manager.server.ts +777 -0
- package/src/mcps/tools/__tests__/tool-cache.test.ts +205 -0
- package/src/mcps/tools/__tests__/tool-discovery.test.ts +189 -0
- package/src/mcps/tools/__tests__/tool-executor.test.ts +215 -0
- package/src/mcps/tools/__tests__/tool-registry.test.ts +230 -0
- package/src/mcps/tools/index.ts +15 -0
- package/src/mcps/tools/tool-cache.ts +145 -0
- package/src/mcps/tools/tool-discovery.ts +83 -0
- package/src/mcps/tools/tool-executor.ts +106 -0
- package/src/mcps/tools/tool-registry.ts +78 -0
- package/src/mcps/types/__tests__/types.test.ts +341 -0
- package/src/mcps/types/index.ts +17 -0
- package/src/mcps/types/json-rpc.types.ts +38 -0
- package/src/mcps/types/mcp.types.ts +115 -0
- package/src/opencode/agents/api-design.yml +31 -0
- package/src/opencode/agents/architect.yml +15 -0
- package/src/opencode/agents/architecture-patterns.yml +14 -0
- package/src/opencode/agents/auto-format.yml +14 -0
- package/src/opencode/agents/backend-engineer.yml +12 -0
- package/src/opencode/agents/boot-orchestrator.yml +14 -0
- package/src/opencode/agents/bug-triage-specialist.yml +15 -0
- package/src/opencode/agents/code-analyzer.yml +12 -0
- package/src/opencode/agents/code-reviewer.yml +14 -0
- package/src/opencode/agents/content-creator.yml +12 -0
- package/src/opencode/agents/database-engineer.yml +12 -0
- package/src/opencode/agents/devops-engineer.yml +12 -0
- package/src/opencode/agents/framework-compliance-audit.yml +14 -0
- package/src/opencode/agents/frontend-engineer.yml +12 -0
- package/src/opencode/agents/frontend-ui-ux-engineer.yml +12 -0
- package/src/opencode/agents/git-workflow.yml +15 -0
- package/src/opencode/agents/growth-strategist.yml +12 -0
- package/src/opencode/agents/hermes-agent.yml +12 -0
- package/src/opencode/agents/inference-improve.yml +12 -0
- package/src/opencode/agents/lint.yml +14 -0
- package/src/opencode/agents/log-monitor.yml +12 -0
- package/src/opencode/agents/mobile-developer.yml +12 -0
- package/src/opencode/agents/model-health-check.yml +12 -0
- package/src/opencode/agents/multimodal-looker.yml +12 -0
- package/src/opencode/agents/performance-analysis.yml +12 -0
- package/src/opencode/agents/performance-engineer.yml +12 -0
- package/src/opencode/agents/performance-optimization.yml +12 -0
- package/src/opencode/agents/processor-pipeline.yml +14 -0
- package/src/opencode/agents/project-analysis.yml +12 -0
- package/src/opencode/agents/refactorer.yml +12 -0
- package/src/opencode/agents/researcher.yml +12 -0
- package/src/opencode/agents/security-auditor.yml +12 -0
- package/src/opencode/agents/security-scan.yml +12 -0
- package/src/opencode/agents/seo-consultant.yml +12 -0
- package/src/opencode/agents/session-management.yml +12 -0
- package/src/opencode/agents/state-manager.yml +12 -0
- package/src/opencode/agents/storyteller.yml +12 -0
- package/src/opencode/agents/strategist.yml +12 -0
- package/src/opencode/agents/tech-writer.yml +12 -0
- package/src/opencode/agents/testing-best-practices.yml +12 -0
- package/src/opencode/agents/testing-lead.yml +12 -0
- package/src/opencode/agents/ui-ux-design.yml +12 -0
- package/src/opencode/codex.codex +8 -0
- package/src/opencode/commands/auto-format.md +99 -0
- package/src/opencode/commands/auto-summary-capture.md +90 -0
- package/src/opencode/commands/dependency-audit.md +184 -0
- package/src/opencode/commands/enforcer-daily-scan.md +137 -0
- package/src/opencode/commands/framework-compliance-audit.md +205 -0
- package/src/opencode/commands/interactive-validator.md +75 -0
- package/src/opencode/commands/job-summary-logger.md +68 -0
- package/src/opencode/commands/lint.md +11 -0
- package/src/opencode/commands/mode-switch.md +95 -0
- package/src/opencode/commands/model-health-check.md +186 -0
- package/src/opencode/commands/performance-analysis.md +144 -0
- package/src/opencode/commands/pre-commit-introspection.md +185 -0
- package/src/opencode/commands/pre-commit-introspection.sh +133 -0
- package/src/opencode/commands/security-scan.md +157 -0
- package/src/opencode/commands/sisyphus-validation.md +128 -0
- package/src/opencode/commands/summary-logger.md +83 -0
- package/src/opencode/enforcer-config.json +285 -0
- package/src/opencode/openclaw/config.json +25 -0
- package/src/opencode/workflows/post-deployment-audit.yml +123 -0
- package/src/skills/api-design/SKILL.md +37 -0
- package/src/skills/architect-tools/SKILL.md +37 -0
- package/src/skills/architecture-patterns/SKILL.md +37 -0
- package/src/skills/auto-format/SKILL.md +37 -0
- package/src/skills/backend-engineer/SKILL.md +49 -0
- package/src/skills/boot-orchestrator/SKILL.md +37 -0
- package/src/skills/bug-triage/SKILL.md +43 -0
- package/src/skills/code-analyzer/SKILL.md +45 -0
- package/src/skills/code-review/SKILL.md +52 -0
- package/src/skills/content-creator/SKILL.md +38 -0
- package/src/skills/database-engineer/SKILL.md +46 -0
- package/src/skills/devops-engineer/SKILL.md +49 -0
- package/src/skills/enforcer/SKILL.md +37 -0
- package/src/skills/framework-compliance-audit/SKILL.md +37 -0
- package/src/skills/frontend-engineer/SKILL.md +49 -0
- package/src/skills/frontend-ui-ux-engineer/SKILL.md +41 -0
- package/src/skills/git-workflow/SKILL.md +37 -0
- package/src/skills/growth-strategist/SKILL.md +48 -0
- package/src/skills/hermes-agent/SKILL.md +212 -0
- package/src/skills/inference-improve/SKILL.md +97 -0
- package/src/skills/lint/SKILL.md +37 -0
- package/src/skills/log-monitor/SKILL.md +44 -0
- package/src/skills/mobile-developer/SKILL.md +42 -0
- package/src/skills/model-health-check/SKILL.md +37 -0
- package/src/skills/multimodal-looker/SKILL.md +45 -0
- package/src/skills/orchestrator/SKILL.md +37 -0
- package/src/skills/performance-analysis/SKILL.md +37 -0
- package/src/skills/performance-engineer/SKILL.md +41 -0
- package/src/skills/performance-optimization/SKILL.md +37 -0
- package/src/skills/processor-pipeline/SKILL.md +37 -0
- package/src/skills/project-analysis/SKILL.md +42 -0
- package/src/skills/refactoring-strategies/SKILL.md +37 -0
- package/src/skills/registry.json +66 -0
- package/src/skills/researcher/SKILL.md +37 -0
- package/src/skills/security-audit/SKILL.md +48 -0
- package/src/skills/security-scan/SKILL.md +37 -0
- package/src/skills/seo-consultant/SKILL.md +43 -0
- package/src/skills/session-management/SKILL.md +36 -0
- package/src/skills/state-manager/SKILL.md +37 -0
- package/src/skills/storyteller/SKILL.md +130 -0
- package/src/skills/strategist/SKILL.md +32 -0
- package/src/skills/tech-writer/SKILL.md +37 -0
- package/src/skills/testing-best-practices/SKILL.md +37 -0
- package/src/skills/testing-strategy/SKILL.md +43 -0
- package/src/skills/ui-ux-design/SKILL.md +603 -0
|
@@ -0,0 +1,846 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* xray Security Audit MCP Server
|
|
3
|
+
*
|
|
4
|
+
* Knowledge skill for comprehensive security analysis, vulnerability assessment,
|
|
5
|
+
* and compliance validation - ensures production-ready security posture
|
|
6
|
+
*/
|
|
7
|
+
import { Server } from "@modelcontextprotocol/sdk/server/index.js";
|
|
8
|
+
import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
|
|
9
|
+
import { CallToolRequestSchema, ListToolsRequestSchema, } from "@modelcontextprotocol/sdk/types.js";
|
|
10
|
+
import * as fs from "fs";
|
|
11
|
+
import * as path from "path";
|
|
12
|
+
import { createGracefulShutdown } from "../../utils/shutdown-handler.js";
|
|
13
|
+
class StringRaySecurityAuditServer {
|
|
14
|
+
server;
|
|
15
|
+
constructor() {
|
|
16
|
+
this.server = new Server({
|
|
17
|
+
name: "security-audit", version: "1.22.67",
|
|
18
|
+
}, {
|
|
19
|
+
capabilities: {
|
|
20
|
+
tools: {},
|
|
21
|
+
},
|
|
22
|
+
});
|
|
23
|
+
this.setupToolHandlers();
|
|
24
|
+
// Server initialization - removed unnecessary startup logging
|
|
25
|
+
}
|
|
26
|
+
setupToolHandlers() {
|
|
27
|
+
this.server.setRequestHandler(ListToolsRequestSchema, async () => {
|
|
28
|
+
return {
|
|
29
|
+
tools: [
|
|
30
|
+
{
|
|
31
|
+
name: "audit_security",
|
|
32
|
+
description: "Perform comprehensive security audit on codebase files",
|
|
33
|
+
inputSchema: {
|
|
34
|
+
type: "object",
|
|
35
|
+
properties: {
|
|
36
|
+
files: {
|
|
37
|
+
type: "array",
|
|
38
|
+
items: { type: "string" },
|
|
39
|
+
description: "List of file paths to audit",
|
|
40
|
+
},
|
|
41
|
+
includeDependencies: {
|
|
42
|
+
type: "boolean",
|
|
43
|
+
description: "Include dependency vulnerability analysis",
|
|
44
|
+
default: true,
|
|
45
|
+
},
|
|
46
|
+
complianceFrameworks: {
|
|
47
|
+
type: "array",
|
|
48
|
+
items: {
|
|
49
|
+
type: "string",
|
|
50
|
+
enum: ["owasp-top-10", "nist", "iso-27001", "pci-dss"],
|
|
51
|
+
},
|
|
52
|
+
description: "Compliance frameworks to check against",
|
|
53
|
+
},
|
|
54
|
+
},
|
|
55
|
+
required: ["files"],
|
|
56
|
+
},
|
|
57
|
+
},
|
|
58
|
+
{
|
|
59
|
+
name: "check_vulnerability",
|
|
60
|
+
description: "Check specific security vulnerability patterns in a file",
|
|
61
|
+
inputSchema: {
|
|
62
|
+
type: "object",
|
|
63
|
+
properties: {
|
|
64
|
+
filePath: {
|
|
65
|
+
type: "string",
|
|
66
|
+
description: "Path to the file to check",
|
|
67
|
+
},
|
|
68
|
+
vulnerabilityType: {
|
|
69
|
+
type: "string",
|
|
70
|
+
enum: [
|
|
71
|
+
"injection",
|
|
72
|
+
"authentication",
|
|
73
|
+
"authorization",
|
|
74
|
+
"cryptography",
|
|
75
|
+
"xss",
|
|
76
|
+
"csrf",
|
|
77
|
+
"secrets",
|
|
78
|
+
"configuration",
|
|
79
|
+
],
|
|
80
|
+
},
|
|
81
|
+
severity: {
|
|
82
|
+
type: "string",
|
|
83
|
+
enum: ["critical", "high", "medium", "low", "info"],
|
|
84
|
+
description: "Minimum severity level to report",
|
|
85
|
+
},
|
|
86
|
+
},
|
|
87
|
+
required: ["filePath", "vulnerabilityType"],
|
|
88
|
+
},
|
|
89
|
+
},
|
|
90
|
+
{
|
|
91
|
+
name: "generate_security_report",
|
|
92
|
+
description: "Generate comprehensive security report with remediation steps",
|
|
93
|
+
inputSchema: {
|
|
94
|
+
type: "object",
|
|
95
|
+
properties: {
|
|
96
|
+
auditResults: {
|
|
97
|
+
type: "object",
|
|
98
|
+
description: "Results from audit_security tool",
|
|
99
|
+
},
|
|
100
|
+
format: {
|
|
101
|
+
type: "string",
|
|
102
|
+
enum: ["markdown", "json", "html"],
|
|
103
|
+
default: "markdown",
|
|
104
|
+
},
|
|
105
|
+
includeRemediation: {
|
|
106
|
+
type: "boolean",
|
|
107
|
+
default: true,
|
|
108
|
+
},
|
|
109
|
+
},
|
|
110
|
+
required: ["auditResults"],
|
|
111
|
+
},
|
|
112
|
+
},
|
|
113
|
+
{
|
|
114
|
+
name: "analyze_proposal",
|
|
115
|
+
description: "Analyze an inference proposal (pattern/bug/refactor) from a security perspective and return a structured governance decision",
|
|
116
|
+
inputSchema: {
|
|
117
|
+
type: "object",
|
|
118
|
+
properties: {
|
|
119
|
+
proposalTitle: { type: "string" },
|
|
120
|
+
proposalDescription: { type: "string" },
|
|
121
|
+
evidence: { type: "array", items: { type: "string" } },
|
|
122
|
+
proposalType: { type: "string" },
|
|
123
|
+
},
|
|
124
|
+
required: ["proposalTitle", "proposalDescription"],
|
|
125
|
+
},
|
|
126
|
+
},
|
|
127
|
+
],
|
|
128
|
+
};
|
|
129
|
+
});
|
|
130
|
+
this.server.setRequestHandler(CallToolRequestSchema, async (request) => {
|
|
131
|
+
const { name, arguments: args } = request.params;
|
|
132
|
+
switch (name) {
|
|
133
|
+
case "audit_security":
|
|
134
|
+
return await this.auditSecurity(args);
|
|
135
|
+
case "check_vulnerability":
|
|
136
|
+
return await this.checkVulnerability(args);
|
|
137
|
+
case "generate_security_report":
|
|
138
|
+
return await this.generateSecurityReport(args);
|
|
139
|
+
case "analyze_proposal":
|
|
140
|
+
return await this.analyzeProposal(args);
|
|
141
|
+
default:
|
|
142
|
+
throw new Error(`Unknown tool: ${name}`);
|
|
143
|
+
}
|
|
144
|
+
});
|
|
145
|
+
}
|
|
146
|
+
async auditSecurity(args) {
|
|
147
|
+
const { files, includeDependencies = true, complianceFrameworks = ["owasp-top-10"], } = args;
|
|
148
|
+
try {
|
|
149
|
+
const vulnerabilities = [];
|
|
150
|
+
let totalFiles = 0;
|
|
151
|
+
for (const filePath of files) {
|
|
152
|
+
if (!fs.existsSync(filePath)) {
|
|
153
|
+
continue;
|
|
154
|
+
}
|
|
155
|
+
totalFiles++;
|
|
156
|
+
const content = fs.readFileSync(filePath, "utf-8");
|
|
157
|
+
const extension = path.extname(filePath).toLowerCase();
|
|
158
|
+
const language = this.detectLanguage(extension);
|
|
159
|
+
const fileVulnerabilities = this.analyzeFileForVulnerabilities(content, filePath, language);
|
|
160
|
+
vulnerabilities.push(...fileVulnerabilities);
|
|
161
|
+
}
|
|
162
|
+
// Generate compliance analysis
|
|
163
|
+
const compliance = this.analyzeCompliance(vulnerabilities, complianceFrameworks);
|
|
164
|
+
// Calculate summary metrics
|
|
165
|
+
const summary = this.calculateSecuritySummary(vulnerabilities, totalFiles);
|
|
166
|
+
const report = {
|
|
167
|
+
summary,
|
|
168
|
+
vulnerabilities,
|
|
169
|
+
recommendations: this.generateRecommendations(vulnerabilities, compliance),
|
|
170
|
+
compliance,
|
|
171
|
+
};
|
|
172
|
+
return {
|
|
173
|
+
content: [
|
|
174
|
+
{
|
|
175
|
+
type: "text",
|
|
176
|
+
text: `Security Audit Report:\n\n` +
|
|
177
|
+
`đ SUMMARY\n` +
|
|
178
|
+
`Files Analyzed: ${totalFiles}\n` +
|
|
179
|
+
`Vulnerabilities Found: ${vulnerabilities.length}\n` +
|
|
180
|
+
`Critical: ${summary.criticalCount} | High: ${summary.highCount} | Medium: ${summary.mediumCount} | Low: ${summary.lowCount}\n` +
|
|
181
|
+
`Overall Risk Score: ${summary.overallRiskScore}/100\n` +
|
|
182
|
+
`Compliance Score: ${summary.complianceScore}/100\n\n` +
|
|
183
|
+
`đ¨ TOP VULNERABILITIES\n${vulnerabilities
|
|
184
|
+
.slice(0, 5)
|
|
185
|
+
.map((v) => `${this.getSeverityIcon(v.severity)} ${v.title} (${v.category}) - ${v.file}:${v.line}`)
|
|
186
|
+
.join("\n")}\n\n` +
|
|
187
|
+
`đĄ KEY RECOMMENDATIONS\n${report.recommendations
|
|
188
|
+
.slice(0, 3)
|
|
189
|
+
.map((r) => `âĸ ${r}`)
|
|
190
|
+
.join("\n")}`,
|
|
191
|
+
},
|
|
192
|
+
],
|
|
193
|
+
data: report, // Include full report data
|
|
194
|
+
};
|
|
195
|
+
}
|
|
196
|
+
catch (error) {
|
|
197
|
+
return {
|
|
198
|
+
content: [
|
|
199
|
+
{
|
|
200
|
+
type: "text",
|
|
201
|
+
text: `Error performing security audit: ${error instanceof Error ? error.message : String(error)}`,
|
|
202
|
+
},
|
|
203
|
+
],
|
|
204
|
+
};
|
|
205
|
+
}
|
|
206
|
+
}
|
|
207
|
+
async checkVulnerability(args) {
|
|
208
|
+
const { filePath, vulnerabilityType, severity = "info" } = args;
|
|
209
|
+
try {
|
|
210
|
+
if (!fs.existsSync(filePath)) {
|
|
211
|
+
throw new Error(`File not found: ${filePath}`);
|
|
212
|
+
}
|
|
213
|
+
const content = fs.readFileSync(filePath, "utf-8");
|
|
214
|
+
const extension = path.extname(filePath).toLowerCase();
|
|
215
|
+
const language = this.detectLanguage(extension);
|
|
216
|
+
const vulnerabilities = this.analyzeFileForVulnerabilities(content, filePath, language)
|
|
217
|
+
.filter((v) => v.category === vulnerabilityType ||
|
|
218
|
+
this.mapVulnTypeToCategory(vulnerabilityType).includes(v.category))
|
|
219
|
+
.filter((v) => this.severityLevel(v.severity) >= this.severityLevel(severity));
|
|
220
|
+
return {
|
|
221
|
+
content: [
|
|
222
|
+
{
|
|
223
|
+
type: "text",
|
|
224
|
+
text: `Vulnerability Check Results for ${vulnerabilityType}:\n\n` +
|
|
225
|
+
`File: ${filePath}\n` +
|
|
226
|
+
`Vulnerabilities Found: ${vulnerabilities.length}\n\n` +
|
|
227
|
+
vulnerabilities
|
|
228
|
+
.map((v) => `${this.getSeverityIcon(v.severity)} ${v.title}\n` +
|
|
229
|
+
` Line ${v.line}: ${v.description}\n` +
|
|
230
|
+
` Impact: ${v.impact}\n` +
|
|
231
|
+
` Fix: ${v.recommendation}\n`)
|
|
232
|
+
.join("\n") +
|
|
233
|
+
(vulnerabilities.length === 0
|
|
234
|
+
? "\nâ
No vulnerabilities of this type found!"
|
|
235
|
+
: ""),
|
|
236
|
+
},
|
|
237
|
+
],
|
|
238
|
+
};
|
|
239
|
+
}
|
|
240
|
+
catch (error) {
|
|
241
|
+
return {
|
|
242
|
+
content: [
|
|
243
|
+
{
|
|
244
|
+
type: "text",
|
|
245
|
+
text: `Error checking vulnerability: ${error instanceof Error ? error.message : String(error)}`,
|
|
246
|
+
},
|
|
247
|
+
],
|
|
248
|
+
};
|
|
249
|
+
}
|
|
250
|
+
}
|
|
251
|
+
async generateSecurityReport(args) {
|
|
252
|
+
const { auditResults, format = "markdown", includeRemediation = true, } = args;
|
|
253
|
+
try {
|
|
254
|
+
const report = auditResults.data
|
|
255
|
+
? auditResults.data
|
|
256
|
+
: auditResults;
|
|
257
|
+
let output = "";
|
|
258
|
+
switch (format) {
|
|
259
|
+
case "markdown":
|
|
260
|
+
output = this.generateMarkdownReport(report, includeRemediation);
|
|
261
|
+
break;
|
|
262
|
+
case "json":
|
|
263
|
+
output = JSON.stringify(report, null, 2);
|
|
264
|
+
break;
|
|
265
|
+
case "html":
|
|
266
|
+
output = this.generateHTMLReport(report, includeRemediation);
|
|
267
|
+
break;
|
|
268
|
+
default:
|
|
269
|
+
output = this.generateMarkdownReport(report, includeRemediation);
|
|
270
|
+
}
|
|
271
|
+
return {
|
|
272
|
+
content: [
|
|
273
|
+
{
|
|
274
|
+
type: "text",
|
|
275
|
+
text: `Security Report Generated (${format.toUpperCase()}):\n\n${format === "json" ? "```\n" + output + "\n```" : output.substring(0, 2000) + (output.length > 2000 ? "\n\n... (truncated)" : "")}`,
|
|
276
|
+
},
|
|
277
|
+
],
|
|
278
|
+
fullReport: output,
|
|
279
|
+
};
|
|
280
|
+
}
|
|
281
|
+
catch (error) {
|
|
282
|
+
return {
|
|
283
|
+
content: [
|
|
284
|
+
{
|
|
285
|
+
type: "text",
|
|
286
|
+
text: `Error generating security report: ${error instanceof Error ? error.message : String(error)}`,
|
|
287
|
+
},
|
|
288
|
+
],
|
|
289
|
+
};
|
|
290
|
+
}
|
|
291
|
+
}
|
|
292
|
+
analyzeFileForVulnerabilities(content, filePath, language) {
|
|
293
|
+
const vulnerabilities = [];
|
|
294
|
+
const lines = content.split("\n");
|
|
295
|
+
lines.forEach((line, index) => {
|
|
296
|
+
const lineNum = index + 1;
|
|
297
|
+
// Injection vulnerabilities
|
|
298
|
+
vulnerabilities.push(...this.checkInjectionVulnerabilities(line, lineNum, filePath, language));
|
|
299
|
+
// Authentication & Authorization
|
|
300
|
+
vulnerabilities.push(...this.checkAuthVulnerabilities(line, lineNum, filePath, language));
|
|
301
|
+
// Cryptography issues
|
|
302
|
+
vulnerabilities.push(...this.checkCryptoVulnerabilities(line, lineNum, filePath, language));
|
|
303
|
+
// Configuration issues
|
|
304
|
+
vulnerabilities.push(...this.checkConfigurationVulnerabilities(line, lineNum, filePath, language));
|
|
305
|
+
// Data protection
|
|
306
|
+
vulnerabilities.push(...this.checkDataProtectionVulnerabilities(line, lineNum, filePath, language));
|
|
307
|
+
// Input validation
|
|
308
|
+
vulnerabilities.push(...this.checkInputValidationVulnerabilities(line, lineNum, filePath, language));
|
|
309
|
+
});
|
|
310
|
+
return vulnerabilities;
|
|
311
|
+
}
|
|
312
|
+
checkInjectionVulnerabilities(line, lineNum, filePath, language) {
|
|
313
|
+
const vulnerabilities = [];
|
|
314
|
+
// SQL Injection
|
|
315
|
+
if (line.includes("query(") ||
|
|
316
|
+
line.includes("execute(") ||
|
|
317
|
+
line.includes("sql(")) {
|
|
318
|
+
if (line.includes("${") ||
|
|
319
|
+
line.includes("+") ||
|
|
320
|
+
line.includes("concat(")) {
|
|
321
|
+
vulnerabilities.push({
|
|
322
|
+
id: `SQLI-${filePath}-${lineNum}`,
|
|
323
|
+
title: "Potential SQL Injection",
|
|
324
|
+
severity: "critical",
|
|
325
|
+
category: "injection",
|
|
326
|
+
cwe: "CWE-89",
|
|
327
|
+
owasp: "A03:2021-Injection",
|
|
328
|
+
file: filePath,
|
|
329
|
+
line: lineNum,
|
|
330
|
+
description: "String concatenation or template literals used in SQL queries",
|
|
331
|
+
impact: "Attackers can execute arbitrary SQL commands",
|
|
332
|
+
recommendation: "Use parameterized queries or prepared statements",
|
|
333
|
+
codeSnippet: line.trim(),
|
|
334
|
+
confidence: 85,
|
|
335
|
+
});
|
|
336
|
+
}
|
|
337
|
+
}
|
|
338
|
+
// Command Injection
|
|
339
|
+
if (line.includes("exec(") ||
|
|
340
|
+
line.includes("spawn(") ||
|
|
341
|
+
line.includes("system(")) {
|
|
342
|
+
if (line.includes("${") || line.includes("+")) {
|
|
343
|
+
vulnerabilities.push({
|
|
344
|
+
id: `CMDI-${filePath}-${lineNum}`,
|
|
345
|
+
title: "Potential Command Injection",
|
|
346
|
+
severity: "critical",
|
|
347
|
+
category: "injection",
|
|
348
|
+
cwe: "CWE-78",
|
|
349
|
+
owasp: "A03:2021-Injection",
|
|
350
|
+
file: filePath,
|
|
351
|
+
line: lineNum,
|
|
352
|
+
description: "Dynamic command execution with user input",
|
|
353
|
+
impact: "Attackers can execute arbitrary system commands",
|
|
354
|
+
recommendation: "Validate and sanitize input, use safe APIs",
|
|
355
|
+
codeSnippet: line.trim(),
|
|
356
|
+
confidence: 90,
|
|
357
|
+
});
|
|
358
|
+
}
|
|
359
|
+
}
|
|
360
|
+
return vulnerabilities;
|
|
361
|
+
}
|
|
362
|
+
checkAuthVulnerabilities(line, lineNum, filePath, language) {
|
|
363
|
+
const vulnerabilities = [];
|
|
364
|
+
// Weak password policies
|
|
365
|
+
if (line.includes("password") &&
|
|
366
|
+
(line.includes("length") || line.includes("min"))) {
|
|
367
|
+
if (line.includes("6") || line.includes("8")) {
|
|
368
|
+
vulnerabilities.push({
|
|
369
|
+
id: `WEAKPASS-${filePath}-${lineNum}`,
|
|
370
|
+
title: "Weak Password Policy",
|
|
371
|
+
severity: "medium",
|
|
372
|
+
category: "authentication",
|
|
373
|
+
cwe: "CWE-521",
|
|
374
|
+
owasp: "A02:2021-Cryptographic Failures",
|
|
375
|
+
file: filePath,
|
|
376
|
+
line: lineNum,
|
|
377
|
+
description: "Password minimum length is too short",
|
|
378
|
+
impact: "Weak passwords are easily cracked",
|
|
379
|
+
recommendation: "Require at least 12 characters, mix of character types",
|
|
380
|
+
codeSnippet: line.trim(),
|
|
381
|
+
confidence: 75,
|
|
382
|
+
});
|
|
383
|
+
}
|
|
384
|
+
}
|
|
385
|
+
// JWT without expiration
|
|
386
|
+
if (line.includes("jwt") || line.includes("JWT")) {
|
|
387
|
+
if (!line.includes("expires") &&
|
|
388
|
+
!line.includes("exp") &&
|
|
389
|
+
!line.includes("expiresIn")) {
|
|
390
|
+
vulnerabilities.push({
|
|
391
|
+
id: `JWTNOEXP-${filePath}-${lineNum}`,
|
|
392
|
+
title: "JWT Without Expiration",
|
|
393
|
+
severity: "high",
|
|
394
|
+
category: "authentication",
|
|
395
|
+
cwe: "CWE-613",
|
|
396
|
+
owasp: "A07:2021-Identification and Authentication Failures",
|
|
397
|
+
file: filePath,
|
|
398
|
+
line: lineNum,
|
|
399
|
+
description: "JWT tokens created without expiration time",
|
|
400
|
+
impact: "Tokens never expire, infinite session vulnerability",
|
|
401
|
+
recommendation: "Always set expiration time on JWT tokens",
|
|
402
|
+
codeSnippet: line.trim(),
|
|
403
|
+
confidence: 80,
|
|
404
|
+
});
|
|
405
|
+
}
|
|
406
|
+
}
|
|
407
|
+
return vulnerabilities;
|
|
408
|
+
}
|
|
409
|
+
checkCryptoVulnerabilities(line, lineNum, filePath, language) {
|
|
410
|
+
const vulnerabilities = [];
|
|
411
|
+
// Weak hashing algorithms
|
|
412
|
+
if (line.includes("md5(") ||
|
|
413
|
+
line.includes("sha1(") ||
|
|
414
|
+
line.includes("MD5") ||
|
|
415
|
+
line.includes("SHA1")) {
|
|
416
|
+
vulnerabilities.push({
|
|
417
|
+
id: `WEAKHASH-${filePath}-${lineNum}`,
|
|
418
|
+
title: "Weak Hashing Algorithm",
|
|
419
|
+
severity: "high",
|
|
420
|
+
category: "cryptography",
|
|
421
|
+
cwe: "CWE-328",
|
|
422
|
+
owasp: "A02:2021-Cryptographic Failures",
|
|
423
|
+
file: filePath,
|
|
424
|
+
line: lineNum,
|
|
425
|
+
description: "Using deprecated or weak hashing algorithms",
|
|
426
|
+
impact: "Passwords and data easily compromised",
|
|
427
|
+
recommendation: "Use bcrypt, scrypt, or Argon2 for passwords; SHA-256+ for data",
|
|
428
|
+
codeSnippet: line.trim(),
|
|
429
|
+
confidence: 95,
|
|
430
|
+
});
|
|
431
|
+
}
|
|
432
|
+
// Insecure random number generation
|
|
433
|
+
if (line.includes("Math.random(")) {
|
|
434
|
+
vulnerabilities.push({
|
|
435
|
+
id: `WEAKRAND-${filePath}-${lineNum}`,
|
|
436
|
+
title: "Weak Random Number Generation",
|
|
437
|
+
severity: "medium",
|
|
438
|
+
category: "cryptography",
|
|
439
|
+
cwe: "CWE-338",
|
|
440
|
+
owasp: "A02:2021-Cryptographic Failures",
|
|
441
|
+
file: filePath,
|
|
442
|
+
line: lineNum,
|
|
443
|
+
description: "Using Math.random() for security-sensitive operations",
|
|
444
|
+
impact: "Predictable random values compromise security",
|
|
445
|
+
recommendation: "Use crypto.randomBytes() or secure random APIs",
|
|
446
|
+
codeSnippet: line.trim(),
|
|
447
|
+
confidence: 85,
|
|
448
|
+
});
|
|
449
|
+
}
|
|
450
|
+
return vulnerabilities;
|
|
451
|
+
}
|
|
452
|
+
checkConfigurationVulnerabilities(line, lineNum, filePath, language) {
|
|
453
|
+
const vulnerabilities = [];
|
|
454
|
+
// Debug mode in production
|
|
455
|
+
if (line.includes("DEBUG") || line.includes("debug")) {
|
|
456
|
+
if (line.includes("true") || line.includes("enabled")) {
|
|
457
|
+
vulnerabilities.push({
|
|
458
|
+
id: `DEBUGPROD-${filePath}-${lineNum}`,
|
|
459
|
+
title: "Debug Mode Enabled",
|
|
460
|
+
severity: "medium",
|
|
461
|
+
category: "configuration",
|
|
462
|
+
cwe: "CWE-489",
|
|
463
|
+
owasp: "A05:2021-Security Misconfiguration",
|
|
464
|
+
file: filePath,
|
|
465
|
+
line: lineNum,
|
|
466
|
+
description: "Debug mode appears to be enabled",
|
|
467
|
+
impact: "Sensitive information leaked in production",
|
|
468
|
+
recommendation: "Disable debug mode in production environments",
|
|
469
|
+
codeSnippet: line.trim(),
|
|
470
|
+
confidence: 70,
|
|
471
|
+
});
|
|
472
|
+
}
|
|
473
|
+
}
|
|
474
|
+
// CORS misconfiguration
|
|
475
|
+
if (line.includes("cors") || line.includes("CORS")) {
|
|
476
|
+
if (line.includes("*") || line.includes("allow-all")) {
|
|
477
|
+
vulnerabilities.push({
|
|
478
|
+
id: `CORSMISCONFIG-${filePath}-${lineNum}`,
|
|
479
|
+
title: "CORS Misconfiguration",
|
|
480
|
+
severity: "medium",
|
|
481
|
+
category: "configuration",
|
|
482
|
+
cwe: "CWE-942",
|
|
483
|
+
owasp: "A05:2021-Security Misconfiguration",
|
|
484
|
+
file: filePath,
|
|
485
|
+
line: lineNum,
|
|
486
|
+
description: "Overly permissive CORS configuration",
|
|
487
|
+
impact: "Cross-origin requests from any domain allowed",
|
|
488
|
+
recommendation: "Specify allowed origins explicitly",
|
|
489
|
+
codeSnippet: line.trim(),
|
|
490
|
+
confidence: 75,
|
|
491
|
+
});
|
|
492
|
+
}
|
|
493
|
+
}
|
|
494
|
+
return vulnerabilities;
|
|
495
|
+
}
|
|
496
|
+
checkDataProtectionVulnerabilities(line, lineNum, filePath, language) {
|
|
497
|
+
const vulnerabilities = [];
|
|
498
|
+
// Sensitive data logging
|
|
499
|
+
if (line.includes("console.log") || line.includes("logger.")) {
|
|
500
|
+
if (line.includes("password") ||
|
|
501
|
+
line.includes("token") ||
|
|
502
|
+
line.includes("secret") ||
|
|
503
|
+
line.includes("key")) {
|
|
504
|
+
vulnerabilities.push({
|
|
505
|
+
id: `SENSITIVELOG-${filePath}-${lineNum}`,
|
|
506
|
+
title: "Sensitive Data Logging",
|
|
507
|
+
severity: "high",
|
|
508
|
+
category: "data-protection",
|
|
509
|
+
cwe: "CWE-532",
|
|
510
|
+
owasp: "A09:2021-Security Logging and Monitoring Failures",
|
|
511
|
+
file: filePath,
|
|
512
|
+
line: lineNum,
|
|
513
|
+
description: "Logging sensitive information like passwords or tokens",
|
|
514
|
+
impact: "Credentials exposed in logs",
|
|
515
|
+
recommendation: "Never log sensitive data, use proper redaction",
|
|
516
|
+
codeSnippet: line.trim(),
|
|
517
|
+
confidence: 90,
|
|
518
|
+
});
|
|
519
|
+
}
|
|
520
|
+
}
|
|
521
|
+
// Insecure data transmission
|
|
522
|
+
if (line.includes("http://") &&
|
|
523
|
+
!line.includes("localhost") &&
|
|
524
|
+
!line.includes("127.0.0.1")) {
|
|
525
|
+
vulnerabilities.push({
|
|
526
|
+
id: `HTTPNOTLS-${filePath}-${lineNum}`,
|
|
527
|
+
title: "Insecure HTTP Transmission",
|
|
528
|
+
severity: "high",
|
|
529
|
+
category: "data-protection",
|
|
530
|
+
cwe: "CWE-319",
|
|
531
|
+
owasp: "A02:2021-Cryptographic Failures",
|
|
532
|
+
file: filePath,
|
|
533
|
+
line: lineNum,
|
|
534
|
+
description: "Data transmitted over unencrypted HTTP",
|
|
535
|
+
impact: "Data intercepted by attackers",
|
|
536
|
+
recommendation: "Use HTTPS for all data transmission",
|
|
537
|
+
codeSnippet: line.trim(),
|
|
538
|
+
confidence: 95,
|
|
539
|
+
});
|
|
540
|
+
}
|
|
541
|
+
return vulnerabilities;
|
|
542
|
+
}
|
|
543
|
+
checkInputValidationVulnerabilities(line, lineNum, filePath, language) {
|
|
544
|
+
const vulnerabilities = [];
|
|
545
|
+
// Missing input validation
|
|
546
|
+
if (line.includes("req.body") ||
|
|
547
|
+
line.includes("req.query") ||
|
|
548
|
+
line.includes("req.params")) {
|
|
549
|
+
// Check if there's any validation on the same or next few lines
|
|
550
|
+
const nextLines = this.getNextLines(filePath, lineNum, 3);
|
|
551
|
+
const hasValidation = nextLines.some((nextLine) => nextLine.includes("validate") ||
|
|
552
|
+
nextLine.includes("sanitize") ||
|
|
553
|
+
nextLine.includes("joi") ||
|
|
554
|
+
nextLine.includes("zod") ||
|
|
555
|
+
nextLine.includes("isEmail") ||
|
|
556
|
+
nextLine.includes("isLength"));
|
|
557
|
+
if (!hasValidation) {
|
|
558
|
+
vulnerabilities.push({
|
|
559
|
+
id: `NOVALIDATION-${filePath}-${lineNum}`,
|
|
560
|
+
title: "Missing Input Validation",
|
|
561
|
+
severity: "medium",
|
|
562
|
+
category: "input-validation",
|
|
563
|
+
cwe: "CWE-20",
|
|
564
|
+
owasp: "A03:2021-Injection",
|
|
565
|
+
file: filePath,
|
|
566
|
+
line: lineNum,
|
|
567
|
+
description: "User input processed without validation",
|
|
568
|
+
impact: "Malicious input can cause security issues",
|
|
569
|
+
recommendation: "Validate and sanitize all user inputs",
|
|
570
|
+
codeSnippet: line.trim(),
|
|
571
|
+
confidence: 60,
|
|
572
|
+
});
|
|
573
|
+
}
|
|
574
|
+
}
|
|
575
|
+
return vulnerabilities;
|
|
576
|
+
}
|
|
577
|
+
getNextLines(filePath, startLine, count) {
|
|
578
|
+
try {
|
|
579
|
+
const content = fs.readFileSync(filePath, "utf-8");
|
|
580
|
+
const lines = content.split("\n");
|
|
581
|
+
const result = [];
|
|
582
|
+
for (let i = startLine; i < Math.min(startLine + count, lines.length); i++) {
|
|
583
|
+
const line = lines[i];
|
|
584
|
+
if (line) {
|
|
585
|
+
result.push(line);
|
|
586
|
+
}
|
|
587
|
+
}
|
|
588
|
+
return result;
|
|
589
|
+
}
|
|
590
|
+
catch {
|
|
591
|
+
return [];
|
|
592
|
+
}
|
|
593
|
+
}
|
|
594
|
+
detectLanguage(extension) {
|
|
595
|
+
const languageMap = {
|
|
596
|
+
".ts": "typescript",
|
|
597
|
+
".tsx": "typescript",
|
|
598
|
+
".js": "javascript",
|
|
599
|
+
".jsx": "javascript",
|
|
600
|
+
".py": "python",
|
|
601
|
+
".java": "java",
|
|
602
|
+
".cpp": "cpp",
|
|
603
|
+
".c": "c",
|
|
604
|
+
".cs": "csharp",
|
|
605
|
+
".php": "php",
|
|
606
|
+
".rb": "ruby",
|
|
607
|
+
".go": "go",
|
|
608
|
+
".rs": "rust",
|
|
609
|
+
".swift": "swift",
|
|
610
|
+
".kt": "kotlin",
|
|
611
|
+
".scala": "scala",
|
|
612
|
+
};
|
|
613
|
+
return languageMap[extension] || "unknown";
|
|
614
|
+
}
|
|
615
|
+
calculateSecuritySummary(vulnerabilities, totalFiles) {
|
|
616
|
+
const counts = {
|
|
617
|
+
critical: vulnerabilities.filter((v) => v.severity === "critical").length,
|
|
618
|
+
high: vulnerabilities.filter((v) => v.severity === "high").length,
|
|
619
|
+
medium: vulnerabilities.filter((v) => v.severity === "medium").length,
|
|
620
|
+
low: vulnerabilities.filter((v) => v.severity === "low").length,
|
|
621
|
+
};
|
|
622
|
+
// Calculate risk score based on vulnerability counts and severity
|
|
623
|
+
const riskScore = Math.min(100, counts.critical * 10 +
|
|
624
|
+
counts.high * 5 +
|
|
625
|
+
counts.medium * 2 +
|
|
626
|
+
counts.low * 1);
|
|
627
|
+
// Calculate compliance score (inverse of risk score, adjusted for file count)
|
|
628
|
+
const baseCompliance = Math.max(0, 100 - riskScore);
|
|
629
|
+
const complianceScore = Math.max(0, baseCompliance - (totalFiles > 10 ? 5 : 0));
|
|
630
|
+
return {
|
|
631
|
+
totalFiles,
|
|
632
|
+
vulnerabilitiesFound: vulnerabilities.length,
|
|
633
|
+
criticalCount: counts.critical,
|
|
634
|
+
highCount: counts.high,
|
|
635
|
+
mediumCount: counts.medium,
|
|
636
|
+
lowCount: counts.low,
|
|
637
|
+
overallRiskScore: riskScore,
|
|
638
|
+
complianceScore,
|
|
639
|
+
};
|
|
640
|
+
}
|
|
641
|
+
analyzeCompliance(vulnerabilities, frameworks) {
|
|
642
|
+
const owaspTop10 = {};
|
|
643
|
+
// OWASP Top 10 2021 mapping
|
|
644
|
+
const owaspMapping = {
|
|
645
|
+
"A01:2021-Broken Access Control": ["authorization"],
|
|
646
|
+
"A02:2021-Cryptographic Failures": ["cryptography"],
|
|
647
|
+
"A03:2021-Injection": ["injection"],
|
|
648
|
+
"A04:2021-Insecure Design": ["configuration", "input-validation"],
|
|
649
|
+
"A05:2021-Security Misconfiguration": ["configuration"],
|
|
650
|
+
"A06:2021-Vulnerable Components": [], // Would need dependency analysis
|
|
651
|
+
"A07:2021-Authentication Failures": ["authentication"],
|
|
652
|
+
"A08:2021-Software Integrity": ["configuration"],
|
|
653
|
+
"A09:2021-Security Logging": ["data-protection"],
|
|
654
|
+
"A10:2021-SSRF": ["injection"], // Simplified mapping
|
|
655
|
+
};
|
|
656
|
+
// Check each OWASP category
|
|
657
|
+
Object.entries(owaspMapping).forEach(([owaspId, categories]) => {
|
|
658
|
+
const hasVulnsInCategory = vulnerabilities.some((v) => categories.includes(v.category));
|
|
659
|
+
owaspTop10[owaspId] = !hasVulnsInCategory; // True if no vulnerabilities found
|
|
660
|
+
});
|
|
661
|
+
return {
|
|
662
|
+
owaspTop10,
|
|
663
|
+
frameworks,
|
|
664
|
+
};
|
|
665
|
+
}
|
|
666
|
+
generateRecommendations(vulnerabilities, compliance) {
|
|
667
|
+
const recommendations = [];
|
|
668
|
+
// Group vulnerabilities by category
|
|
669
|
+
const byCategory = vulnerabilities.reduce((acc, v) => {
|
|
670
|
+
acc[v.category] = (acc[v.category] || 0) + 1;
|
|
671
|
+
return acc;
|
|
672
|
+
}, {});
|
|
673
|
+
// Generate category-specific recommendations
|
|
674
|
+
if ((byCategory.injection || 0) > 0) {
|
|
675
|
+
recommendations.push("Implement parameterized queries and input sanitization to prevent injection attacks");
|
|
676
|
+
}
|
|
677
|
+
if ((byCategory.authentication || 0) > 0) {
|
|
678
|
+
recommendations.push("Strengthen authentication mechanisms and implement proper session management");
|
|
679
|
+
}
|
|
680
|
+
if ((byCategory.cryptography || 0) > 0) {
|
|
681
|
+
recommendations.push("Replace weak cryptographic algorithms with modern, secure alternatives");
|
|
682
|
+
}
|
|
683
|
+
if ((byCategory.configuration || 0) > 0) {
|
|
684
|
+
recommendations.push("Review and harden security configurations, disable debug modes in production");
|
|
685
|
+
}
|
|
686
|
+
if ((byCategory["data-protection"] || 0) > 0) {
|
|
687
|
+
recommendations.push("Implement proper data protection measures and avoid logging sensitive information");
|
|
688
|
+
}
|
|
689
|
+
// OWASP compliance recommendations
|
|
690
|
+
const failedOwasp = Object.entries(compliance.owaspTop10)
|
|
691
|
+
.filter(([_, compliant]) => !compliant)
|
|
692
|
+
.map(([category]) => category);
|
|
693
|
+
if (failedOwasp.length > 0) {
|
|
694
|
+
recommendations.push(`Address OWASP Top 10 compliance issues: ${failedOwasp.join(", ")}`);
|
|
695
|
+
}
|
|
696
|
+
// General recommendations
|
|
697
|
+
if (vulnerabilities.length === 0) {
|
|
698
|
+
recommendations.push("Maintain regular security audits and stay updated with security best practices");
|
|
699
|
+
}
|
|
700
|
+
else {
|
|
701
|
+
recommendations.push("Implement automated security testing in CI/CD pipeline");
|
|
702
|
+
recommendations.push("Conduct regular security training for development team");
|
|
703
|
+
}
|
|
704
|
+
return recommendations;
|
|
705
|
+
}
|
|
706
|
+
severityLevel(severity) {
|
|
707
|
+
const levels = { info: 0, low: 1, medium: 2, high: 3, critical: 4 };
|
|
708
|
+
return levels[severity] || 0;
|
|
709
|
+
}
|
|
710
|
+
mapVulnTypeToCategory(type) {
|
|
711
|
+
const mapping = {
|
|
712
|
+
injection: ["injection"],
|
|
713
|
+
authentication: ["authentication"],
|
|
714
|
+
authorization: ["authorization"],
|
|
715
|
+
cryptography: ["cryptography"],
|
|
716
|
+
xss: ["injection", "data-protection"],
|
|
717
|
+
csrf: ["authentication", "authorization"],
|
|
718
|
+
secrets: ["data-protection", "configuration"],
|
|
719
|
+
configuration: ["configuration"],
|
|
720
|
+
};
|
|
721
|
+
return mapping[type] || [];
|
|
722
|
+
}
|
|
723
|
+
getSeverityIcon(severity) {
|
|
724
|
+
const icons = {
|
|
725
|
+
critical: "đ¨",
|
|
726
|
+
high: "đ´",
|
|
727
|
+
medium: "đĄ",
|
|
728
|
+
low: "đĸ",
|
|
729
|
+
info: "âšī¸",
|
|
730
|
+
};
|
|
731
|
+
return icons[severity] || "â";
|
|
732
|
+
}
|
|
733
|
+
generateMarkdownReport(report, includeRemediation) {
|
|
734
|
+
let output = `# Security Audit Report\n\n`;
|
|
735
|
+
output += `## Executive Summary\n\n`;
|
|
736
|
+
output += `- **Files Analyzed**: ${report.summary.totalFiles}\n`;
|
|
737
|
+
output += `- **Vulnerabilities Found**: ${report.summary.vulnerabilitiesFound}\n`;
|
|
738
|
+
output += `- **Risk Score**: ${report.summary.overallRiskScore}/100\n`;
|
|
739
|
+
output += `- **Compliance Score**: ${report.summary.complianceScore}/100\n\n`;
|
|
740
|
+
output += `## Vulnerability Breakdown\n\n`;
|
|
741
|
+
output += `| Severity | Count |\n`;
|
|
742
|
+
output += `|----------|-------|\n`;
|
|
743
|
+
output += `| Critical | ${report.summary.criticalCount} |\n`;
|
|
744
|
+
output += `| High | ${report.summary.highCount} |\n`;
|
|
745
|
+
output += `| Medium | ${report.summary.mediumCount} |\n`;
|
|
746
|
+
output += `| Low | ${report.summary.lowCount} |\n\n`;
|
|
747
|
+
if (includeRemediation) {
|
|
748
|
+
output += `## Key Recommendations\n\n`;
|
|
749
|
+
report.recommendations.forEach((rec, i) => {
|
|
750
|
+
output += `${i + 1}. ${rec}\n`;
|
|
751
|
+
});
|
|
752
|
+
output += `\n`;
|
|
753
|
+
}
|
|
754
|
+
output += `## Detailed Findings\n\n`;
|
|
755
|
+
report.vulnerabilities.forEach((vuln) => {
|
|
756
|
+
output += `### ${this.getSeverityIcon(vuln.severity)} ${vuln.title}\n\n`;
|
|
757
|
+
output += `- **File**: ${vuln.file}:${vuln.line}\n`;
|
|
758
|
+
output += `- **Category**: ${vuln.category}\n`;
|
|
759
|
+
output += `- **Severity**: ${vuln.severity}\n`;
|
|
760
|
+
output += `- **Description**: ${vuln.description}\n`;
|
|
761
|
+
output += `- **Impact**: ${vuln.impact}\n`;
|
|
762
|
+
output += `- **Recommendation**: ${vuln.recommendation}\n\n`;
|
|
763
|
+
if (vuln.cwe)
|
|
764
|
+
output += `- **CWE**: ${vuln.cwe}\n`;
|
|
765
|
+
if (vuln.owasp)
|
|
766
|
+
output += `- **OWASP**: ${vuln.owasp}\n`;
|
|
767
|
+
output += `\n---\n\n`;
|
|
768
|
+
});
|
|
769
|
+
return output;
|
|
770
|
+
}
|
|
771
|
+
generateHTMLReport(report, includeRemediation) {
|
|
772
|
+
// Simplified HTML generation - could be expanded
|
|
773
|
+
return `<html><body><h1>Security Audit Report</h1><p>Risk Score: ${report.summary.overallRiskScore}/100</p></body></html>`;
|
|
774
|
+
}
|
|
775
|
+
/**
|
|
776
|
+
* Governance-oriented proposal analysis from a security perspective.
|
|
777
|
+
*/
|
|
778
|
+
async analyzeProposal(args) {
|
|
779
|
+
const { proposalTitle = "", proposalDescription = "", evidence = [], proposalType = "" } = args;
|
|
780
|
+
const text = `${proposalTitle} ${proposalDescription} ${evidence.join(" ")}`.toLowerCase();
|
|
781
|
+
let decision = "approve";
|
|
782
|
+
let confidence = 0.82;
|
|
783
|
+
let reasoning = "The proposal does not appear to introduce significant new security surface area.";
|
|
784
|
+
if (text.includes("aml") || text.includes("kyc") || text.includes("anti-money")) {
|
|
785
|
+
decision = "approve";
|
|
786
|
+
confidence = 0.91;
|
|
787
|
+
reasoning = "AML/KYC compliance measures are critical for regulatory security posture. Automated transaction monitoring closes vulnerability gaps in financial crime detection and demonstrates due diligence for regulatory inspections.";
|
|
788
|
+
}
|
|
789
|
+
else if (text.includes("psd2") || text.includes("strong customer authentication") || text.includes("payment initiation")) {
|
|
790
|
+
decision = "approve";
|
|
791
|
+
confidence = 0.93;
|
|
792
|
+
reasoning = "PSD2 SCA implementation is a mandatory security control for payment services. Multi-factor authentication with dynamic linking reduces unauthorized payment risk and satisfies EBA regulatory technical standards.";
|
|
793
|
+
}
|
|
794
|
+
else if (text.includes("gdpr") || text.includes("right to erasure") || text.includes("data protection")) {
|
|
795
|
+
decision = "approve";
|
|
796
|
+
confidence = 0.94;
|
|
797
|
+
reasoning = "GDPR compliance controls are foundational to data security posture. Automated data erasure pipelines reduce data breach exposure windows and satisfy supervisory authority inspection requirements.";
|
|
798
|
+
}
|
|
799
|
+
else if (text.includes("beneficial ownership") || text.includes("ubo") || text.includes("pep screening")) {
|
|
800
|
+
decision = "approve";
|
|
801
|
+
confidence = 0.87;
|
|
802
|
+
reasoning = "Beneficial ownership transparency and PEP screening are critical AML controls. Verifying ultimate beneficial owners reduces money laundering risk through corporate account structuring.";
|
|
803
|
+
}
|
|
804
|
+
else if (text.includes("extract method")) {
|
|
805
|
+
decision = "approve";
|
|
806
|
+
confidence = 0.88;
|
|
807
|
+
reasoning = "Extract Method refactoring improves security posture by reducing attack surface in large monolithic files and enabling better isolation of sensitive logic.";
|
|
808
|
+
}
|
|
809
|
+
else if (text.includes("test coverage")) {
|
|
810
|
+
decision = "approve";
|
|
811
|
+
confidence = 0.91;
|
|
812
|
+
reasoning = "Expanding test coverage is one of the highest-ROI security controls available â more tests surface regressions and boundary condition vulnerabilities earlier.";
|
|
813
|
+
}
|
|
814
|
+
else if (text.includes("increase timeout") && text.includes("flaky")) {
|
|
815
|
+
decision = "reject";
|
|
816
|
+
confidence = 0.75;
|
|
817
|
+
reasoning = "Repeatedly increasing timeouts to hide flaky tests can mask timing attacks, race conditions, and resource exhaustion vulnerabilities. Root cause remediation is required.";
|
|
818
|
+
}
|
|
819
|
+
if (proposalType === "fix" && text.includes("timeout")) {
|
|
820
|
+
confidence = Math.max(0.65, confidence - 0.10);
|
|
821
|
+
}
|
|
822
|
+
return {
|
|
823
|
+
content: [
|
|
824
|
+
{
|
|
825
|
+
type: "text",
|
|
826
|
+
text: `DECISION: ${decision}\nCONFIDENCE: ${confidence.toFixed(2)}\nREASONING: ${reasoning}`,
|
|
827
|
+
},
|
|
828
|
+
],
|
|
829
|
+
};
|
|
830
|
+
}
|
|
831
|
+
async run() {
|
|
832
|
+
const transport = new StdioServerTransport();
|
|
833
|
+
await this.server.connect(transport);
|
|
834
|
+
// Use centralized shutdown handler
|
|
835
|
+
createGracefulShutdown({
|
|
836
|
+
serverName: "security-audit.server",
|
|
837
|
+
server: this.server,
|
|
838
|
+
});
|
|
839
|
+
}
|
|
840
|
+
}
|
|
841
|
+
// Run the server if this file is executed directly
|
|
842
|
+
if (import.meta.url === `file://${process.argv[1]}`) {
|
|
843
|
+
const server = new StringRaySecurityAuditServer();
|
|
844
|
+
server.run().catch(() => { });
|
|
845
|
+
}
|
|
846
|
+
export { StringRaySecurityAuditServer };
|