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,142 @@
1
+ #!/usr/bin/env -S deno run --allow-all
2
+ /**
3
+ * Test script for Claude Swarm Mode functionality
4
+ */
5
+
6
+ import { colors } from 'https://deno.land/x/cliffy@v1.0.0-rc.3/ansi/colors.ts';
7
+
8
+ async function runTest(name: string, command: string[], expectedPatterns: string[]): Promise<boolean> {
9
+ console.log(colors.blue(`\nTesting: ${name}`));
10
+ console.log(colors.gray(`Command: ${command.join(' ')}`));
11
+
12
+ try {
13
+ const cmd = new Deno.Command(command[0], {
14
+ args: command.slice(1),
15
+ stdout: 'piped',
16
+ stderr: 'piped',
17
+ });
18
+
19
+ const { code, stdout, stderr } = await cmd.output();
20
+ const output = new TextDecoder().decode(stdout);
21
+ const errorOutput = new TextDecoder().decode(stderr);
22
+
23
+ if (code !== 0 && !name.includes("dry-run")) {
24
+ console.log(colors.red(`āŒ Command failed with code ${code}`));
25
+ if (errorOutput) {
26
+ console.log(colors.red(`Error: ${errorOutput}`));
27
+ }
28
+ return false;
29
+ }
30
+
31
+ // Check for expected patterns in output
32
+ let allPatternsFound = true;
33
+ for (const pattern of expectedPatterns) {
34
+ if (!output.includes(pattern)) {
35
+ console.log(colors.red(`āŒ Expected pattern not found: "${pattern}"`));
36
+ allPatternsFound = false;
37
+ }
38
+ }
39
+
40
+ if (allPatternsFound) {
41
+ console.log(colors.green(`āœ… Test passed`));
42
+ return true;
43
+ } else {
44
+ console.log(colors.red(`āŒ Test failed`));
45
+ console.log(colors.gray(`Output: ${output.substring(0, 200)}...`));
46
+ return false;
47
+ }
48
+
49
+ } catch (error) {
50
+ console.log(colors.red(`āŒ Error running test: ${(error as Error).message}`));
51
+ return false;
52
+ }
53
+ }
54
+
55
+ async function main() {
56
+ console.log(colors.bold('Claude-Flow Swarm Mode Test Suite'));
57
+ console.log('='.repeat(50));
58
+
59
+ const tests = [
60
+ {
61
+ name: "Swarm demo dry-run",
62
+ command: ["./swarm-demo.ts", "Build a REST API", "--dry-run"],
63
+ patterns: ["DRY RUN", "Swarm ID:", "Objective: Build a REST API"],
64
+ },
65
+ {
66
+ name: "CLI swarm command dry-run",
67
+ command: ["deno", "run", "--allow-all", "./src/cli/main.ts", "swarm", "Test objective", "--dry-run"],
68
+ patterns: ["DRY RUN", "Swarm ID:", "Objective: Test objective"],
69
+ },
70
+ {
71
+ name: "CLI swarm help",
72
+ command: ["deno", "run", "--allow-all", "./src/cli/main.ts", "help", "swarm"],
73
+ patterns: ["Claude Swarm Mode", "self-orchestrating Claude agent swarms"],
74
+ },
75
+ {
76
+ name: "Swarm with research strategy",
77
+ command: ["./swarm-demo.ts", "Research test", "--strategy", "research", "--dry-run"],
78
+ patterns: ["Strategy: research", "DRY RUN"],
79
+ },
80
+ {
81
+ name: "Swarm with all options",
82
+ command: [
83
+ "./swarm-demo.ts",
84
+ "Complex task",
85
+ "--max-agents", "10",
86
+ "--max-depth", "4",
87
+ "--research",
88
+ "--parallel",
89
+ "--review",
90
+ "--coordinator",
91
+ "--dry-run"
92
+ ],
93
+ patterns: [
94
+ "Max Agents: 10",
95
+ "Max Depth: 4",
96
+ "Research: true",
97
+ "Parallel: true",
98
+ "Review Mode: true",
99
+ "Coordinator: true"
100
+ ],
101
+ },
102
+ ];
103
+
104
+ let passedTests = 0;
105
+ let failedTests = 0;
106
+
107
+ for (const test of tests) {
108
+ const passed = await runTest(test.name, test.command, test.patterns);
109
+ if (passed) {
110
+ passedTests++;
111
+ } else {
112
+ failedTests++;
113
+ }
114
+ }
115
+
116
+ console.log('\n' + '='.repeat(50));
117
+ console.log(colors.bold('Test Summary:'));
118
+ console.log(colors.green(`āœ… Passed: ${passedTests}`));
119
+ console.log(colors.red(`āŒ Failed: ${failedTests}`));
120
+ console.log(colors.blue(`šŸ“Š Total: ${tests.length}`));
121
+
122
+ if (failedTests === 0) {
123
+ console.log(colors.green('\nšŸŽ‰ All tests passed!'));
124
+ } else {
125
+ console.log(colors.red('\nāš ļø Some tests failed'));
126
+ }
127
+
128
+ // Additional manual test instructions
129
+ console.log('\n' + colors.bold('Manual Testing Instructions:'));
130
+ console.log('1. Test with actual Claude CLI (if available):');
131
+ console.log(' ./swarm-demo.ts "Build a simple calculator"');
132
+ console.log(' ./bin/claude-flow swarm "Create a REST API"');
133
+ console.log('\n2. Test various strategies:');
134
+ console.log(' ./swarm-demo.ts "Research best practices" --strategy research');
135
+ console.log(' ./swarm-demo.ts "Implement feature" --strategy development');
136
+ console.log('\n3. Test complex scenarios:');
137
+ console.log(' ./swarm-demo.ts "Migrate to microservices" --coordinator --review --parallel');
138
+ }
139
+
140
+ if (import.meta.main) {
141
+ await main();
142
+ }
@@ -0,0 +1,408 @@
1
+ #!/usr/bin/env tsx
2
+
3
+ /**
4
+ * Production Validation Summary Script
5
+ *
6
+ * Runs comprehensive validation checks and generates summary report
7
+ */
8
+
9
+ import * as fs from 'fs-extra';
10
+ import * as path from 'path';
11
+ import { execSync } from 'child_process';
12
+
13
+ interface ValidationResult {
14
+ category: string;
15
+ status: 'pass' | 'fail' | 'warning';
16
+ message: string;
17
+ details?: string[];
18
+ }
19
+
20
+ class ProductionValidator {
21
+ private results: ValidationResult[] = [];
22
+
23
+ async runAllValidations(): Promise<void> {
24
+ console.log('šŸ” Starting comprehensive production validation...\n');
25
+
26
+ await this.validateBuildSystem();
27
+ await this.validateTestInfrastructure();
28
+ await this.validateMockImplementations();
29
+ await this.validateSecurityConfiguration();
30
+ await this.validateEnvironmentSetup();
31
+ await this.validateDeploymentReadiness();
32
+
33
+ this.generateSummaryReport();
34
+ }
35
+
36
+ private async validateBuildSystem(): Promise<void> {
37
+ console.log('šŸ“¦ Validating build system...');
38
+
39
+ try {
40
+ // Check TypeScript compilation
41
+ execSync('npx tsc --noEmit', { stdio: 'pipe' });
42
+ this.addResult('Build System', 'pass', 'TypeScript compilation successful');
43
+ } catch (error) {
44
+ this.addResult('Build System', 'fail', 'TypeScript compilation failed', [
45
+ 'TypeScript compiler errors detected',
46
+ 'Build artifacts cannot be generated',
47
+ 'Deployment blocked'
48
+ ]);
49
+ }
50
+
51
+ // Check package.json integrity
52
+ try {
53
+ const packageJson = await fs.readJson('package.json');
54
+ if (packageJson.scripts?.build && packageJson.scripts?.test) {
55
+ this.addResult('Build Scripts', 'pass', 'Build and test scripts configured');
56
+ } else {
57
+ this.addResult('Build Scripts', 'warning', 'Some build scripts missing');
58
+ }
59
+ } catch (error) {
60
+ this.addResult('Build Scripts', 'fail', 'package.json validation failed');
61
+ }
62
+
63
+ // Check dependencies
64
+ try {
65
+ const lockExists = await fs.pathExists('package-lock.json') || await fs.pathExists('pnpm-lock.yaml');
66
+ if (lockExists) {
67
+ this.addResult('Dependencies', 'pass', 'Lock file present for reproducible builds');
68
+ } else {
69
+ this.addResult('Dependencies', 'warning', 'No lock file found');
70
+ }
71
+ } catch (error) {
72
+ this.addResult('Dependencies', 'fail', 'Dependency validation failed');
73
+ }
74
+ }
75
+
76
+ private async validateTestInfrastructure(): Promise<void> {
77
+ console.log('🧪 Validating test infrastructure...');
78
+
79
+ // Check Jest configuration
80
+ try {
81
+ const jestConfig = await fs.pathExists('jest.config.js');
82
+ if (jestConfig) {
83
+ this.addResult('Test Configuration', 'pass', 'Jest configuration found');
84
+ } else {
85
+ this.addResult('Test Configuration', 'fail', 'Jest configuration missing');
86
+ }
87
+ } catch (error) {
88
+ this.addResult('Test Configuration', 'fail', 'Test configuration validation failed');
89
+ }
90
+
91
+ // Check production test files
92
+ try {
93
+ const productionTestsDir = 'tests/production';
94
+ const testFiles = await fs.readdir(productionTestsDir).catch(() => []);
95
+
96
+ if (testFiles.length >= 5) {
97
+ this.addResult('Production Tests', 'pass', `Found ${testFiles.length} production test files`);
98
+ } else if (testFiles.length > 0) {
99
+ this.addResult('Production Tests', 'warning', `Only ${testFiles.length} production test files found`);
100
+ } else {
101
+ this.addResult('Production Tests', 'fail', 'No production test files found');
102
+ }
103
+ } catch (error) {
104
+ this.addResult('Production Tests', 'fail', 'Production test validation failed');
105
+ }
106
+
107
+ // Try to run tests
108
+ try {
109
+ execSync('npm test -- --passWithNoTests --silent', { stdio: 'pipe' });
110
+ this.addResult('Test Execution', 'pass', 'Test runner functional');
111
+ } catch (error) {
112
+ this.addResult('Test Execution', 'warning', 'Test runner has issues', [
113
+ 'Some tests may be failing',
114
+ 'Test configuration may need adjustment'
115
+ ]);
116
+ }
117
+ }
118
+
119
+ private async validateMockImplementations(): Promise<void> {
120
+ console.log('šŸŽ­ Validating mock implementations...');
121
+
122
+ const mockPatterns = [
123
+ /mock[A-Z]\w+/g,
124
+ /fake[A-Z]\w+/g,
125
+ /stub[A-Z]\w+/g,
126
+ /TODO.*implementation/gi,
127
+ /FIXME.*mock/gi
128
+ ];
129
+
130
+ const srcFiles = await this.getSourceFiles('src');
131
+ let mockCount = 0;
132
+ const mockFiles: string[] = [];
133
+
134
+ for (const file of srcFiles) {
135
+ if (file.includes('test') || file.includes('spec') || file.includes('mock-components.ts')) {
136
+ continue; // Skip test files and known mock files
137
+ }
138
+
139
+ try {
140
+ const content = await fs.readFile(file, 'utf8');
141
+ const hasMocks = mockPatterns.some(pattern => pattern.test(content));
142
+
143
+ if (hasMocks) {
144
+ mockCount++;
145
+ mockFiles.push(file);
146
+ }
147
+ } catch (error) {
148
+ // Skip files that can't be read
149
+ }
150
+ }
151
+
152
+ if (mockCount === 0) {
153
+ this.addResult('Mock Implementations', 'pass', 'No mock implementations found in production code');
154
+ } else if (mockCount <= 3) {
155
+ this.addResult('Mock Implementations', 'warning', `${mockCount} files with mock implementations found`, mockFiles);
156
+ } else {
157
+ this.addResult('Mock Implementations', 'fail', `${mockCount} files with mock implementations found`, mockFiles);
158
+ }
159
+ }
160
+
161
+ private async validateSecurityConfiguration(): Promise<void> {
162
+ console.log('šŸ”’ Validating security configuration...');
163
+
164
+ // Check for security-related environment variables
165
+ const securityEnvVars = ['JWT_SECRET', 'API_KEY', 'ENCRYPTION_KEY'];
166
+ const presentVars = securityEnvVars.filter(varName => process.env[varName]);
167
+
168
+ if (presentVars.length > 0) {
169
+ this.addResult('Security Environment', 'pass', `${presentVars.length} security environment variables configured`);
170
+ } else {
171
+ this.addResult('Security Environment', 'warning', 'No security environment variables found', [
172
+ 'This may be expected in development',
173
+ 'Ensure production deployment has proper secrets'
174
+ ]);
175
+ }
176
+
177
+ // Check for HTTPS enforcement
178
+ const nodeEnv = process.env.NODE_ENV || 'development';
179
+ if (nodeEnv === 'production') {
180
+ const httpsEnforced = process.env.FORCE_HTTPS === 'true';
181
+ if (httpsEnforced) {
182
+ this.addResult('HTTPS Enforcement', 'pass', 'HTTPS enforcement enabled for production');
183
+ } else {
184
+ this.addResult('HTTPS Enforcement', 'fail', 'HTTPS enforcement not configured for production');
185
+ }
186
+ } else {
187
+ this.addResult('HTTPS Enforcement', 'pass', 'HTTPS enforcement not required in development');
188
+ }
189
+
190
+ // Check for security headers configuration
191
+ try {
192
+ const securityConfigExists = await this.checkForSecurityConfig();
193
+ if (securityConfigExists) {
194
+ this.addResult('Security Headers', 'pass', 'Security configuration found');
195
+ } else {
196
+ this.addResult('Security Headers', 'warning', 'Security configuration not found');
197
+ }
198
+ } catch (error) {
199
+ this.addResult('Security Headers', 'fail', 'Security configuration validation failed');
200
+ }
201
+ }
202
+
203
+ private async validateEnvironmentSetup(): Promise<void> {
204
+ console.log('šŸŒ Validating environment setup...');
205
+
206
+ // Check Node.js version
207
+ const nodeVersion = process.version;
208
+ const majorVersion = parseInt(nodeVersion.slice(1).split('.')[0], 10);
209
+
210
+ if (majorVersion >= 20) {
211
+ this.addResult('Node.js Version', 'pass', `Node.js ${nodeVersion} (compatible)`);
212
+ } else if (majorVersion >= 18) {
213
+ this.addResult('Node.js Version', 'warning', `Node.js ${nodeVersion} (minimum supported)`);
214
+ } else {
215
+ this.addResult('Node.js Version', 'fail', `Node.js ${nodeVersion} (unsupported)`);
216
+ }
217
+
218
+ // Check environment variables
219
+ const requiredEnvVars = ['NODE_ENV'];
220
+ const missingVars = requiredEnvVars.filter(varName => !process.env[varName]);
221
+
222
+ if (missingVars.length === 0) {
223
+ this.addResult('Environment Variables', 'pass', 'Required environment variables present');
224
+ } else {
225
+ this.addResult('Environment Variables', 'warning', `Missing: ${missingVars.join(', ')}`);
226
+ }
227
+
228
+ // Check file system permissions
229
+ try {
230
+ const tempFile = path.join(process.cwd(), 'temp-permission-test.txt');
231
+ await fs.writeFile(tempFile, 'test');
232
+ await fs.remove(tempFile);
233
+ this.addResult('File Permissions', 'pass', 'File system permissions adequate');
234
+ } catch (error) {
235
+ this.addResult('File Permissions', 'fail', 'File system permission issues detected');
236
+ }
237
+ }
238
+
239
+ private async validateDeploymentReadiness(): Promise<void> {
240
+ console.log('šŸš€ Validating deployment readiness...');
241
+
242
+ // Check for required directories
243
+ const requiredDirs = ['src', 'tests', 'docs'];
244
+ const missingDirs = [];
245
+
246
+ for (const dir of requiredDirs) {
247
+ const exists = await fs.pathExists(dir);
248
+ if (!exists) {
249
+ missingDirs.push(dir);
250
+ }
251
+ }
252
+
253
+ if (missingDirs.length === 0) {
254
+ this.addResult('Directory Structure', 'pass', 'Required directories present');
255
+ } else {
256
+ this.addResult('Directory Structure', 'fail', `Missing directories: ${missingDirs.join(', ')}`);
257
+ }
258
+
259
+ // Check for health check implementation
260
+ const healthCheckFiles = await this.findHealthCheckFiles();
261
+ if (healthCheckFiles.length > 0) {
262
+ this.addResult('Health Checks', 'pass', `${healthCheckFiles.length} health check files found`);
263
+ } else {
264
+ this.addResult('Health Checks', 'warning', 'No health check implementation found');
265
+ }
266
+
267
+ // Check for deployment configuration
268
+ const deploymentConfigs = ['Dockerfile', 'docker-compose.yml', '.github/workflows'];
269
+ const foundConfigs = [];
270
+
271
+ for (const config of deploymentConfigs) {
272
+ const exists = await fs.pathExists(config);
273
+ if (exists) {
274
+ foundConfigs.push(config);
275
+ }
276
+ }
277
+
278
+ if (foundConfigs.length > 0) {
279
+ this.addResult('Deployment Configuration', 'pass', `Found: ${foundConfigs.join(', ')}`);
280
+ } else {
281
+ this.addResult('Deployment Configuration', 'warning', 'No deployment configuration found');
282
+ }
283
+ }
284
+
285
+ private addResult(category: string, status: 'pass' | 'fail' | 'warning', message: string, details?: string[]): void {
286
+ this.results.push({ category, status, message, details });
287
+ }
288
+
289
+ private generateSummaryReport(): void {
290
+ console.log('\nšŸ“Š PRODUCTION VALIDATION SUMMARY REPORT');
291
+ console.log('==========================================\n');
292
+
293
+ const passes = this.results.filter(r => r.status === 'pass').length;
294
+ const warnings = this.results.filter(r => r.status === 'warning').length;
295
+ const failures = this.results.filter(r => r.status === 'fail').length;
296
+ const total = this.results.length;
297
+
298
+ console.log(`Total Checks: ${total}`);
299
+ console.log(`āœ… Passed: ${passes}`);
300
+ console.log(`āš ļø Warnings: ${warnings}`);
301
+ console.log(`āŒ Failed: ${failures}\n`);
302
+
303
+ // Overall recommendation
304
+ if (failures === 0 && warnings <= 2) {
305
+ console.log('🟢 RECOMMENDATION: READY FOR PRODUCTION DEPLOYMENT');
306
+ } else if (failures <= 2 && warnings <= 5) {
307
+ console.log('🟔 RECOMMENDATION: READY FOR STAGING, REQUIRES FIXES FOR PRODUCTION');
308
+ } else {
309
+ console.log('šŸ”“ RECOMMENDATION: NOT READY FOR PRODUCTION DEPLOYMENT');
310
+ }
311
+
312
+ console.log('\nDetailed Results:');
313
+ console.log('-----------------');
314
+
315
+ this.results.forEach(result => {
316
+ const icon = result.status === 'pass' ? 'āœ…' : result.status === 'warning' ? 'āš ļø' : 'āŒ';
317
+ console.log(`${icon} ${result.category}: ${result.message}`);
318
+
319
+ if (result.details && result.details.length > 0) {
320
+ result.details.forEach(detail => {
321
+ console.log(` • ${detail}`);
322
+ });
323
+ }
324
+ });
325
+
326
+ // Save report to file
327
+ this.saveReportToFile();
328
+ }
329
+
330
+ private async saveReportToFile(): Promise<void> {
331
+ const reportData = {
332
+ timestamp: new Date().toISOString(),
333
+ summary: {
334
+ total: this.results.length,
335
+ passed: this.results.filter(r => r.status === 'pass').length,
336
+ warnings: this.results.filter(r => r.status === 'warning').length,
337
+ failed: this.results.filter(r => r.status === 'fail').length
338
+ },
339
+ results: this.results
340
+ };
341
+
342
+ const reportPath = path.join('docs', 'validation-summary-report.json');
343
+ await fs.ensureDir(path.dirname(reportPath));
344
+ await fs.writeJson(reportPath, reportData, { spaces: 2 });
345
+
346
+ console.log(`\nšŸ“„ Detailed report saved to: ${reportPath}`);
347
+ }
348
+
349
+ private async getSourceFiles(dir: string): Promise<string[]> {
350
+ const files: string[] = [];
351
+
352
+ try {
353
+ const entries = await fs.readdir(dir, { withFileTypes: true });
354
+
355
+ for (const entry of entries) {
356
+ const fullPath = path.join(dir, entry.name);
357
+
358
+ if (entry.isDirectory() && !entry.name.startsWith('.') && entry.name !== 'node_modules') {
359
+ const subFiles = await this.getSourceFiles(fullPath);
360
+ files.push(...subFiles);
361
+ } else if (entry.isFile() && (entry.name.endsWith('.ts') || entry.name.endsWith('.js'))) {
362
+ files.push(fullPath);
363
+ }
364
+ }
365
+ } catch (error) {
366
+ // Skip directories that can't be read
367
+ }
368
+
369
+ return files;
370
+ }
371
+
372
+ private async checkForSecurityConfig(): Promise<boolean> {
373
+ const securityFiles = [
374
+ 'src/enterprise/security-manager.ts',
375
+ 'src/config/security.ts',
376
+ 'config/security.json'
377
+ ];
378
+
379
+ for (const file of securityFiles) {
380
+ if (await fs.pathExists(file)) {
381
+ return true;
382
+ }
383
+ }
384
+
385
+ return false;
386
+ }
387
+
388
+ private async findHealthCheckFiles(): Promise<string[]> {
389
+ const healthCheckFiles: string[] = [];
390
+ const files = await this.getSourceFiles('src');
391
+
392
+ for (const file of files) {
393
+ if (file.includes('health') || file.includes('monitoring')) {
394
+ healthCheckFiles.push(file);
395
+ }
396
+ }
397
+
398
+ return healthCheckFiles;
399
+ }
400
+ }
401
+
402
+ // Run validation if script is executed directly
403
+ if (import.meta.url === `file://${process.argv[1]}`) {
404
+ const validator = new ProductionValidator();
405
+ validator.runAllValidations().catch(console.error);
406
+ }
407
+
408
+ export { ProductionValidator };