claude-flow-novice 2.2.4 → 2.2.5
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/package.json +9 -8
- package/scripts/.claude-flow/metrics/agent-metrics.json +1 -0
- package/scripts/.claude-flow/metrics/performance.json +9 -0
- package/scripts/.claude-flow/metrics/task-metrics.json +10 -0
- package/scripts/CLEANUP_OPTIMIZATION_REPORT.json +312 -0
- package/scripts/CLEANUP_PERFORMANCE_OPTIMIZATION.md +387 -0
- package/scripts/CLEANUP_QUICK_START.md +268 -0
- package/scripts/CLEANUP_TEST_RESULTS.md +205 -0
- package/scripts/README.md +339 -0
- package/scripts/ace-query.sh +384 -0
- package/scripts/agent-token-analysis.js +430 -0
- package/scripts/auto-setup.js +332 -0
- package/scripts/build/README.md +167 -0
- package/scripts/build/build-config.js +27 -0
- package/scripts/build/build-prompt-copier.sh +30 -0
- package/scripts/build/performance-monitor.js +869 -0
- package/scripts/build/prepare-publish.js +150 -0
- package/scripts/build/typescript-fixer.js +621 -0
- package/scripts/build/unified-builder.sh +428 -0
- package/scripts/build/update-bin-version.js +32 -0
- package/scripts/build/validate-agents.js +238 -0
- package/scripts/build-index.js +43 -0
- package/scripts/build-orchestrator.js +320 -0
- package/scripts/check-routing-stats.cjs +122 -0
- package/scripts/ci-validation.js +375 -0
- package/scripts/cleanup-blocking-coordination.sh +420 -0
- package/scripts/cleanup-idle-sessions.sh +59 -0
- package/scripts/collect-build-metrics.js +65 -0
- package/scripts/demo/README.md +79 -0
- package/scripts/demo/autoscaling-demo-simplified.js +963 -0
- package/scripts/demo/comprehensive-dashboard-test.js +693 -0
- package/scripts/demo/confidence-log.js +87 -0
- package/scripts/demo/confidence-report.js +82 -0
- package/scripts/demo/demo-multi-swarm-coordination.js +325 -0
- package/scripts/demo/demo-production-deployment.js +399 -0
- package/scripts/demo/demo-visualization-system.js +149 -0
- package/scripts/demo/performance-analysis.cjs +71 -0
- package/scripts/demo/performance-analysis.js +71 -0
- package/scripts/demo/test-autoscaling-demo.js +314 -0
- package/scripts/dependency-optimizer.js +349 -0
- package/scripts/dependency-security-assessment.js +331 -0
- package/scripts/deploy-sdk.sh +176 -0
- package/scripts/deployment-readiness-report.json +179 -0
- package/scripts/dev/README.md +264 -0
- package/scripts/dev/claude-flow-wrapper.sh +35 -0
- package/scripts/dev/claude-monitor.py +419 -0
- package/scripts/dev/claude-sparc.sh +562 -0
- package/scripts/dev/claude-wrapper.sh +17 -0
- package/scripts/dev/demo-phase3-compliance.js +172 -0
- package/scripts/dev/demo-task-system.ts +224 -0
- package/scripts/dev/deployment-validator.js +315 -0
- package/scripts/dev/spawn-claude-terminal.sh +32 -0
- package/scripts/dev/start-portal.sh +506 -0
- package/scripts/dev/start-web-ui.js +15 -0
- package/scripts/dev/stop-portal.sh +311 -0
- package/scripts/dev/validate-examples.ts +288 -0
- package/scripts/dev/validate-phase2.cjs +451 -0
- package/scripts/dev/validate-phase2.js +785 -0
- package/scripts/dev/validate-phase3.cjs +208 -0
- package/scripts/dev/validate-security-remediation.js +1 -0
- package/scripts/ecosystem.config.cjs +90 -0
- package/scripts/fix-js-extensions.js +167 -0
- package/scripts/generate-basic-types.js +73 -0
- package/scripts/generate-changelog.js +318 -0
- package/scripts/git-hooks/pre-commit.sh +143 -0
- package/scripts/health-checks.js +634 -0
- package/scripts/hook-wrapper.sh +54 -0
- package/scripts/install/README.md +375 -0
- package/scripts/install/REDIS_SETUP_VALIDATION.json +245 -0
- package/scripts/install/check-prerequisites.js +303 -0
- package/scripts/install/config-wizard.js +606 -0
- package/scripts/install/dependency-checker.js +385 -0
- package/scripts/install/health-check.js +765 -0
- package/scripts/install/install.js +256 -0
- package/scripts/install/installation-benchmark.js +461 -0
- package/scripts/install/quick-install.js +720 -0
- package/scripts/install/quick-start-wizard.js +295 -0
- package/scripts/install/redis-cli.js +289 -0
- package/scripts/install/redis-install-guides.md +407 -0
- package/scripts/install/redis-setup.js +559 -0
- package/scripts/install/redis-test.js +278 -0
- package/scripts/install/service-manager.js +672 -0
- package/scripts/install/setup.js +832 -0
- package/scripts/install/uninstall.js +526 -0
- package/scripts/install/update.js +461 -0
- package/scripts/install-pre-commit-hook.sh +127 -0
- package/scripts/legacy/README.md +272 -0
- package/scripts/legacy/batch-fix-ts.sh +54 -0
- package/scripts/legacy/build-migration.sh +105 -0
- package/scripts/legacy/build-monitor.js +209 -0
- package/scripts/legacy/build-with-filter.sh +84 -0
- package/scripts/legacy/build-workaround.sh +71 -0
- package/scripts/legacy/fix-ts-advanced.js +358 -0
- package/scripts/legacy/fix-ts-final.sh +50 -0
- package/scripts/legacy/fix-ts-targeted.sh +49 -0
- package/scripts/legacy/fix-typescript-errors.js +305 -0
- package/scripts/legacy/force-build.sh +63 -0
- package/scripts/legacy/optimize-performance.js +400 -0
- package/scripts/legacy/performance-monitor.js +263 -0
- package/scripts/legacy/performance-monitoring.js +532 -0
- package/scripts/legacy/performance-test-runner.js +645 -0
- package/scripts/legacy/quick-fix-ts.js +281 -0
- package/scripts/legacy/safe-build.sh +63 -0
- package/scripts/memory-monitor-coordinator.js +322 -0
- package/scripts/migrate-to-sdk.sh +520 -0
- package/scripts/migration/QUICK-START.md +189 -0
- package/scripts/migration/QUICK-START.md.backup-1760135091363 +189 -0
- package/scripts/migration/README.md +464 -0
- package/scripts/migration/TASK-1.3.2-COMPLETION-REPORT.md +500 -0
- package/scripts/migration/TASK-1.3.2-COMPLETION-REPORT.md.backup-1760135091348 +500 -0
- package/scripts/migration/UPDATE-PATHS-README.md +464 -0
- package/scripts/migration/UPDATE-PATHS-README.md.backup-1760135091337 +464 -0
- package/scripts/migration/example-patterns.json +19 -0
- package/scripts/migration/install-arm64.js +78 -0
- package/scripts/migration/install.js +83 -0
- package/scripts/migration/migrate-hooks.js +173 -0
- package/scripts/migration/migration-examples.ts +318 -0
- package/scripts/migration/reorganize-workspace.js +504 -0
- package/scripts/migration/test-update-paths.js +359 -0
- package/scripts/migration/update-paths.js +664 -0
- package/scripts/migration/validate-migration.js +647 -0
- package/scripts/monitor-loop.sh +65 -0
- package/scripts/monitor-memory.sh +47 -0
- package/scripts/monitor-migration.js +339 -0
- package/scripts/monitor.py +43 -0
- package/scripts/monitoring/README.md +178 -0
- package/scripts/monitoring/alert-monitor.sh +220 -0
- package/scripts/monitoring/analyze-resources.sh +199 -0
- package/scripts/monitoring/dashboards/rate-limiting-dashboard.json +211 -0
- package/scripts/monitoring/dynamic-monitor.sh +85 -0
- package/scripts/monitoring/launch-stability-test.sh +184 -0
- package/scripts/monitoring/monitor-test.sh +93 -0
- package/scripts/monitoring/pre-test-validation.sh +208 -0
- package/scripts/monitoring/quick-test-alerting.sh +118 -0
- package/scripts/monitoring/quick-test-rate-limiting.sh +206 -0
- package/scripts/monitoring/rate-limiting-monitor.sh +380 -0
- package/scripts/monitoring/resource-monitor.sh +126 -0
- package/scripts/monitoring/stability-monitor.js +429 -0
- package/scripts/monitoring/test-monitor-quick.sh +54 -0
- package/scripts/monitoring/view-alerts.sh +307 -0
- package/scripts/npm-metrics-collector.js +482 -0
- package/scripts/npm-package-validation.cjs +299 -0
- package/scripts/optimization/build-optimizer.js +438 -0
- package/scripts/optimization/config-validator.js +761 -0
- package/scripts/optimization/test-optimization.js +432 -0
- package/scripts/optimization/unified-activation.js +839 -0
- package/scripts/optimize-package-swarm.js +54 -0
- package/scripts/performance/ACTIVATION_COMMANDS.md +292 -0
- package/scripts/performance/sqlite-enhanced-activation.sh +583 -0
- package/scripts/performance/test-enhanced-backend.sh +504 -0
- package/scripts/performance-monitor.js +644 -0
- package/scripts/performance-test-runner.js +698 -0
- package/scripts/post-deployment-monitoring.js +350 -0
- package/scripts/post-edit-pipeline.js +2091 -0
- package/scripts/post-install-claude-md.js +78 -0
- package/scripts/postinstall.js +79 -0
- package/scripts/pre-publish-validation.cjs +212 -0
- package/scripts/pre-publish-validation.js +429 -0
- package/scripts/redis-lua/cleanup-blocking-coordination.lua +198 -0
- package/scripts/release-announcement.js +425 -0
- package/scripts/release-notification.js +248 -0
- package/scripts/release-rollback.js +376 -0
- package/scripts/release-validation.js +460 -0
- package/scripts/rollback-sdk.sh +66 -0
- package/scripts/run-production-validation.ts +590 -0
- package/scripts/run-stability-validation.sh +687 -0
- package/scripts/security/README.md +339 -0
- package/scripts/security/deployment-validation.cjs +279 -0
- package/scripts/security/envelope-encryption-confidence-report.cjs +422 -0
- package/scripts/security/install-git-hooks.sh +132 -0
- package/scripts/security/install-git-secrets.sh +295 -0
- package/scripts/security/rotate-api-keys.js +469 -0
- package/scripts/security/ruv-swarm-safe.js +74 -0
- package/scripts/security/security-audit.cjs +538 -0
- package/scripts/security/setup-redis-auth.sh +397 -0
- package/scripts/security/validate-envelope-encryption.cjs +340 -0
- package/scripts/security-scan.js +492 -0
- package/scripts/src/web/frontend/.claude-flow/metrics/agent-metrics.json +1 -0
- package/scripts/src/web/frontend/.claude-flow/metrics/performance.json +9 -0
- package/scripts/src/web/frontend/.claude-flow/metrics/task-metrics.json +10 -0
- package/scripts/switch-api.sh +158 -0
- package/scripts/sync-agents.js +290 -0
- package/scripts/test/50-agent-test.js +625 -0
- package/scripts/test/NEW_STABILITY_TEST_GUIDE.md +407 -0
- package/scripts/test/README.md +236 -0
- package/scripts/test/STABILITY_TEST_EXAMPLE.md +347 -0
- package/scripts/test/STABILITY_TEST_README.md +480 -0
- package/scripts/test/agent-worker.js +309 -0
- package/scripts/test/ai-coordination-test.js +650 -0
- package/scripts/test/ai-mesh-coordination-test.js +416 -0
- package/scripts/test/check-links.ts +274 -0
- package/scripts/test/check-performance-regression.ts +168 -0
- package/scripts/test/cli-agent-coordination-test.js +313 -0
- package/scripts/test/coordinator-multilingual-test.js +396 -0
- package/scripts/test/coordinator-transparency-demo.js +585 -0
- package/scripts/test/coverage-report.ts +692 -0
- package/scripts/test/generate-swarm-tests.js +633 -0
- package/scripts/test/integration-test-validation.cjs +253 -0
- package/scripts/test/load-test-swarm.js +576 -0
- package/scripts/test/mesh-coordination-zero-overlap-test.js +740 -0
- package/scripts/test/multilingual-hello-world-test.js +390 -0
- package/scripts/test/quick-multilingual-demo.js +464 -0
- package/scripts/test/real-agent-test.js +312 -0
- package/scripts/test/run-phase3-compliance-tests.js +427 -0
- package/scripts/test/run-stability-test-examples.sh +292 -0
- package/scripts/test/stability-results/stability-metrics.jsonl +83 -0
- package/scripts/test/stability-results/stability-test-report.json +128 -0
- package/scripts/test/stability-results/stability-test.log +1827 -0
- package/scripts/test/stability-test-50-agents.js +734 -0
- package/scripts/test/test-batch-tasks.ts +29 -0
- package/scripts/test/test-byzantine-resolution.js +246 -0
- package/scripts/test/test-claude-spawn-options.sh +63 -0
- package/scripts/test/test-cli-wizard.js +331 -0
- package/scripts/test/test-comprehensive.js +401 -0
- package/scripts/test/test-coordination-features.ts +238 -0
- package/scripts/test/test-fallback-systems.js +276 -0
- package/scripts/test/test-init-command.ts +302 -0
- package/scripts/test/test-mcp.ts +251 -0
- package/scripts/test/test-runner.ts +568 -0
- package/scripts/test/test-swarm-integration.sh +92 -0
- package/scripts/test/test-swarm.ts +142 -0
- package/scripts/test/validation-summary.ts +408 -0
- package/scripts/test-cleanup-performance.sh +416 -0
- package/scripts/test-dashboard-auth.cjs +203 -0
- package/scripts/test-docker-deployment.sh +207 -0
- package/scripts/test-npm-package.cjs +167 -0
- package/scripts/test-provider-routing.cjs +226 -0
- package/scripts/test-routing-telemetry.cjs +147 -0
- package/scripts/test-runner.cjs +154 -0
- package/scripts/test-zai-10k.cjs +81 -0
- package/scripts/test-zai-api.cjs +191 -0
- package/scripts/test-zai-diagnostic.cjs +151 -0
- package/scripts/test-zai-final.cjs +128 -0
- package/scripts/test-zai-with-env.cjs +85 -0
- package/scripts/utils/README.md +261 -0
- package/scripts/utils/clean-build-artifacts.sh +94 -0
- package/scripts/utils/cleanup-root.sh +69 -0
- package/scripts/utils/fix-cliffy-imports.js +307 -0
- package/scripts/utils/fix-duplicate-imports.js +114 -0
- package/scripts/utils/fix-error-handling.cjs +70 -0
- package/scripts/utils/fix-import-paths.js +104 -0
- package/scripts/utils/fix-imports.js +116 -0
- package/scripts/utils/fix-shebang.js +78 -0
- package/scripts/utils/fix-test-modules.js +27 -0
- package/scripts/utils/fix-timezone-issue-246.js +200 -0
- package/scripts/utils/fix-ts-comprehensive.py +182 -0
- package/scripts/utils/fix-ts-targeted-batch.js +250 -0
- package/scripts/utils/remove-benchmark-conflicts.sh +140 -0
- package/scripts/utils/simple-test-fixer.js +190 -0
- package/scripts/utils/validate-metrics-structure.cjs +144 -0
- package/scripts/validate-agent-hooks.js +506 -0
- package/scripts/validate-changelog.js +241 -0
- package/scripts/validate-coordination-cli.js +69 -0
- package/scripts/validate-coordination-toggle-integration.cjs +501 -0
- package/scripts/validate-docker-infrastructure.sh +502 -0
- package/scripts/validate-entry-points.js +300 -0
- package/scripts/validate-stage3-performance.ts +377 -0
- package/scripts/validate-template-bundling.js +180 -0
- package/scripts/validation/README.md +33 -0
- package/scripts/validation/acl-security-validation.cjs +214 -0
- package/scripts/validation/acl-security-validation.js +402 -0
- package/scripts/validation/byzantine-verification.js +407 -0
- package/scripts/validation/final-phase-2-consensus.cjs +219 -0
- package/scripts/validation/final-security-validation.js +791 -0
- package/scripts/validation/final-wasm-validation.cjs +840 -0
- package/scripts/validation/integration-test-analysis.js +105 -0
- package/scripts/validation/phase-0-comprehensive-validation.js +474 -0
- package/scripts/validation/phase-0-consensus-report.js +139 -0
- package/scripts/validation/phase-0-final-report.js +112 -0
- package/scripts/validation/phase-0-redis-consensus-report.js +129 -0
- package/scripts/validation/phase-0-validation-improved.js +490 -0
- package/scripts/validation/phase-0-validation-test.js +65 -0
- package/scripts/validation/phase-1-consensus-report.cjs +342 -0
- package/scripts/validation/phase-1-consensus-validation.cjs +551 -0
- package/scripts/validation/phase-1-consensus-validation.js +551 -0
- package/scripts/validation/phase-2-consensus-report.cjs +186 -0
- package/scripts/validation/phase-2-validation.cjs +171 -0
- package/scripts/validation/phase-2-validation.js +171 -0
- package/scripts/validation/phase-4-consensus-report.js +181 -0
- package/scripts/validation/phase-4-final-validation.js +351 -0
- package/scripts/validation/phase-5-consensus-report.cjs +113 -0
- package/scripts/validation/phase-5-consensus-report.js +113 -0
- package/scripts/validation/security-analysis.js +49 -0
- package/scripts/validation/security-validation.js +492 -0
- package/scripts/validation/simple-security-validation.js +464 -0
- package/scripts/verify-installation.js +112 -0
- package/scripts/verify-mcp-server.js +86 -0
- package/scripts/verify-sdk-phase1.cjs +293 -0
|
@@ -0,0 +1,339 @@
|
|
|
1
|
+
# Security Scripts
|
|
2
|
+
|
|
3
|
+
This directory contains security-related scripts for the Claude Flow project, including security validation, audit tools, and safety mechanisms.
|
|
4
|
+
|
|
5
|
+
## Scripts
|
|
6
|
+
|
|
7
|
+
### Security Validation
|
|
8
|
+
|
|
9
|
+
#### `ruv-swarm-safe.js` - Swarm Safety Validator
|
|
10
|
+
Validates swarm operations for security compliance and safe execution patterns.
|
|
11
|
+
|
|
12
|
+
```bash
|
|
13
|
+
# Basic security validation
|
|
14
|
+
node scripts/security/ruv-swarm-safe.js
|
|
15
|
+
|
|
16
|
+
# Comprehensive security audit
|
|
17
|
+
node scripts/security/ruv-swarm-safe.js --audit
|
|
18
|
+
|
|
19
|
+
# Check specific swarm configuration
|
|
20
|
+
node scripts/security/ruv-swarm-safe.js --config path/to/swarm-config.json
|
|
21
|
+
```
|
|
22
|
+
|
|
23
|
+
**Features:**
|
|
24
|
+
- Validates swarm configuration security
|
|
25
|
+
- Checks for unsafe agent spawn patterns
|
|
26
|
+
- Audits coordination protocol security
|
|
27
|
+
- Verifies authentication mechanisms
|
|
28
|
+
- Validates input sanitization
|
|
29
|
+
|
|
30
|
+
## Security Categories
|
|
31
|
+
|
|
32
|
+
### 1. Swarm Security
|
|
33
|
+
Scripts that ensure secure swarm operations and agent coordination.
|
|
34
|
+
|
|
35
|
+
**Security Checks:**
|
|
36
|
+
- Agent authentication validation
|
|
37
|
+
- Secure communication protocols
|
|
38
|
+
- Resource access controls
|
|
39
|
+
- Execution boundary validation
|
|
40
|
+
- Inter-agent communication security
|
|
41
|
+
|
|
42
|
+
### 2. Input Validation
|
|
43
|
+
Scripts that validate and sanitize inputs across the system.
|
|
44
|
+
|
|
45
|
+
**Validation Areas:**
|
|
46
|
+
- User input sanitization
|
|
47
|
+
- Configuration file validation
|
|
48
|
+
- API parameter validation
|
|
49
|
+
- File path sanitization
|
|
50
|
+
- Command injection prevention
|
|
51
|
+
|
|
52
|
+
### 3. Access Control
|
|
53
|
+
Scripts that manage and validate access controls.
|
|
54
|
+
|
|
55
|
+
**Access Control Features:**
|
|
56
|
+
- Permission validation
|
|
57
|
+
- Role-based access control
|
|
58
|
+
- Resource access auditing
|
|
59
|
+
- Privilege escalation detection
|
|
60
|
+
- Unauthorized access prevention
|
|
61
|
+
|
|
62
|
+
### 4. Cryptographic Security
|
|
63
|
+
Scripts that handle cryptographic operations and validation.
|
|
64
|
+
|
|
65
|
+
**Cryptographic Features:**
|
|
66
|
+
- Key management validation
|
|
67
|
+
- Encryption/decryption verification
|
|
68
|
+
- Digital signature validation
|
|
69
|
+
- Hash function verification
|
|
70
|
+
- Secure random generation
|
|
71
|
+
|
|
72
|
+
## Usage Patterns
|
|
73
|
+
|
|
74
|
+
### Security Audit Workflow
|
|
75
|
+
```bash
|
|
76
|
+
# 1. Run basic security validation
|
|
77
|
+
node scripts/security/ruv-swarm-safe.js
|
|
78
|
+
|
|
79
|
+
# 2. Comprehensive security audit
|
|
80
|
+
node scripts/security/ruv-swarm-safe.js --audit --verbose
|
|
81
|
+
|
|
82
|
+
# 3. Generate security report
|
|
83
|
+
node scripts/security/ruv-swarm-safe.js --report --output security-audit.json
|
|
84
|
+
|
|
85
|
+
# 4. Validate specific components
|
|
86
|
+
node scripts/security/ruv-swarm-safe.js --component swarm-coordination
|
|
87
|
+
```
|
|
88
|
+
|
|
89
|
+
### Continuous Security Monitoring
|
|
90
|
+
```bash
|
|
91
|
+
# Monitor swarm operations
|
|
92
|
+
node scripts/security/ruv-swarm-safe.js --monitor --interval 30s
|
|
93
|
+
|
|
94
|
+
# Real-time security alerts
|
|
95
|
+
node scripts/security/ruv-swarm-safe.js --alerts --webhook https://alerts.example.com
|
|
96
|
+
```
|
|
97
|
+
|
|
98
|
+
### Pre-deployment Security Checks
|
|
99
|
+
```bash
|
|
100
|
+
# Validate deployment security
|
|
101
|
+
node scripts/security/ruv-swarm-safe.js --deployment --environment production
|
|
102
|
+
|
|
103
|
+
# Check configuration security
|
|
104
|
+
node scripts/security/ruv-swarm-safe.js --config-audit --strict
|
|
105
|
+
```
|
|
106
|
+
|
|
107
|
+
## Security Standards
|
|
108
|
+
|
|
109
|
+
### Compliance Requirements
|
|
110
|
+
- **OWASP Top 10** - Protection against common vulnerabilities
|
|
111
|
+
- **Zero Trust** - Never trust, always verify principle
|
|
112
|
+
- **Least Privilege** - Minimal access rights for components
|
|
113
|
+
- **Defense in Depth** - Multiple layers of security controls
|
|
114
|
+
- **Secure by Default** - Default configurations prioritize security
|
|
115
|
+
|
|
116
|
+
### Security Validation Criteria
|
|
117
|
+
|
|
118
|
+
#### 1. Authentication & Authorization
|
|
119
|
+
- Multi-factor authentication support
|
|
120
|
+
- Role-based access control (RBAC)
|
|
121
|
+
- Session management security
|
|
122
|
+
- Token validation and expiration
|
|
123
|
+
- Privilege escalation prevention
|
|
124
|
+
|
|
125
|
+
#### 2. Input Validation & Sanitization
|
|
126
|
+
- SQL injection prevention
|
|
127
|
+
- Cross-site scripting (XSS) protection
|
|
128
|
+
- Command injection prevention
|
|
129
|
+
- Path traversal protection
|
|
130
|
+
- Input length and format validation
|
|
131
|
+
|
|
132
|
+
#### 3. Data Protection
|
|
133
|
+
- Data encryption at rest and in transit
|
|
134
|
+
- Secure key management
|
|
135
|
+
- Personal data protection (GDPR compliance)
|
|
136
|
+
- Data integrity verification
|
|
137
|
+
- Secure data disposal
|
|
138
|
+
|
|
139
|
+
#### 4. Communication Security
|
|
140
|
+
- TLS/SSL encryption enforcement
|
|
141
|
+
- Certificate validation
|
|
142
|
+
- Secure protocol selection
|
|
143
|
+
- Message integrity verification
|
|
144
|
+
- Replay attack prevention
|
|
145
|
+
|
|
146
|
+
#### 5. Error Handling & Logging
|
|
147
|
+
- Secure error message handling
|
|
148
|
+
- Comprehensive security logging
|
|
149
|
+
- Log integrity protection
|
|
150
|
+
- Sensitive data masking
|
|
151
|
+
- Audit trail maintenance
|
|
152
|
+
|
|
153
|
+
## Integration with CI/CD
|
|
154
|
+
|
|
155
|
+
Security scripts integrate with the CI/CD pipeline:
|
|
156
|
+
|
|
157
|
+
```yaml
|
|
158
|
+
# .github/workflows/security.yml
|
|
159
|
+
name: Security Validation
|
|
160
|
+
on: [push, pull_request]
|
|
161
|
+
|
|
162
|
+
jobs:
|
|
163
|
+
security-audit:
|
|
164
|
+
runs-on: ubuntu-latest
|
|
165
|
+
steps:
|
|
166
|
+
- uses: actions/checkout@v3
|
|
167
|
+
- name: Security Validation
|
|
168
|
+
run: |
|
|
169
|
+
node scripts/security/ruv-swarm-safe.js --audit
|
|
170
|
+
node scripts/security/ruv-swarm-safe.js --report --format junit
|
|
171
|
+
```
|
|
172
|
+
|
|
173
|
+
### Package.json Integration
|
|
174
|
+
```json
|
|
175
|
+
{
|
|
176
|
+
"scripts": {
|
|
177
|
+
"security:audit": "node scripts/security/ruv-swarm-safe.js --audit",
|
|
178
|
+
"security:validate": "node scripts/security/ruv-swarm-safe.js",
|
|
179
|
+
"security:report": "node scripts/security/ruv-swarm-safe.js --report",
|
|
180
|
+
"presecurity": "npm audit",
|
|
181
|
+
"postsecurity": "npm run security:validate"
|
|
182
|
+
}
|
|
183
|
+
}
|
|
184
|
+
```
|
|
185
|
+
|
|
186
|
+
## Security Configuration
|
|
187
|
+
|
|
188
|
+
### Default Security Settings
|
|
189
|
+
```javascript
|
|
190
|
+
// Security configuration example
|
|
191
|
+
const securityConfig = {
|
|
192
|
+
swarm: {
|
|
193
|
+
maxAgents: 50,
|
|
194
|
+
authenticationRequired: true,
|
|
195
|
+
encryptCommunication: true,
|
|
196
|
+
validateAgentCode: true,
|
|
197
|
+
resourceLimits: {
|
|
198
|
+
memory: "512MB",
|
|
199
|
+
cpu: "50%",
|
|
200
|
+
diskSpace: "1GB"
|
|
201
|
+
}
|
|
202
|
+
},
|
|
203
|
+
validation: {
|
|
204
|
+
strictMode: true,
|
|
205
|
+
validateInputs: true,
|
|
206
|
+
sanitizeOutputs: true,
|
|
207
|
+
auditTrail: true
|
|
208
|
+
}
|
|
209
|
+
};
|
|
210
|
+
```
|
|
211
|
+
|
|
212
|
+
### Environment-Specific Security
|
|
213
|
+
```bash
|
|
214
|
+
# Development environment
|
|
215
|
+
export CLAUDE_FLOW_SECURITY_LEVEL=development
|
|
216
|
+
export CLAUDE_FLOW_AUDIT_ENABLED=false
|
|
217
|
+
|
|
218
|
+
# Staging environment
|
|
219
|
+
export CLAUDE_FLOW_SECURITY_LEVEL=staging
|
|
220
|
+
export CLAUDE_FLOW_AUDIT_ENABLED=true
|
|
221
|
+
|
|
222
|
+
# Production environment
|
|
223
|
+
export CLAUDE_FLOW_SECURITY_LEVEL=production
|
|
224
|
+
export CLAUDE_FLOW_AUDIT_ENABLED=true
|
|
225
|
+
export CLAUDE_FLOW_STRICT_MODE=true
|
|
226
|
+
```
|
|
227
|
+
|
|
228
|
+
## Security Incident Response
|
|
229
|
+
|
|
230
|
+
### Incident Detection
|
|
231
|
+
```bash
|
|
232
|
+
# Check for security incidents
|
|
233
|
+
node scripts/security/ruv-swarm-safe.js --incident-check
|
|
234
|
+
|
|
235
|
+
# Monitor for suspicious activity
|
|
236
|
+
node scripts/security/ruv-swarm-safe.js --monitor --alerts
|
|
237
|
+
```
|
|
238
|
+
|
|
239
|
+
### Incident Response Workflow
|
|
240
|
+
1. **Immediate containment** - Isolate affected components
|
|
241
|
+
2. **Evidence collection** - Gather logs and audit data
|
|
242
|
+
3. **Impact assessment** - Determine scope and severity
|
|
243
|
+
4. **Remediation** - Fix vulnerabilities and restore service
|
|
244
|
+
5. **Post-incident review** - Learn and improve security measures
|
|
245
|
+
|
|
246
|
+
### Security Logging
|
|
247
|
+
```bash
|
|
248
|
+
# Security event logging
|
|
249
|
+
tail -f /var/log/claude-flow-security.log
|
|
250
|
+
|
|
251
|
+
# Audit trail review
|
|
252
|
+
node scripts/security/ruv-swarm-safe.js --audit-trail --since "2024-01-01"
|
|
253
|
+
```
|
|
254
|
+
|
|
255
|
+
## Best Practices
|
|
256
|
+
|
|
257
|
+
### Development Security
|
|
258
|
+
1. **Security-first design** - Consider security from the beginning
|
|
259
|
+
2. **Regular security reviews** - Code and configuration audits
|
|
260
|
+
3. **Automated security testing** - Integration with CI/CD
|
|
261
|
+
4. **Security training** - Keep team updated on security practices
|
|
262
|
+
5. **Incident preparedness** - Have response procedures ready
|
|
263
|
+
|
|
264
|
+
### Operational Security
|
|
265
|
+
1. **Regular updates** - Keep dependencies and systems updated
|
|
266
|
+
2. **Access monitoring** - Monitor and audit access patterns
|
|
267
|
+
3. **Backup security** - Secure backup and recovery procedures
|
|
268
|
+
4. **Network security** - Implement network-level protections
|
|
269
|
+
5. **Compliance monitoring** - Regular compliance assessments
|
|
270
|
+
|
|
271
|
+
### Secure Coding Practices
|
|
272
|
+
1. **Input validation** - Validate all inputs rigorously
|
|
273
|
+
2. **Output encoding** - Encode outputs appropriately
|
|
274
|
+
3. **Error handling** - Handle errors securely without information leakage
|
|
275
|
+
4. **Authentication** - Implement strong authentication mechanisms
|
|
276
|
+
5. **Authorization** - Enforce proper access controls
|
|
277
|
+
|
|
278
|
+
## Troubleshooting
|
|
279
|
+
|
|
280
|
+
### Security Validation Failures
|
|
281
|
+
```bash
|
|
282
|
+
# Debug security validation
|
|
283
|
+
node scripts/security/ruv-swarm-safe.js --debug --verbose
|
|
284
|
+
|
|
285
|
+
# Check specific security rules
|
|
286
|
+
node scripts/security/ruv-swarm-safe.js --rule authentication --test
|
|
287
|
+
```
|
|
288
|
+
|
|
289
|
+
### Performance Impact
|
|
290
|
+
```bash
|
|
291
|
+
# Monitor security overhead
|
|
292
|
+
node scripts/security/ruv-swarm-safe.js --performance-monitor
|
|
293
|
+
|
|
294
|
+
# Optimize security checks
|
|
295
|
+
node scripts/security/ruv-swarm-safe.js --optimize
|
|
296
|
+
```
|
|
297
|
+
|
|
298
|
+
### False Positives
|
|
299
|
+
```bash
|
|
300
|
+
# Configure security exceptions
|
|
301
|
+
node scripts/security/ruv-swarm-safe.js --configure-exceptions
|
|
302
|
+
|
|
303
|
+
# Whitelist known good patterns
|
|
304
|
+
node scripts/security/ruv-swarm-safe.js --whitelist path/to/whitelist.json
|
|
305
|
+
```
|
|
306
|
+
|
|
307
|
+
## Contributing Security Scripts
|
|
308
|
+
|
|
309
|
+
When adding new security scripts:
|
|
310
|
+
|
|
311
|
+
1. **Follow security-first principles**
|
|
312
|
+
2. **Include comprehensive validation**
|
|
313
|
+
3. **Implement proper error handling**
|
|
314
|
+
4. **Add detailed logging and auditing**
|
|
315
|
+
5. **Write security-focused documentation**
|
|
316
|
+
6. **Test with security scenarios**
|
|
317
|
+
7. **Review with security team**
|
|
318
|
+
|
|
319
|
+
## Security Resources
|
|
320
|
+
|
|
321
|
+
### Documentation
|
|
322
|
+
- OWASP Security Guidelines
|
|
323
|
+
- Claude Flow Security Architecture
|
|
324
|
+
- Threat Modeling Documentation
|
|
325
|
+
- Security Incident Response Procedures
|
|
326
|
+
|
|
327
|
+
### Tools & Libraries
|
|
328
|
+
- Security scanning tools
|
|
329
|
+
- Vulnerability databases
|
|
330
|
+
- Security testing frameworks
|
|
331
|
+
- Compliance checking tools
|
|
332
|
+
|
|
333
|
+
### Monitoring & Alerting
|
|
334
|
+
- Security information and event management (SIEM)
|
|
335
|
+
- Intrusion detection systems (IDS)
|
|
336
|
+
- Security metrics and dashboards
|
|
337
|
+
- Automated security alerting
|
|
338
|
+
|
|
339
|
+
For legacy security scripts, see `../legacy/` directory.
|
|
@@ -0,0 +1,279 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Security Deployment Validation
|
|
5
|
+
* Phase 0 Security Debt Resolution - Loop 3 Retry
|
|
6
|
+
*
|
|
7
|
+
* Validates that all security tools are properly deployed and functional
|
|
8
|
+
*/
|
|
9
|
+
|
|
10
|
+
const { execSync } = require('child_process');
|
|
11
|
+
const fs = require('fs');
|
|
12
|
+
const path = require('path');
|
|
13
|
+
|
|
14
|
+
// ANSI colors
|
|
15
|
+
const colors = {
|
|
16
|
+
reset: '\x1b[0m',
|
|
17
|
+
green: '\x1b[32m',
|
|
18
|
+
red: '\x1b[31m',
|
|
19
|
+
yellow: '\x1b[33m',
|
|
20
|
+
blue: '\x1b[34m',
|
|
21
|
+
cyan: '\x1b[36m'
|
|
22
|
+
};
|
|
23
|
+
|
|
24
|
+
const results = {
|
|
25
|
+
passed: [],
|
|
26
|
+
failed: [],
|
|
27
|
+
warnings: [],
|
|
28
|
+
score: 0
|
|
29
|
+
};
|
|
30
|
+
|
|
31
|
+
function log(message, color = 'reset') {
|
|
32
|
+
console.log(`${colors[color]}${message}${colors.reset}`);
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
function testSection(name) {
|
|
36
|
+
log(`\n🔍 Testing ${name}...`, 'cyan');
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
function testPass(message) {
|
|
40
|
+
log(`✅ ${message}`, 'green');
|
|
41
|
+
results.passed.push(message);
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
function testFail(message) {
|
|
45
|
+
log(`❌ ${message}`, 'red');
|
|
46
|
+
results.failed.push(message);
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
function testWarn(message) {
|
|
50
|
+
log(`⚠️ ${message}`, 'yellow');
|
|
51
|
+
results.warnings.push(message);
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
// Test 1: git-secrets installation
|
|
55
|
+
testSection('git-secrets Installation');
|
|
56
|
+
try {
|
|
57
|
+
const gitSecretsPath = path.join(process.env.HOME, '.local', 'bin', 'git-secrets');
|
|
58
|
+
if (fs.existsSync(gitSecretsPath)) {
|
|
59
|
+
testPass('git-secrets binary found');
|
|
60
|
+
|
|
61
|
+
// Test git hooks
|
|
62
|
+
const hooksDir = path.join(process.cwd(), '.git', 'hooks');
|
|
63
|
+
const requiredHooks = ['pre-commit', 'commit-msg', 'prepare-commit-msg'];
|
|
64
|
+
let hooksInstalled = true;
|
|
65
|
+
|
|
66
|
+
for (const hook of requiredHooks) {
|
|
67
|
+
const hookPath = path.join(hooksDir, hook);
|
|
68
|
+
if (fs.existsSync(hookPath)) {
|
|
69
|
+
const content = fs.readFileSync(hookPath, 'utf8');
|
|
70
|
+
if (content.includes('git-secrets') || content.includes('git secrets')) {
|
|
71
|
+
testPass(`git-secrets ${hook} hook installed`);
|
|
72
|
+
} else {
|
|
73
|
+
testWarn(`${hook} hook exists but may not include git-secrets`);
|
|
74
|
+
hooksInstalled = false;
|
|
75
|
+
}
|
|
76
|
+
} else {
|
|
77
|
+
testFail(`git-secrets ${hook} hook not found`);
|
|
78
|
+
hooksInstalled = false;
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
// Test patterns
|
|
83
|
+
try {
|
|
84
|
+
const patterns = execSync(`${gitSecretsPath} --list`, { encoding: 'utf8' });
|
|
85
|
+
if (patterns.includes('sk-ant-api03')) {
|
|
86
|
+
testPass('Anthropic API key pattern configured');
|
|
87
|
+
} else {
|
|
88
|
+
testWarn('Anthropic API key pattern not found');
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
if (patterns.includes('AWS')) {
|
|
92
|
+
testPass('AWS patterns configured');
|
|
93
|
+
} else {
|
|
94
|
+
testWarn('AWS patterns not configured');
|
|
95
|
+
}
|
|
96
|
+
} catch (err) {
|
|
97
|
+
testWarn('Could not verify git-secrets patterns');
|
|
98
|
+
}
|
|
99
|
+
} else {
|
|
100
|
+
testFail('git-secrets not found in ~/.local/bin');
|
|
101
|
+
}
|
|
102
|
+
} catch (err) {
|
|
103
|
+
testFail(`git-secrets test failed: ${err.message}`);
|
|
104
|
+
}
|
|
105
|
+
|
|
106
|
+
// Test 2: Redis Authentication
|
|
107
|
+
testSection('Redis Authentication');
|
|
108
|
+
try {
|
|
109
|
+
// Check .env for REDIS_PASSWORD
|
|
110
|
+
const envPath = path.join(process.cwd(), '.env');
|
|
111
|
+
if (fs.existsSync(envPath)) {
|
|
112
|
+
const envContent = fs.readFileSync(envPath, 'utf8');
|
|
113
|
+
const redisPasswordMatch = envContent.match(/^REDIS_PASSWORD=(.+)$/m);
|
|
114
|
+
|
|
115
|
+
if (redisPasswordMatch && redisPasswordMatch[1].trim().length >= 32) {
|
|
116
|
+
testPass(`REDIS_PASSWORD configured (${redisPasswordMatch[1].trim().length} chars)`);
|
|
117
|
+
|
|
118
|
+
// Test Redis connection with auth
|
|
119
|
+
try {
|
|
120
|
+
const redisPassword = redisPasswordMatch[1].trim();
|
|
121
|
+
execSync(`redis-cli -a "${redisPassword}" ping`, { encoding: 'utf8', stdio: 'pipe' });
|
|
122
|
+
testPass('Redis authentication working');
|
|
123
|
+
} catch (err) {
|
|
124
|
+
testFail('Redis authentication failed - password may not be set in Redis');
|
|
125
|
+
}
|
|
126
|
+
} else if (redisPasswordMatch) {
|
|
127
|
+
testFail(`REDIS_PASSWORD too weak (${redisPasswordMatch[1].trim().length} chars, need ≥32)`);
|
|
128
|
+
} else {
|
|
129
|
+
testFail('REDIS_PASSWORD not found in .env');
|
|
130
|
+
}
|
|
131
|
+
} else {
|
|
132
|
+
testFail('.env file not found');
|
|
133
|
+
}
|
|
134
|
+
} catch (err) {
|
|
135
|
+
testFail(`Redis authentication test failed: ${err.message}`);
|
|
136
|
+
}
|
|
137
|
+
|
|
138
|
+
// Test 3: File Permissions (WSL-aware)
|
|
139
|
+
testSection('File Permissions');
|
|
140
|
+
try {
|
|
141
|
+
const sensitiveFiles = ['.env', '.env.keys'];
|
|
142
|
+
|
|
143
|
+
// Detect WSL
|
|
144
|
+
let isWSL = false;
|
|
145
|
+
try {
|
|
146
|
+
const unameResult = execSync('uname -r', { encoding: 'utf8' });
|
|
147
|
+
isWSL = unameResult.toLowerCase().includes('microsoft') || unameResult.toLowerCase().includes('wsl');
|
|
148
|
+
} catch (err) {
|
|
149
|
+
// Not WSL
|
|
150
|
+
}
|
|
151
|
+
|
|
152
|
+
if (isWSL) {
|
|
153
|
+
testWarn('Running on WSL - file permissions may be limited by Windows');
|
|
154
|
+
testWarn('Ensure .env files are not in version control instead');
|
|
155
|
+
}
|
|
156
|
+
|
|
157
|
+
for (const file of sensitiveFiles) {
|
|
158
|
+
const filePath = path.join(process.cwd(), file);
|
|
159
|
+
if (fs.existsSync(filePath)) {
|
|
160
|
+
try {
|
|
161
|
+
const stats = fs.statSync(filePath);
|
|
162
|
+
const mode = (stats.mode & parseInt('777', 8)).toString(8);
|
|
163
|
+
|
|
164
|
+
if (isWSL) {
|
|
165
|
+
// On WSL, just check it exists and warn
|
|
166
|
+
testWarn(`${file} permissions: ${mode} (WSL limitation - ensure not in git)`);
|
|
167
|
+
|
|
168
|
+
// Check .gitignore
|
|
169
|
+
const gitignorePath = path.join(process.cwd(), '.gitignore');
|
|
170
|
+
if (fs.existsSync(gitignorePath)) {
|
|
171
|
+
const gitignore = fs.readFileSync(gitignorePath, 'utf8');
|
|
172
|
+
if (gitignore.includes(file)) {
|
|
173
|
+
testPass(`${file} is in .gitignore`);
|
|
174
|
+
} else {
|
|
175
|
+
testFail(`${file} NOT in .gitignore - CRITICAL`);
|
|
176
|
+
}
|
|
177
|
+
}
|
|
178
|
+
} else {
|
|
179
|
+
// On native Linux/macOS, enforce permissions
|
|
180
|
+
if (mode === '600') {
|
|
181
|
+
testPass(`${file} has secure permissions (600)`);
|
|
182
|
+
} else {
|
|
183
|
+
testFail(`${file} has insecure permissions: ${mode} (expected 600)`);
|
|
184
|
+
}
|
|
185
|
+
}
|
|
186
|
+
} catch (err) {
|
|
187
|
+
testWarn(`Could not check permissions for ${file}`);
|
|
188
|
+
}
|
|
189
|
+
}
|
|
190
|
+
}
|
|
191
|
+
} catch (err) {
|
|
192
|
+
testFail(`File permissions test failed: ${err.message}`);
|
|
193
|
+
}
|
|
194
|
+
|
|
195
|
+
// Test 4: Security Audit Script
|
|
196
|
+
testSection('Security Audit Script');
|
|
197
|
+
try {
|
|
198
|
+
const auditScriptPath = path.join(process.cwd(), 'scripts', 'security', 'security-audit.cjs');
|
|
199
|
+
if (fs.existsSync(auditScriptPath)) {
|
|
200
|
+
testPass('security-audit.cjs exists');
|
|
201
|
+
|
|
202
|
+
// Try to run it
|
|
203
|
+
try {
|
|
204
|
+
execSync('node scripts/security/security-audit.cjs --json', {
|
|
205
|
+
encoding: 'utf8',
|
|
206
|
+
stdio: 'pipe',
|
|
207
|
+
timeout: 30000
|
|
208
|
+
});
|
|
209
|
+
testPass('security-audit.cjs executes successfully');
|
|
210
|
+
} catch (err) {
|
|
211
|
+
testWarn('security-audit.cjs runs but may report issues (expected)');
|
|
212
|
+
}
|
|
213
|
+
} else {
|
|
214
|
+
testFail('security-audit.cjs not found');
|
|
215
|
+
}
|
|
216
|
+
} catch (err) {
|
|
217
|
+
testFail(`Security audit script test failed: ${err.message}`);
|
|
218
|
+
}
|
|
219
|
+
|
|
220
|
+
// Test 5: Documentation
|
|
221
|
+
testSection('Security Documentation');
|
|
222
|
+
const docs = [
|
|
223
|
+
'docs/security/GIT_SECRETS_SETUP.md',
|
|
224
|
+
'docs/security/REDIS_AUTHENTICATION.md'
|
|
225
|
+
];
|
|
226
|
+
|
|
227
|
+
for (const doc of docs) {
|
|
228
|
+
const docPath = path.join(process.cwd(), doc);
|
|
229
|
+
if (fs.existsSync(docPath)) {
|
|
230
|
+
testPass(`${doc} exists`);
|
|
231
|
+
} else {
|
|
232
|
+
testWarn(`${doc} not found`);
|
|
233
|
+
}
|
|
234
|
+
}
|
|
235
|
+
|
|
236
|
+
// Calculate Score
|
|
237
|
+
const totalTests = results.passed.length + results.failed.length;
|
|
238
|
+
const passedTests = results.passed.length;
|
|
239
|
+
results.score = totalTests > 0 ? (passedTests / totalTests) : 0;
|
|
240
|
+
|
|
241
|
+
// Summary Report
|
|
242
|
+
log('\n' + '═'.repeat(60), 'blue');
|
|
243
|
+
log('SECURITY DEPLOYMENT VALIDATION REPORT', 'blue');
|
|
244
|
+
log('═'.repeat(60), 'blue');
|
|
245
|
+
|
|
246
|
+
log(`\n📊 Results:`, 'cyan');
|
|
247
|
+
log(` ✅ Passed: ${results.passed.length}`, 'green');
|
|
248
|
+
log(` ❌ Failed: ${results.failed.length}`, 'red');
|
|
249
|
+
log(` ⚠️ Warnings: ${results.warnings.length}`, 'yellow');
|
|
250
|
+
log(` 📈 Score: ${(results.score * 100).toFixed(0)}%`, results.score >= 0.9 ? 'green' : results.score >= 0.75 ? 'yellow' : 'red');
|
|
251
|
+
|
|
252
|
+
if (results.failed.length > 0) {
|
|
253
|
+
log(`\n❌ Failed Tests:`, 'red');
|
|
254
|
+
results.failed.forEach((fail, i) => log(` ${i + 1}. ${fail}`, 'red'));
|
|
255
|
+
}
|
|
256
|
+
|
|
257
|
+
if (results.warnings.length > 0) {
|
|
258
|
+
log(`\n⚠️ Warnings:`, 'yellow');
|
|
259
|
+
results.warnings.forEach((warn, i) => log(` ${i + 1}. ${warn}`, 'yellow'));
|
|
260
|
+
}
|
|
261
|
+
|
|
262
|
+
// Recommendations
|
|
263
|
+
log(`\n💡 Next Steps:`, 'cyan');
|
|
264
|
+
if (results.score >= 0.9) {
|
|
265
|
+
log(' ✅ Security deployment complete - ready for production', 'green');
|
|
266
|
+
log(' 🔄 Run npm run security:full-audit for comprehensive check', 'blue');
|
|
267
|
+
} else if (results.score >= 0.75) {
|
|
268
|
+
log(' ⚠️ Security deployment mostly complete - address warnings', 'yellow');
|
|
269
|
+
log(' 🔍 Review failed tests and warnings above', 'yellow');
|
|
270
|
+
} else {
|
|
271
|
+
log(' ❌ Security deployment incomplete - address failures', 'red');
|
|
272
|
+
log(' 📚 Review security documentation', 'red');
|
|
273
|
+
log(' 🔧 Re-run deployment scripts', 'red');
|
|
274
|
+
}
|
|
275
|
+
|
|
276
|
+
log('\n' + '═'.repeat(60), 'blue');
|
|
277
|
+
|
|
278
|
+
// Exit with appropriate code
|
|
279
|
+
process.exit(results.score >= 0.75 ? 0 : 1);
|