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