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,645 @@
1
+ #!/usr/bin/env node
2
+
3
+ const { PerformanceTestRunner } = require('../src/testing/performance/PerformanceTestRunner');
4
+ const { PerformanceGate } = require('../src/ci-cd/performance/PerformanceGate');
5
+ const { RegressionDetector, defaultRegressionConfig } = require('../src/monitoring/regression/RegressionDetector');
6
+ const fs = require('fs').promises;
7
+ const path = require('path');
8
+
9
+ /**
10
+ * Performance Test Runner Script
11
+ *
12
+ * This script provides a CLI interface for running performance tests,
13
+ * validating performance gates, and detecting regressions.
14
+ */
15
+
16
+ class PerformanceTestCLI {
17
+ constructor() {
18
+ this.testRunner = new PerformanceTestRunner();
19
+ this.setupTestConfigurations();
20
+ }
21
+
22
+ // Setup predefined test configurations
23
+ setupTestConfigurations() {
24
+ // Basic performance test
25
+ this.testRunner.registerTest({
26
+ name: 'basic-cli-operations',
27
+ description: 'Test basic CLI command performance',
28
+ duration: 30000, // 30 seconds
29
+ warmupDuration: 5000, // 5 seconds
30
+ concurrency: 5,
31
+ rampUpTime: 2000,
32
+ rampDownTime: 2000,
33
+ targetThroughput: 10, // req/s
34
+ maxLatency: 1000, // ms
35
+ successRate: 0.95,
36
+ memoryLimit: 256, // MB
37
+ cpuLimit: 50 // %
38
+ });
39
+
40
+ // Load test configuration
41
+ this.testRunner.registerTest({
42
+ name: 'load-test-swarm-operations',
43
+ description: 'Load test for swarm coordination operations',
44
+ duration: 300000, // 5 minutes
45
+ warmupDuration: 30000, // 30 seconds
46
+ concurrency: parseInt(process.env.LOAD_TEST_CONCURRENCY || '50'),
47
+ rampUpTime: 60000, // 1 minute
48
+ rampDownTime: 30000, // 30 seconds
49
+ targetThroughput: 100, // req/s
50
+ maxLatency: 2000, // ms
51
+ successRate: 0.9,
52
+ memoryLimit: 512, // MB
53
+ cpuLimit: 70 // %
54
+ });
55
+
56
+ // Stress test configuration
57
+ this.testRunner.registerTest({
58
+ name: 'stress-test-agent-spawning',
59
+ description: 'Stress test for agent spawning and coordination',
60
+ duration: 600000, // 10 minutes
61
+ warmupDuration: 60000, // 1 minute
62
+ concurrency: parseInt(process.env.STRESS_TEST_MAX_CONCURRENCY || '200'),
63
+ rampUpTime: 120000, // 2 minutes
64
+ rampDownTime: 60000, // 1 minute
65
+ targetThroughput: 50, // req/s
66
+ maxLatency: 5000, // ms
67
+ successRate: 0.85,
68
+ memoryLimit: 1024, // MB
69
+ cpuLimit: 90 // %
70
+ });
71
+
72
+ // Endurance test configuration
73
+ this.testRunner.registerTest({
74
+ name: 'endurance-test-memory-stability',
75
+ description: 'Endurance test for memory stability and leak detection',
76
+ duration: parseInt(process.env.ENDURANCE_TEST_DURATION || '3600000'), // 1 hour
77
+ warmupDuration: 60000, // 1 minute
78
+ concurrency: parseInt(process.env.ENDURANCE_TEST_CONCURRENCY || '25'),
79
+ rampUpTime: 300000, // 5 minutes
80
+ rampDownTime: 300000, // 5 minutes
81
+ targetThroughput: 20, // req/s
82
+ maxLatency: 3000, // ms
83
+ successRate: 0.95,
84
+ memoryLimit: parseInt(process.env.ENDURANCE_TEST_MEMORY_LIMIT || '1024'), // MB
85
+ cpuLimit: 60 // %
86
+ });
87
+ }
88
+
89
+ // Run basic performance tests
90
+ async runBasicTests() {
91
+ console.log('🚀 Running basic performance tests...');
92
+
93
+ const tests = [
94
+ {
95
+ name: 'basic-cli-operations',
96
+ function: this.simulateBasicCLIOperation.bind(this)
97
+ }
98
+ ];
99
+
100
+ const results = await this.testRunner.runTestSuite(tests);
101
+ await this.saveResults('basic', results);
102
+
103
+ return results;
104
+ }
105
+
106
+ // Run load performance tests
107
+ async runLoadTests() {
108
+ console.log('🚀 Running load performance tests...');
109
+
110
+ const tests = [
111
+ {
112
+ name: 'load-test-swarm-operations',
113
+ function: this.simulateSwarmOperation.bind(this)
114
+ }
115
+ ];
116
+
117
+ const results = await this.testRunner.runTestSuite(tests);
118
+ await this.saveResults('load', results);
119
+
120
+ return results;
121
+ }
122
+
123
+ // Run stress performance tests
124
+ async runStressTests() {
125
+ console.log('🚀 Running stress performance tests...');
126
+
127
+ const tests = [
128
+ {
129
+ name: 'stress-test-agent-spawning',
130
+ function: this.simulateAgentSpawning.bind(this)
131
+ }
132
+ ];
133
+
134
+ const results = await this.testRunner.runTestSuite(tests);
135
+ await this.saveResults('stress', results);
136
+
137
+ return results;
138
+ }
139
+
140
+ // Run endurance performance tests
141
+ async runEnduranceTests() {
142
+ console.log('🚀 Running endurance performance tests...');
143
+
144
+ const tests = [
145
+ {
146
+ name: 'endurance-test-memory-stability',
147
+ function: this.simulateMemoryIntensiveOperation.bind(this)
148
+ }
149
+ ];
150
+
151
+ const results = await this.testRunner.runTestSuite(tests);
152
+ await this.saveResults('endurance', results);
153
+
154
+ return results;
155
+ }
156
+
157
+ // Simulate basic CLI operation
158
+ async simulateBasicCLIOperation() {
159
+ // Simulate a basic CLI command execution
160
+ const start = Date.now();
161
+
162
+ // Simulate command parsing and validation
163
+ await this.sleep(Math.random() * 10 + 5); // 5-15ms
164
+
165
+ // Simulate configuration loading
166
+ await this.sleep(Math.random() * 20 + 10); // 10-30ms
167
+
168
+ // Simulate command execution
169
+ await this.sleep(Math.random() * 50 + 25); // 25-75ms
170
+
171
+ // Simulate response formatting
172
+ await this.sleep(Math.random() * 10 + 5); // 5-15ms
173
+
174
+ const duration = Date.now() - start;
175
+
176
+ // Simulate occasional failures (5% failure rate)
177
+ if (Math.random() < 0.05) {
178
+ throw new Error('Simulated command failure');
179
+ }
180
+
181
+ return { duration, operation: 'cli-command' };
182
+ }
183
+
184
+ // Simulate swarm operation
185
+ async simulateSwarmOperation() {
186
+ const start = Date.now();
187
+
188
+ // Simulate swarm initialization
189
+ await this.sleep(Math.random() * 30 + 20); // 20-50ms
190
+
191
+ // Simulate agent coordination
192
+ await this.sleep(Math.random() * 100 + 50); // 50-150ms
193
+
194
+ // Simulate task orchestration
195
+ await this.sleep(Math.random() * 200 + 100); // 100-300ms
196
+
197
+ // Simulate result aggregation
198
+ await this.sleep(Math.random() * 50 + 25); // 25-75ms
199
+
200
+ const duration = Date.now() - start;
201
+
202
+ // Simulate occasional failures (10% failure rate under load)
203
+ if (Math.random() < 0.1) {
204
+ throw new Error('Simulated swarm coordination failure');
205
+ }
206
+
207
+ return { duration, operation: 'swarm-coordination' };
208
+ }
209
+
210
+ // Simulate agent spawning
211
+ async simulateAgentSpawning() {
212
+ const start = Date.now();
213
+
214
+ // Simulate agent type selection
215
+ await this.sleep(Math.random() * 20 + 10); // 10-30ms
216
+
217
+ // Simulate agent initialization
218
+ await this.sleep(Math.random() * 100 + 50); // 50-150ms
219
+
220
+ // Simulate capability registration
221
+ await this.sleep(Math.random() * 50 + 25); // 25-75ms
222
+
223
+ // Simulate network connection setup
224
+ await this.sleep(Math.random() * 150 + 75); // 75-225ms
225
+
226
+ // Simulate initial task assignment
227
+ await this.sleep(Math.random() * 100 + 50); // 50-150ms
228
+
229
+ const duration = Date.now() - start;
230
+
231
+ // Simulate failures (15% failure rate under stress)
232
+ if (Math.random() < 0.15) {
233
+ throw new Error('Simulated agent spawning failure');
234
+ }
235
+
236
+ return { duration, operation: 'agent-spawning' };
237
+ }
238
+
239
+ // Simulate memory-intensive operation
240
+ async simulateMemoryIntensiveOperation() {
241
+ const start = Date.now();
242
+
243
+ // Create some memory pressure to simulate real workload
244
+ const largeArray = new Array(10000).fill(0).map(() => ({
245
+ id: Math.random(),
246
+ data: new Array(100).fill(Math.random()),
247
+ timestamp: Date.now()
248
+ }));
249
+
250
+ // Simulate processing
251
+ await this.sleep(Math.random() * 100 + 50); // 50-150ms
252
+
253
+ // Simulate data transformation
254
+ const processedData = largeArray.map(item => ({
255
+ ...item,
256
+ processed: true,
257
+ hash: this.simpleHash(JSON.stringify(item))
258
+ }));
259
+
260
+ // Simulate cleanup (helps test GC behavior)
261
+ largeArray.length = 0;
262
+ processedData.length = 0;
263
+
264
+ const duration = Date.now() - start;
265
+
266
+ // Simulate rare failures (2% failure rate)
267
+ if (Math.random() < 0.02) {
268
+ throw new Error('Simulated memory operation failure');
269
+ }
270
+
271
+ return { duration, operation: 'memory-intensive' };
272
+ }
273
+
274
+ // Simple hash function for testing
275
+ simpleHash(str) {
276
+ let hash = 0;
277
+ for (let i = 0; i < str.length; i++) {
278
+ const char = str.charCodeAt(i);
279
+ hash = ((hash << 5) - hash) + char;
280
+ hash = hash & hash; // Convert to 32-bit integer
281
+ }
282
+ return hash;
283
+ }
284
+
285
+ // Validate performance gate
286
+ async validatePerformanceGate() {
287
+ console.log('🚪 Running performance gate validation...');
288
+
289
+ const gateConfig = this.createPerformanceGateConfig();
290
+ const gate = new PerformanceGate(gateConfig);
291
+
292
+ // Run a subset of tests for gate validation
293
+ const tests = [
294
+ {
295
+ name: 'basic-cli-operations',
296
+ function: this.simulateBasicCLIOperation.bind(this)
297
+ },
298
+ {
299
+ name: 'load-test-swarm-operations',
300
+ function: this.simulateSwarmOperation.bind(this)
301
+ }
302
+ ];
303
+
304
+ const gateResult = await gate.validatePerformance(tests);
305
+
306
+ // Save gate results
307
+ await this.saveGateResults(gateResult);
308
+
309
+ // Log results
310
+ console.log(`\n📊 Performance Gate Results:`);
311
+ console.log(`Status: ${gateResult.recommendation}`);
312
+ console.log(`Passed: ${gateResult.passed ? '✅' : '❌'}`);
313
+ console.log(`Violations: ${gateResult.violations.length}`);
314
+ console.log(`Regressions: ${gateResult.regressions.length}`);
315
+ console.log(`Improvements: ${gateResult.improvements.length}`);
316
+
317
+ if (gateResult.violations.length > 0) {
318
+ console.log('\n❌ Violations:');
319
+ gateResult.violations.forEach(v => console.log(` - ${v}`));
320
+ }
321
+
322
+ if (gateResult.regressions.length > 0) {
323
+ console.log('\n📉 Regressions:');
324
+ gateResult.regressions.forEach(r => console.log(` - ${r}`));
325
+ }
326
+
327
+ if (gateResult.improvements.length > 0) {
328
+ console.log('\n📈 Improvements:');
329
+ gateResult.improvements.forEach(i => console.log(` - ${i}`));
330
+ }
331
+
332
+ return gateResult;
333
+ }
334
+
335
+ // Detect performance regressions
336
+ async detectRegressions() {
337
+ console.log('🔍 Running regression detection...');
338
+
339
+ const detector = new RegressionDetector(defaultRegressionConfig);
340
+
341
+ // Create a synthetic data point for testing
342
+ const dataPoint = {
343
+ timestamp: Date.now(),
344
+ commit: process.env.GITHUB_SHA || 'test-commit',
345
+ branch: process.env.GITHUB_REF_NAME || 'test-branch',
346
+ version: process.env.npm_package_version || '1.0.0',
347
+ metrics: {
348
+ throughput: 95 + Math.random() * 10, // 95-105 req/s
349
+ avgLatency: 45 + Math.random() * 10, // 45-55ms
350
+ p95Latency: 90 + Math.random() * 20, // 90-110ms
351
+ p99Latency: 180 + Math.random() * 40, // 180-220ms
352
+ successRate: 0.95 + Math.random() * 0.04, // 95-99%
353
+ memoryUsage: 200 + Math.random() * 50, // 200-250MB
354
+ cpuUsage: 35 + Math.random() * 15, // 35-50%
355
+ errorRate: Math.random() * 0.05 // 0-5%
356
+ },
357
+ environment: {
358
+ os: process.platform,
359
+ nodeVersion: process.version,
360
+ cpuCores: require('os').cpus().length,
361
+ memory: Math.round(require('os').totalmem() / 1024 / 1024) // MB
362
+ }
363
+ };
364
+
365
+ const alerts = await detector.detectRegressions(dataPoint);
366
+
367
+ console.log(`\n🔍 Regression Detection Results:`);
368
+ console.log(`Alerts: ${alerts.length}`);
369
+
370
+ if (alerts.length > 0) {
371
+ alerts.forEach(alert => {
372
+ const icon = alert.type === 'REGRESSION' ? '📉' :
373
+ alert.type === 'IMPROVEMENT' ? '📈' : '⚠️';
374
+ console.log(`\n${icon} ${alert.type} - ${alert.severity}`);
375
+ console.log(` Metric: ${alert.metric}`);
376
+ console.log(` Description: ${alert.description}`);
377
+ console.log(` Recommendation: ${alert.recommendation}`);
378
+ });
379
+ } else {
380
+ console.log(' No significant regressions detected ✅');
381
+ }
382
+
383
+ // Save regression results
384
+ await this.saveRegressionResults(alerts, dataPoint);
385
+
386
+ return alerts;
387
+ }
388
+
389
+ // Generate comprehensive performance report
390
+ async generateReport() {
391
+ console.log('📊 Generating comprehensive performance report...');
392
+
393
+ const reportData = {
394
+ timestamp: Date.now(),
395
+ environment: {
396
+ os: process.platform,
397
+ nodeVersion: process.version,
398
+ cpuCores: require('os').cpus().length,
399
+ memory: Math.round(require('os').totalmem() / 1024 / 1024),
400
+ branch: process.env.GITHUB_REF_NAME || 'unknown',
401
+ commit: process.env.GITHUB_SHA || 'unknown'
402
+ },
403
+ tests: {
404
+ basic: await this.loadResults('basic'),
405
+ load: await this.loadResults('load'),
406
+ stress: await this.loadResults('stress'),
407
+ endurance: await this.loadResults('endurance')
408
+ },
409
+ gate: await this.loadGateResults(),
410
+ regressions: await this.loadRegressionResults()
411
+ };
412
+
413
+ const reportPath = path.join(process.cwd(), 'reports/performance', `consolidated-${Date.now()}.json`);
414
+ await fs.mkdir(path.dirname(reportPath), { recursive: true });
415
+ await fs.writeFile(reportPath, JSON.stringify(reportData, null, 2));
416
+
417
+ console.log(`📊 Performance report saved to: ${reportPath}`);
418
+
419
+ return reportData;
420
+ }
421
+
422
+ // Create performance gate configuration
423
+ createPerformanceGateConfig() {
424
+ return {
425
+ enabled: process.env.PERFORMANCE_GATE_ENABLED !== 'false',
426
+ thresholds: {
427
+ throughput: {
428
+ min: parseInt(process.env.PERF_THRESHOLD_THROUGHPUT_MIN || '50'),
429
+ regression: parseFloat(process.env.PERF_THRESHOLD_THROUGHPUT_REGRESSION || '10')
430
+ },
431
+ latency: {
432
+ p95: parseInt(process.env.PERF_THRESHOLD_P95_LATENCY || '1000'),
433
+ p99: parseInt(process.env.PERF_THRESHOLD_P99_LATENCY || '2000'),
434
+ regression: parseFloat(process.env.PERF_THRESHOLD_LATENCY_REGRESSION || '20')
435
+ },
436
+ successRate: {
437
+ min: parseFloat(process.env.PERF_THRESHOLD_SUCCESS_RATE || '0.9')
438
+ },
439
+ resources: {
440
+ memory: parseInt(process.env.PERF_THRESHOLD_MEMORY || '512'),
441
+ cpu: parseInt(process.env.PERF_THRESHOLD_CPU || '80')
442
+ }
443
+ },
444
+ baseline: {
445
+ enabled: true,
446
+ path: process.env.PERFORMANCE_BASELINE_PATH || './performance-baseline.json',
447
+ autoUpdate: process.env.PERFORMANCE_BASELINE_AUTO_UPDATE === 'true'
448
+ },
449
+ notifications: {
450
+ slack: {
451
+ webhook: process.env.SLACK_WEBHOOK_URL || '',
452
+ channel: process.env.SLACK_CHANNEL || '#performance'
453
+ },
454
+ email: {
455
+ enabled: process.env.EMAIL_NOTIFICATIONS_ENABLED === 'true',
456
+ recipients: (process.env.EMAIL_RECIPIENTS || '').split(',').filter(Boolean)
457
+ }
458
+ }
459
+ };
460
+ }
461
+
462
+ // Helper methods
463
+ async sleep(ms) {
464
+ return new Promise(resolve => setTimeout(resolve, ms));
465
+ }
466
+
467
+ async saveResults(testType, results) {
468
+ const reportsDir = path.join(process.cwd(), 'reports/performance');
469
+ await fs.mkdir(reportsDir, { recursive: true });
470
+
471
+ const resultsPath = path.join(reportsDir, `${testType}-${Date.now()}.json`);
472
+ await fs.writeFile(resultsPath, JSON.stringify(results, null, 2));
473
+
474
+ console.log(`Results saved to: ${resultsPath}`);
475
+ }
476
+
477
+ async saveGateResults(gateResult) {
478
+ const reportsDir = path.join(process.cwd(), 'reports/performance');
479
+ await fs.mkdir(reportsDir, { recursive: true });
480
+
481
+ const gateResultsPath = path.join(reportsDir, `gate-${Date.now()}.json`);
482
+ const latestGateResultsPath = path.join(reportsDir, 'gate-latest.json');
483
+
484
+ await fs.writeFile(gateResultsPath, JSON.stringify(gateResult, null, 2));
485
+ await fs.writeFile(latestGateResultsPath, JSON.stringify(gateResult, null, 2));
486
+
487
+ console.log(`Gate results saved to: ${gateResultsPath}`);
488
+ }
489
+
490
+ async saveRegressionResults(alerts, dataPoint) {
491
+ const reportsDir = path.join(process.cwd(), 'reports/performance');
492
+ await fs.mkdir(reportsDir, { recursive: true });
493
+
494
+ const regressionData = {
495
+ timestamp: Date.now(),
496
+ dataPoint: dataPoint,
497
+ alerts: alerts
498
+ };
499
+
500
+ const regressionResultsPath = path.join(reportsDir, `regression-${Date.now()}.json`);
501
+ await fs.writeFile(regressionResultsPath, JSON.stringify(regressionData, null, 2));
502
+
503
+ console.log(`Regression results saved to: ${regressionResultsPath}`);
504
+ }
505
+
506
+ async loadResults(testType) {
507
+ try {
508
+ const reportsDir = path.join(process.cwd(), 'reports/performance');
509
+ const files = await fs.readdir(reportsDir);
510
+ const testFiles = files.filter(f => f.startsWith(`${testType}-`) && f.endsWith('.json'));
511
+
512
+ if (testFiles.length === 0) return null;
513
+
514
+ const latestFile = testFiles.sort().pop();
515
+ const resultsPath = path.join(reportsDir, latestFile);
516
+ const data = await fs.readFile(resultsPath, 'utf-8');
517
+
518
+ return JSON.parse(data);
519
+ } catch (error) {
520
+ console.warn(`Could not load ${testType} results:`, error.message);
521
+ return null;
522
+ }
523
+ }
524
+
525
+ async loadGateResults() {
526
+ try {
527
+ const gateResultsPath = path.join(process.cwd(), 'reports/performance', 'gate-latest.json');
528
+ const data = await fs.readFile(gateResultsPath, 'utf-8');
529
+ return JSON.parse(data);
530
+ } catch (error) {
531
+ console.warn('Could not load gate results:', error.message);
532
+ return null;
533
+ }
534
+ }
535
+
536
+ async loadRegressionResults() {
537
+ try {
538
+ const reportsDir = path.join(process.cwd(), 'reports/performance');
539
+ const files = await fs.readdir(reportsDir);
540
+ const regressionFiles = files.filter(f => f.startsWith('regression-') && f.endsWith('.json'));
541
+
542
+ if (regressionFiles.length === 0) return null;
543
+
544
+ const latestFile = regressionFiles.sort().pop();
545
+ const resultsPath = path.join(reportsDir, latestFile);
546
+ const data = await fs.readFile(resultsPath, 'utf-8');
547
+
548
+ return JSON.parse(data);
549
+ } catch (error) {
550
+ console.warn('Could not load regression results:', error.message);
551
+ return null;
552
+ }
553
+ }
554
+ }
555
+
556
+ // CLI interface
557
+ async function main() {
558
+ const args = process.argv.slice(2);
559
+ const command = args[0];
560
+
561
+ const cli = new PerformanceTestCLI();
562
+
563
+ try {
564
+ switch (command) {
565
+ case 'basic':
566
+ await cli.runBasicTests();
567
+ break;
568
+
569
+ case 'load':
570
+ await cli.runLoadTests();
571
+ break;
572
+
573
+ case 'stress':
574
+ await cli.runStressTests();
575
+ break;
576
+
577
+ case 'endurance':
578
+ await cli.runEnduranceTests();
579
+ break;
580
+
581
+ case 'all':
582
+ await cli.runBasicTests();
583
+ await cli.runLoadTests();
584
+ await cli.runStressTests();
585
+ await cli.runEnduranceTests();
586
+ break;
587
+
588
+ case 'gate':
589
+ const gateResult = await cli.validatePerformanceGate();
590
+ if (!gateResult.passed) {
591
+ process.exit(1);
592
+ }
593
+ break;
594
+
595
+ case 'regression':
596
+ await cli.detectRegressions();
597
+ break;
598
+
599
+ case 'report':
600
+ await cli.generateReport();
601
+ break;
602
+
603
+ default:
604
+ console.log(`
605
+ Performance Test Runner
606
+
607
+ Usage: node scripts/performance-test-runner.js <command>
608
+
609
+ Commands:
610
+ basic Run basic performance tests
611
+ load Run load performance tests
612
+ stress Run stress performance tests
613
+ endurance Run endurance performance tests
614
+ all Run all performance test suites
615
+ gate Run performance gate validation
616
+ regression Run regression detection
617
+ report Generate comprehensive performance report
618
+
619
+ Environment Variables:
620
+ PERFORMANCE_GATE_ENABLED=true/false
621
+ PERFORMANCE_BASELINE_AUTO_UPDATE=true/false
622
+ LOAD_TEST_CONCURRENCY=50
623
+ STRESS_TEST_MAX_CONCURRENCY=200
624
+ ENDURANCE_TEST_DURATION=3600000
625
+ ENDURANCE_TEST_CONCURRENCY=25
626
+ ENDURANCE_TEST_MEMORY_LIMIT=1024
627
+ PERF_THRESHOLD_THROUGHPUT_MIN=50
628
+ PERF_THRESHOLD_P95_LATENCY=1000
629
+ PERF_THRESHOLD_SUCCESS_RATE=0.9
630
+ SLACK_WEBHOOK_URL=<webhook-url>
631
+ EMAIL_NOTIFICATIONS_ENABLED=true/false
632
+ `);
633
+ break;
634
+ }
635
+ } catch (error) {
636
+ console.error(`❌ Performance test failed:`, error.message);
637
+ process.exit(1);
638
+ }
639
+ }
640
+
641
+ if (require.main === module) {
642
+ main();
643
+ }
644
+
645
+ module.exports = { PerformanceTestCLI };