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,438 @@
1
+ /**
2
+ * Build Optimizer - Implementing issue #772 performance improvements
3
+ *
4
+ * Achieves 51% faster build times through:
5
+ * - File consolidation and removal of unnecessary files
6
+ * - Dependency optimization
7
+ * - Incremental compilation
8
+ * - Build cache management
9
+ */
10
+
11
+ const fs = require('fs').promises;
12
+ const path = require('path');
13
+ const { execSync } = require('child_process');
14
+
15
+ class BuildOptimizer {
16
+ constructor(options = {}) {
17
+ this.projectRoot = options.projectRoot || process.cwd();
18
+ this.buildCache = new Map();
19
+ this.stats = {
20
+ filesRemoved: 0,
21
+ duplicatesConsolidated: 0,
22
+ buildTimeImprovement: 0,
23
+ spaceSaved: 0,
24
+ };
25
+
26
+ // Files to remove based on #772 (32 UI-related files removed)
27
+ this.filesToRemove = [
28
+ // UI files that aren't needed for core functionality
29
+ 'src/ui/console/**/*.css',
30
+ 'src/ui/console/**/*.html',
31
+ 'src/ui/portal/**/*.legacy.*',
32
+ 'dist/ui/**/*.map.old',
33
+ // Old test files
34
+ 'src/**/*.test.old.js',
35
+ 'tests/**/*.legacy.test.ts',
36
+ // Temporary and build artifacts
37
+ '**/*.tmp',
38
+ '**/*.bak',
39
+ 'dist/**/*.js.map.old',
40
+ // Documentation that's moved to wiki
41
+ 'docs/legacy/**',
42
+ 'README.old.md',
43
+ // Old configuration files
44
+ 'config/**/*.old.*',
45
+ '.eslintrc.old.json',
46
+ 'tsconfig.old.json',
47
+ ];
48
+
49
+ // Duplicate patterns to consolidate
50
+ this.duplicatePatterns = [
51
+ {
52
+ pattern: 'src/agents/**/types.ts',
53
+ consolidateTo: 'src/types/agent-types.ts',
54
+ },
55
+ {
56
+ pattern: 'src/**/logger.ts',
57
+ consolidateTo: 'src/core/logger.ts',
58
+ },
59
+ {
60
+ pattern: 'src/**/helpers.ts',
61
+ consolidateTo: 'src/utils/helpers.ts',
62
+ },
63
+ ];
64
+ }
65
+
66
+ async optimize() {
67
+ console.log('šŸš€ Starting build optimization...');
68
+
69
+ const startTime = Date.now();
70
+
71
+ try {
72
+ // Phase 1: Remove unnecessary files
73
+ await this.removeUnnecessaryFiles();
74
+
75
+ // Phase 2: Consolidate duplicates
76
+ await this.consolidateDuplicates();
77
+
78
+ // Phase 3: Optimize dependencies
79
+ await this.optimizeDependencies();
80
+
81
+ // Phase 4: Setup incremental compilation
82
+ await this.setupIncrementalCompilation();
83
+
84
+ // Phase 5: Optimize build cache
85
+ await this.optimizeBuildCache();
86
+
87
+ const endTime = Date.now();
88
+ this.stats.buildTimeImprovement = endTime - startTime;
89
+
90
+ console.log('āœ… Build optimization complete!');
91
+ this.printStats();
92
+
93
+ return this.stats;
94
+ } catch (error) {
95
+ console.error('āŒ Build optimization failed:', error);
96
+ throw error;
97
+ }
98
+ }
99
+
100
+ async removeUnnecessaryFiles() {
101
+ console.log('🧹 Removing unnecessary files...');
102
+
103
+ for (const pattern of this.filesToRemove) {
104
+ try {
105
+ const files = await this.glob(pattern);
106
+
107
+ for (const file of files) {
108
+ const filePath = path.join(this.projectRoot, file);
109
+ const stats = await fs.stat(filePath).catch(() => null);
110
+
111
+ if (stats) {
112
+ await fs.unlink(filePath);
113
+ this.stats.filesRemoved++;
114
+ this.stats.spaceSaved += stats.size;
115
+ console.log(` Removed: ${file}`);
116
+ }
117
+ }
118
+ } catch (error) {
119
+ console.warn(` Warning: Could not process pattern ${pattern}:`, error.message);
120
+ }
121
+ }
122
+
123
+ console.log(` āœ… Removed ${this.stats.filesRemoved} files, saved ${this.formatBytes(this.stats.spaceSaved)}`);
124
+ }
125
+
126
+ async consolidateDuplicates() {
127
+ console.log('šŸ”„ Consolidating duplicate files...');
128
+
129
+ for (const { pattern, consolidateTo } of this.duplicatePatterns) {
130
+ try {
131
+ const files = await this.glob(pattern);
132
+ const targetPath = path.join(this.projectRoot, consolidateTo);
133
+
134
+ if (files.length > 1) {
135
+ // Analyze and merge duplicate files
136
+ const mergedContent = await this.mergeDuplicateFiles(files, consolidateTo);
137
+
138
+ // Ensure target directory exists
139
+ await fs.mkdir(path.dirname(targetPath), { recursive: true });
140
+
141
+ // Write consolidated file
142
+ await fs.writeFile(targetPath, mergedContent);
143
+
144
+ // Remove duplicates (keep the target)
145
+ for (const file of files) {
146
+ const filePath = path.join(this.projectRoot, file);
147
+ if (filePath !== targetPath) {
148
+ await fs.unlink(filePath);
149
+ this.stats.duplicatesConsolidated++;
150
+ }
151
+ }
152
+
153
+ console.log(` āœ… Consolidated ${files.length - 1} duplicates into ${consolidateTo}`);
154
+ }
155
+ } catch (error) {
156
+ console.warn(` Warning: Could not consolidate ${pattern}:`, error.message);
157
+ }
158
+ }
159
+ }
160
+
161
+ async optimizeDependencies() {
162
+ console.log('šŸ“¦ Optimizing dependencies...');
163
+
164
+ try {
165
+ // Analyze package.json for optimization opportunities
166
+ const packageJsonPath = path.join(this.projectRoot, 'package.json');
167
+ const packageJson = JSON.parse(await fs.readFile(packageJsonPath, 'utf8'));
168
+
169
+ // Remove unused dependencies
170
+ const unusedDeps = await this.findUnusedDependencies(packageJson);
171
+
172
+ if (unusedDeps.length > 0) {
173
+ console.log(` Found ${unusedDeps.length} potentially unused dependencies:`);
174
+ unusedDeps.forEach(dep => console.log(` - ${dep}`));
175
+
176
+ // Note: Don't automatically remove - just report
177
+ console.log(` āš ļø Review these dependencies manually before removing`);
178
+ }
179
+
180
+ // Optimize development dependencies
181
+ await this.optimizeDevDependencies(packageJson, packageJsonPath);
182
+
183
+ console.log(' āœ… Dependency optimization complete');
184
+ } catch (error) {
185
+ console.warn(' Warning: Could not optimize dependencies:', error.message);
186
+ }
187
+ }
188
+
189
+ async setupIncrementalCompilation() {
190
+ console.log('⚔ Setting up incremental compilation...');
191
+
192
+ try {
193
+ // Update TypeScript config for incremental compilation
194
+ const tsconfigPath = path.join(this.projectRoot, 'config/typescript/tsconfig.json');
195
+ const tsconfig = JSON.parse(await fs.readFile(tsconfigPath, 'utf8'));
196
+
197
+ // Enable incremental compilation
198
+ tsconfig.compilerOptions = {
199
+ ...tsconfig.compilerOptions,
200
+ incremental: true,
201
+ tsBuildInfoFile: path.join(this.projectRoot, '.tsbuild/buildinfo.json'),
202
+ composite: false, // Disable if not using project references
203
+ };
204
+
205
+ // Create .tsbuild directory
206
+ await fs.mkdir(path.join(this.projectRoot, '.tsbuild'), { recursive: true });
207
+
208
+ await fs.writeFile(tsconfigPath, JSON.stringify(tsconfig, null, 2));
209
+
210
+ console.log(' āœ… Incremental compilation enabled');
211
+ } catch (error) {
212
+ console.warn(' Warning: Could not setup incremental compilation:', error.message);
213
+ }
214
+ }
215
+
216
+ async optimizeBuildCache() {
217
+ console.log('šŸ’¾ Optimizing build cache...');
218
+
219
+ try {
220
+ // Setup SWC cache optimization
221
+ const swcrcPath = path.join(this.projectRoot, '.swcrc');
222
+
223
+ if (await this.fileExists(swcrcPath)) {
224
+ const swcConfig = JSON.parse(await fs.readFile(swcrcPath, 'utf8'));
225
+
226
+ // Enable caching
227
+ swcConfig.env = {
228
+ ...swcConfig.env,
229
+ caching: true,
230
+ cacheRoot: '.swc-cache',
231
+ };
232
+
233
+ await fs.writeFile(swcrcPath, JSON.stringify(swcConfig, null, 2));
234
+ }
235
+
236
+ // Create cache directories
237
+ await fs.mkdir(path.join(this.projectRoot, '.swc-cache'), { recursive: true });
238
+ await fs.mkdir(path.join(this.projectRoot, 'node_modules/.cache'), { recursive: true });
239
+
240
+ console.log(' āœ… Build cache optimized');
241
+ } catch (error) {
242
+ console.warn(' Warning: Could not optimize build cache:', error.message);
243
+ }
244
+ }
245
+
246
+ async mergeDuplicateFiles(files, targetPath) {
247
+ const imports = new Set();
248
+ const exports = new Set();
249
+ const interfaces = new Map();
250
+ const types = new Map();
251
+ const functions = new Map();
252
+
253
+ for (const file of files) {
254
+ const filePath = path.join(this.projectRoot, file);
255
+
256
+ try {
257
+ const content = await fs.readFile(filePath, 'utf8');
258
+
259
+ // Extract imports
260
+ const importMatches = content.match(/^import\s+.*?from\s+['"][^'"]+['"];?$/gm);
261
+ if (importMatches) {
262
+ importMatches.forEach(imp => imports.add(imp.trim()));
263
+ }
264
+
265
+ // Extract exports
266
+ const exportMatches = content.match(/^export\s+.*?$/gm);
267
+ if (exportMatches) {
268
+ exportMatches.forEach(exp => exports.add(exp.trim()));
269
+ }
270
+
271
+ // Extract interfaces and types (simplified)
272
+ const interfaceMatches = content.match(/export\s+interface\s+(\w+)[\s\S]*?^}/gm);
273
+ if (interfaceMatches) {
274
+ interfaceMatches.forEach(int => {
275
+ const name = int.match(/interface\s+(\w+)/)?.[1];
276
+ if (name && !interfaces.has(name)) {
277
+ interfaces.set(name, int);
278
+ }
279
+ });
280
+ }
281
+
282
+ } catch (error) {
283
+ console.warn(` Warning: Could not process file ${file}:`, error.message);
284
+ }
285
+ }
286
+
287
+ // Build merged content
288
+ const mergedContent = [
289
+ '/**',
290
+ ` * Consolidated ${targetPath}`,
291
+ ' * Auto-generated by build optimizer',
292
+ ' */',
293
+ '',
294
+ ...Array.from(imports),
295
+ '',
296
+ ...Array.from(interfaces.values()),
297
+ '',
298
+ ...Array.from(types.values()),
299
+ '',
300
+ ...Array.from(functions.values()),
301
+ '',
302
+ ...Array.from(exports),
303
+ ].join('\n');
304
+
305
+ return mergedContent;
306
+ }
307
+
308
+ async findUnusedDependencies(packageJson) {
309
+ const dependencies = {
310
+ ...packageJson.dependencies,
311
+ ...packageJson.devDependencies,
312
+ };
313
+
314
+ const unusedDeps = [];
315
+
316
+ for (const dep of Object.keys(dependencies)) {
317
+ try {
318
+ // Simple check: search for import/require statements
319
+ const result = execSync(
320
+ `grep -r "from ['\"]${dep}['\"]\\|require(['\"]${dep}['\"])" src/ --include="*.ts" --include="*.js" --include="*.tsx" --include="*.jsx"`,
321
+ { encoding: 'utf8', cwd: this.projectRoot }
322
+ );
323
+
324
+ if (!result.trim()) {
325
+ unusedDeps.push(dep);
326
+ }
327
+ } catch (error) {
328
+ // No matches found - potentially unused
329
+ if (error.status === 1) {
330
+ unusedDeps.push(dep);
331
+ }
332
+ }
333
+ }
334
+
335
+ return unusedDeps;
336
+ }
337
+
338
+ async optimizeDevDependencies(packageJson, packageJsonPath) {
339
+ // Move runtime dependencies that should be dev dependencies
340
+ const devOnlyPackages = [
341
+ '@types/',
342
+ 'eslint',
343
+ 'prettier',
344
+ 'jest',
345
+ 'playwright',
346
+ '@playwright/',
347
+ 'typescript',
348
+ '@typescript-eslint/',
349
+ '@swc/',
350
+ 'babel-',
351
+ '@babel/',
352
+ ];
353
+
354
+ let modified = false;
355
+ const deps = packageJson.dependencies || {};
356
+ const devDeps = packageJson.devDependencies || {};
357
+
358
+ for (const dep of Object.keys(deps)) {
359
+ if (devOnlyPackages.some(pattern => dep.startsWith(pattern))) {
360
+ devDeps[dep] = deps[dep];
361
+ delete deps[dep];
362
+ modified = true;
363
+ console.log(` Moved ${dep} to devDependencies`);
364
+ }
365
+ }
366
+
367
+ if (modified) {
368
+ packageJson.dependencies = deps;
369
+ packageJson.devDependencies = devDeps;
370
+ await fs.writeFile(packageJsonPath, JSON.stringify(packageJson, null, 2));
371
+ }
372
+ }
373
+
374
+ async glob(pattern) {
375
+ // Simple glob implementation - in production, use a proper glob library
376
+ const files = [];
377
+
378
+ try {
379
+ const result = execSync(`find . -path "./${pattern}" 2>/dev/null || true`, {
380
+ encoding: 'utf8',
381
+ cwd: this.projectRoot,
382
+ });
383
+
384
+ files.push(...result.split('\n').filter(f => f.trim()).map(f => f.replace('./', '')));
385
+ } catch (error) {
386
+ // Ignore errors for glob patterns
387
+ }
388
+
389
+ return files;
390
+ }
391
+
392
+ async fileExists(filePath) {
393
+ try {
394
+ await fs.access(filePath);
395
+ return true;
396
+ } catch {
397
+ return false;
398
+ }
399
+ }
400
+
401
+ formatBytes(bytes) {
402
+ if (bytes === 0) return '0 Bytes';
403
+ const k = 1024;
404
+ const sizes = ['Bytes', 'KB', 'MB', 'GB'];
405
+ const i = Math.floor(Math.log(bytes) / Math.log(k));
406
+ return parseFloat((bytes / Math.pow(k, i)).toFixed(2)) + ' ' + sizes[i];
407
+ }
408
+
409
+ printStats() {
410
+ console.log('\nšŸ“Š Optimization Results:');
411
+ console.log(` Files removed: ${this.stats.filesRemoved}`);
412
+ console.log(` Duplicates consolidated: ${this.stats.duplicatesConsolidated}`);
413
+ console.log(` Space saved: ${this.formatBytes(this.stats.spaceSaved)}`);
414
+ console.log(` Optimization time: ${this.stats.buildTimeImprovement}ms`);
415
+ console.log('\nšŸŽÆ Expected improvements:');
416
+ console.log(' • 51% faster build times');
417
+ console.log(' • Reduced bundle size');
418
+ console.log(' • Better incremental compilation');
419
+ console.log(' • Improved cache efficiency');
420
+ }
421
+ }
422
+
423
+ // CLI interface
424
+ if (require.main === module) {
425
+ const optimizer = new BuildOptimizer();
426
+
427
+ optimizer.optimize()
428
+ .then(stats => {
429
+ console.log('\nāœ… Build optimization completed successfully!');
430
+ process.exit(0);
431
+ })
432
+ .catch(error => {
433
+ console.error('\nāŒ Build optimization failed:', error);
434
+ process.exit(1);
435
+ });
436
+ }
437
+
438
+ module.exports = BuildOptimizer;