claude-flow-novice 2.3.4 ā 2.3.6
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.
- package/dist/src/booster/performance-benchmark.js +1 -1
- package/dist/src/booster/wasm-demo.js +1 -1
- package/dist/src/cli/command-registry.js +2 -2
- package/dist/src/cli/help-formatter.js +137 -109
- package/dist/src/cli/simple-cli.js +2528 -2121
- package/dist/src/cli/simple-commands/sparc/refinement.js +3 -3
- package/dist/src/cli/validation-helper.js +98 -49
- package/dist/src/commands/suggest-templates.js +4 -4
- package/dist/src/core/version.js +23 -15
- package/dist/src/memory/swarm-memory.js +603 -470
- package/dist/src/slash-commands/fullstack.js +2 -2
- package/dist/src/slash-commands/parse-epic.js +1 -1
- package/package.json +1 -1
- package/scripts/postinstall.js +41 -31
- package/dist/scripts/.claude-flow/metrics/agent-metrics.json +0 -1
- package/dist/scripts/.claude-flow/metrics/performance.json +0 -9
- package/dist/scripts/.claude-flow/metrics/task-metrics.json +0 -10
- package/dist/scripts/CLEANUP_OPTIMIZATION_REPORT.json +0 -312
- package/dist/scripts/CLEANUP_PERFORMANCE_OPTIMIZATION.md +0 -387
- package/dist/scripts/CLEANUP_QUICK_START.md +0 -268
- package/dist/scripts/CLEANUP_TEST_RESULTS.md +0 -205
- package/dist/scripts/README.md +0 -339
- package/dist/scripts/ace-query.sh +0 -384
- package/dist/scripts/agent-token-analysis.js +0 -430
- package/dist/scripts/auto-setup.js +0 -332
- package/dist/scripts/build/README.md +0 -167
- package/dist/scripts/build/build-config.js +0 -27
- package/dist/scripts/build/build-prompt-copier.sh +0 -30
- package/dist/scripts/build/performance-monitor.js +0 -869
- package/dist/scripts/build/prepare-publish.js +0 -150
- package/dist/scripts/build/typescript-fixer.js +0 -621
- package/dist/scripts/build/unified-builder.sh +0 -428
- package/dist/scripts/build/update-bin-version.js +0 -32
- package/dist/scripts/build/validate-agents.js +0 -238
- package/dist/scripts/build-index.js +0 -43
- package/dist/scripts/build-orchestrator.js +0 -320
- package/dist/scripts/check-routing-stats.cjs +0 -122
- package/dist/scripts/ci-validation.js +0 -375
- package/dist/scripts/cleanup-blocking-coordination.sh +0 -420
- package/dist/scripts/cleanup-idle-sessions.sh +0 -118
- package/dist/scripts/collect-build-metrics.js +0 -65
- package/dist/scripts/demo/README.md +0 -79
- package/dist/scripts/demo/autoscaling-demo-simplified.js +0 -963
- package/dist/scripts/demo/comprehensive-dashboard-test.js +0 -693
- package/dist/scripts/demo/confidence-log.js +0 -87
- package/dist/scripts/demo/confidence-report.js +0 -82
- package/dist/scripts/demo/demo-multi-swarm-coordination.js +0 -325
- package/dist/scripts/demo/demo-production-deployment.js +0 -399
- package/dist/scripts/demo/demo-visualization-system.js +0 -149
- package/dist/scripts/demo/performance-analysis.cjs +0 -71
- package/dist/scripts/demo/performance-analysis.js +0 -71
- package/dist/scripts/demo/test-autoscaling-demo.js +0 -314
- package/dist/scripts/dependency-optimizer.js +0 -349
- package/dist/scripts/dependency-security-assessment.js +0 -331
- package/dist/scripts/deploy-sdk.sh +0 -176
- package/dist/scripts/deployment-readiness-report.json +0 -179
- package/dist/scripts/dev/README.md +0 -264
- package/dist/scripts/dev/claude-flow-wrapper.sh +0 -35
- package/dist/scripts/dev/claude-monitor.py +0 -419
- package/dist/scripts/dev/claude-sparc.sh +0 -562
- package/dist/scripts/dev/claude-wrapper.sh +0 -17
- package/dist/scripts/dev/demo-phase3-compliance.js +0 -172
- package/dist/scripts/dev/demo-task-system.ts +0 -224
- package/dist/scripts/dev/deployment-validator.js +0 -315
- package/dist/scripts/dev/spawn-claude-terminal.sh +0 -32
- package/dist/scripts/dev/start-portal.sh +0 -506
- package/dist/scripts/dev/start-web-ui.js +0 -15
- package/dist/scripts/dev/stop-portal.sh +0 -311
- package/dist/scripts/dev/validate-examples.ts +0 -288
- package/dist/scripts/dev/validate-phase2.cjs +0 -451
- package/dist/scripts/dev/validate-phase2.js +0 -785
- package/dist/scripts/dev/validate-phase3.cjs +0 -208
- package/dist/scripts/dev/validate-security-remediation.js +0 -1
- package/dist/scripts/ecosystem.config.cjs +0 -90
- package/dist/scripts/enhanced-memory-spiral-killer.sh +0 -221
- package/dist/scripts/fix-js-extensions.js +0 -167
- package/dist/scripts/generate-basic-types.js +0 -73
- package/dist/scripts/generate-changelog.js +0 -318
- package/dist/scripts/git-hooks/pre-commit.sh +0 -143
- package/dist/scripts/health-checks.js +0 -634
- package/dist/scripts/hook-wrapper.sh +0 -54
- package/dist/scripts/install/README.md +0 -375
- package/dist/scripts/install/REDIS_SETUP_VALIDATION.json +0 -245
- package/dist/scripts/install/check-prerequisites.js +0 -303
- package/dist/scripts/install/config-wizard.js +0 -606
- package/dist/scripts/install/dependency-checker.js +0 -385
- package/dist/scripts/install/health-check.js +0 -765
- package/dist/scripts/install/install.js +0 -256
- package/dist/scripts/install/installation-benchmark.js +0 -461
- package/dist/scripts/install/quick-install.js +0 -720
- package/dist/scripts/install/quick-start-wizard.js +0 -295
- package/dist/scripts/install/redis-cli.js +0 -289
- package/dist/scripts/install/redis-install-guides.md +0 -407
- package/dist/scripts/install/redis-setup.js +0 -559
- package/dist/scripts/install/redis-test.js +0 -278
- package/dist/scripts/install/service-manager.js +0 -672
- package/dist/scripts/install/setup.js +0 -832
- package/dist/scripts/install/uninstall.js +0 -526
- package/dist/scripts/install/update.js +0 -461
- package/dist/scripts/install-pre-commit-hook.sh +0 -127
- package/dist/scripts/legacy/README.md +0 -272
- package/dist/scripts/legacy/batch-fix-ts.sh +0 -54
- package/dist/scripts/legacy/build-migration.sh +0 -105
- package/dist/scripts/legacy/build-monitor.js +0 -209
- package/dist/scripts/legacy/build-with-filter.sh +0 -84
- package/dist/scripts/legacy/build-workaround.sh +0 -71
- package/dist/scripts/legacy/fix-ts-advanced.js +0 -358
- package/dist/scripts/legacy/fix-ts-final.sh +0 -50
- package/dist/scripts/legacy/fix-ts-targeted.sh +0 -49
- package/dist/scripts/legacy/fix-typescript-errors.js +0 -305
- package/dist/scripts/legacy/force-build.sh +0 -63
- package/dist/scripts/legacy/optimize-performance.js +0 -400
- package/dist/scripts/legacy/performance-monitor.js +0 -263
- package/dist/scripts/legacy/performance-monitoring.js +0 -532
- package/dist/scripts/legacy/performance-test-runner.js +0 -645
- package/dist/scripts/legacy/quick-fix-ts.js +0 -281
- package/dist/scripts/legacy/safe-build.sh +0 -63
- package/dist/scripts/memory-monitor-coordinator.js +0 -451
- package/dist/scripts/migrate-to-sdk.sh +0 -520
- package/dist/scripts/migration/QUICK-START.md +0 -189
- package/dist/scripts/migration/QUICK-START.md.backup-1760135091363 +0 -189
- package/dist/scripts/migration/README.md +0 -464
- package/dist/scripts/migration/TASK-1.3.2-COMPLETION-REPORT.md +0 -500
- package/dist/scripts/migration/TASK-1.3.2-COMPLETION-REPORT.md.backup-1760135091348 +0 -500
- package/dist/scripts/migration/UPDATE-PATHS-README.md +0 -464
- package/dist/scripts/migration/UPDATE-PATHS-README.md.backup-1760135091337 +0 -464
- package/dist/scripts/migration/example-patterns.json +0 -19
- package/dist/scripts/migration/install-arm64.js +0 -78
- package/dist/scripts/migration/install.js +0 -83
- package/dist/scripts/migration/migrate-hooks.js +0 -173
- package/dist/scripts/migration/migration-examples.ts +0 -318
- package/dist/scripts/migration/reorganize-workspace.js +0 -504
- package/dist/scripts/migration/test-update-paths.js +0 -359
- package/dist/scripts/migration/update-paths.js +0 -664
- package/dist/scripts/migration/validate-migration.js +0 -647
- package/dist/scripts/monitor-loop.sh +0 -65
- package/dist/scripts/monitor-memory.sh +0 -47
- package/dist/scripts/monitor-migration.js +0 -339
- package/dist/scripts/monitor.py +0 -43
- package/dist/scripts/monitoring/README.md +0 -178
- package/dist/scripts/monitoring/alert-monitor.sh +0 -220
- package/dist/scripts/monitoring/analyze-resources.sh +0 -199
- package/dist/scripts/monitoring/dashboards/rate-limiting-dashboard.json +0 -211
- package/dist/scripts/monitoring/dynamic-monitor.sh +0 -85
- package/dist/scripts/monitoring/launch-stability-test.sh +0 -184
- package/dist/scripts/monitoring/monitor-test.sh +0 -93
- package/dist/scripts/monitoring/pre-test-validation.sh +0 -208
- package/dist/scripts/monitoring/quick-test-alerting.sh +0 -118
- package/dist/scripts/monitoring/quick-test-rate-limiting.sh +0 -206
- package/dist/scripts/monitoring/rate-limiting-monitor.sh +0 -380
- package/dist/scripts/monitoring/resource-monitor.sh +0 -126
- package/dist/scripts/monitoring/stability-monitor.js +0 -429
- package/dist/scripts/monitoring/test-monitor-quick.sh +0 -54
- package/dist/scripts/monitoring/view-alerts.sh +0 -307
- package/dist/scripts/npm-metrics-collector.js +0 -482
- package/dist/scripts/npm-package-validation.cjs +0 -299
- package/dist/scripts/optimization/build-optimizer.js +0 -438
- package/dist/scripts/optimization/config-validator.js +0 -761
- package/dist/scripts/optimization/test-optimization.js +0 -432
- package/dist/scripts/optimization/unified-activation.js +0 -839
- package/dist/scripts/optimize-package-swarm.js +0 -54
- package/dist/scripts/performance/ACTIVATION_COMMANDS.md +0 -292
- package/dist/scripts/performance/sqlite-enhanced-activation.sh +0 -583
- package/dist/scripts/performance/test-enhanced-backend.sh +0 -504
- package/dist/scripts/performance-monitor.js +0 -644
- package/dist/scripts/performance-test-runner.js +0 -698
- package/dist/scripts/post-deployment-monitoring.js +0 -350
- package/dist/scripts/post-edit-pipeline.js +0 -2091
- package/dist/scripts/post-install-claude-md.js +0 -78
- package/dist/scripts/postinstall.js +0 -84
- package/dist/scripts/pre-publish-validation.cjs +0 -212
- package/dist/scripts/pre-publish-validation.js +0 -429
- package/dist/scripts/redis-lua/cleanup-blocking-coordination.lua +0 -198
- package/dist/scripts/release-announcement.js +0 -425
- package/dist/scripts/release-notification.js +0 -248
- package/dist/scripts/release-rollback.js +0 -376
- package/dist/scripts/release-validation.js +0 -460
- package/dist/scripts/rollback-sdk.sh +0 -66
- package/dist/scripts/run-production-validation.ts +0 -590
- package/dist/scripts/run-stability-validation.sh +0 -687
- package/dist/scripts/security/README.md +0 -339
- package/dist/scripts/security/deployment-validation.cjs +0 -279
- package/dist/scripts/security/envelope-encryption-confidence-report.cjs +0 -422
- package/dist/scripts/security/install-git-hooks.sh +0 -132
- package/dist/scripts/security/install-git-secrets.sh +0 -295
- package/dist/scripts/security/rotate-api-keys.js +0 -469
- package/dist/scripts/security/ruv-swarm-safe.js +0 -74
- package/dist/scripts/security/security-audit.cjs +0 -538
- package/dist/scripts/security/setup-redis-auth.sh +0 -397
- package/dist/scripts/security/validate-envelope-encryption.cjs +0 -340
- package/dist/scripts/security-scan.js +0 -492
- package/dist/scripts/src/web/frontend/.claude-flow/metrics/agent-metrics.json +0 -1
- package/dist/scripts/src/web/frontend/.claude-flow/metrics/performance.json +0 -9
- package/dist/scripts/src/web/frontend/.claude-flow/metrics/task-metrics.json +0 -10
- package/dist/scripts/switch-api.sh +0 -159
- package/dist/scripts/sync-agents.js +0 -290
- package/dist/scripts/test/50-agent-test.js +0 -625
- package/dist/scripts/test/NEW_STABILITY_TEST_GUIDE.md +0 -407
- package/dist/scripts/test/README.md +0 -236
- package/dist/scripts/test/STABILITY_TEST_EXAMPLE.md +0 -347
- package/dist/scripts/test/STABILITY_TEST_README.md +0 -480
- package/dist/scripts/test/agent-worker.js +0 -309
- package/dist/scripts/test/ai-coordination-test.js +0 -650
- package/dist/scripts/test/ai-mesh-coordination-test.js +0 -416
- package/dist/scripts/test/check-links.ts +0 -274
- package/dist/scripts/test/check-performance-regression.ts +0 -168
- package/dist/scripts/test/cli-agent-coordination-test.js +0 -313
- package/dist/scripts/test/coordinator-multilingual-test.js +0 -396
- package/dist/scripts/test/coordinator-transparency-demo.js +0 -585
- package/dist/scripts/test/coverage-report.ts +0 -692
- package/dist/scripts/test/generate-swarm-tests.js +0 -633
- package/dist/scripts/test/integration-test-validation.cjs +0 -253
- package/dist/scripts/test/load-test-swarm.js +0 -576
- package/dist/scripts/test/mesh-coordination-zero-overlap-test.js +0 -740
- package/dist/scripts/test/multilingual-hello-world-test.js +0 -390
- package/dist/scripts/test/quick-multilingual-demo.js +0 -464
- package/dist/scripts/test/real-agent-test.js +0 -312
- package/dist/scripts/test/run-phase3-compliance-tests.js +0 -427
- package/dist/scripts/test/run-stability-test-examples.sh +0 -292
- package/dist/scripts/test/stability-results/stability-metrics.jsonl +0 -83
- package/dist/scripts/test/stability-results/stability-test-report.json +0 -128
- package/dist/scripts/test/stability-results/stability-test.log +0 -1827
- package/dist/scripts/test/stability-test-50-agents.js +0 -734
- package/dist/scripts/test/test-batch-tasks.ts +0 -29
- package/dist/scripts/test/test-byzantine-resolution.js +0 -246
- package/dist/scripts/test/test-claude-spawn-options.sh +0 -63
- package/dist/scripts/test/test-cli-wizard.js +0 -331
- package/dist/scripts/test/test-comprehensive.js +0 -401
- package/dist/scripts/test/test-coordination-features.ts +0 -238
- package/dist/scripts/test/test-fallback-systems.js +0 -276
- package/dist/scripts/test/test-init-command.ts +0 -302
- package/dist/scripts/test/test-mcp.ts +0 -251
- package/dist/scripts/test/test-runner.ts +0 -568
- package/dist/scripts/test/test-swarm-integration.sh +0 -92
- package/dist/scripts/test/test-swarm.ts +0 -142
- package/dist/scripts/test/validation-summary.ts +0 -408
- package/dist/scripts/test-cleanup-performance.sh +0 -416
- package/dist/scripts/test-dashboard-auth.cjs +0 -203
- package/dist/scripts/test-docker-deployment.sh +0 -207
- package/dist/scripts/test-npm-package.cjs +0 -167
- package/dist/scripts/test-provider-routing.cjs +0 -226
- package/dist/scripts/test-routing-telemetry.cjs +0 -147
- package/dist/scripts/test-runner.cjs +0 -154
- package/dist/scripts/test-zai-10k.cjs +0 -81
- package/dist/scripts/test-zai-api.cjs +0 -191
- package/dist/scripts/test-zai-diagnostic.cjs +0 -151
- package/dist/scripts/test-zai-final.cjs +0 -128
- package/dist/scripts/test-zai-with-env.cjs +0 -85
- package/dist/scripts/toggle-cost-savings.cjs +0 -302
- package/dist/scripts/unified-memory-monitor.js +0 -526
- package/dist/scripts/utils/README.md +0 -261
- package/dist/scripts/utils/clean-build-artifacts.sh +0 -94
- package/dist/scripts/utils/cleanup-root.sh +0 -69
- package/dist/scripts/utils/fix-cliffy-imports.js +0 -307
- package/dist/scripts/utils/fix-duplicate-imports.js +0 -114
- package/dist/scripts/utils/fix-error-handling.cjs +0 -70
- package/dist/scripts/utils/fix-import-paths.js +0 -104
- package/dist/scripts/utils/fix-imports.js +0 -116
- package/dist/scripts/utils/fix-shebang.js +0 -78
- package/dist/scripts/utils/fix-test-modules.js +0 -27
- package/dist/scripts/utils/fix-timezone-issue-246.js +0 -200
- package/dist/scripts/utils/fix-ts-comprehensive.py +0 -182
- package/dist/scripts/utils/fix-ts-targeted-batch.js +0 -250
- package/dist/scripts/utils/remove-benchmark-conflicts.sh +0 -140
- package/dist/scripts/utils/simple-test-fixer.js +0 -190
- package/dist/scripts/utils/validate-metrics-structure.cjs +0 -144
- package/dist/scripts/validate-agent-hooks.js +0 -506
- package/dist/scripts/validate-changelog.js +0 -241
- package/dist/scripts/validate-coordination-cli.js +0 -69
- package/dist/scripts/validate-coordination-toggle-integration.cjs +0 -501
- package/dist/scripts/validate-docker-infrastructure.sh +0 -502
- package/dist/scripts/validate-entry-points.js +0 -300
- package/dist/scripts/validate-memory-monitoring.sh +0 -225
- package/dist/scripts/validate-stage3-performance.ts +0 -377
- package/dist/scripts/validate-template-bundling.js +0 -180
- package/dist/scripts/validation/README.md +0 -33
- package/dist/scripts/validation/acl-security-validation.cjs +0 -214
- package/dist/scripts/validation/acl-security-validation.js +0 -402
- package/dist/scripts/validation/byzantine-verification.js +0 -407
- package/dist/scripts/validation/final-phase-2-consensus.cjs +0 -219
- package/dist/scripts/validation/final-security-validation.js +0 -791
- package/dist/scripts/validation/final-wasm-validation.cjs +0 -840
- package/dist/scripts/validation/integration-test-analysis.js +0 -105
- package/dist/scripts/validation/phase-0-comprehensive-validation.js +0 -474
- package/dist/scripts/validation/phase-0-consensus-report.js +0 -139
- package/dist/scripts/validation/phase-0-final-report.js +0 -112
- package/dist/scripts/validation/phase-0-redis-consensus-report.js +0 -129
- package/dist/scripts/validation/phase-0-validation-improved.js +0 -490
- package/dist/scripts/validation/phase-0-validation-test.js +0 -65
- package/dist/scripts/validation/phase-1-consensus-report.cjs +0 -342
- package/dist/scripts/validation/phase-1-consensus-validation.cjs +0 -551
- package/dist/scripts/validation/phase-1-consensus-validation.js +0 -551
- package/dist/scripts/validation/phase-2-consensus-report.cjs +0 -186
- package/dist/scripts/validation/phase-2-validation.cjs +0 -171
- package/dist/scripts/validation/phase-2-validation.js +0 -171
- package/dist/scripts/validation/phase-4-consensus-report.js +0 -181
- package/dist/scripts/validation/phase-4-final-validation.js +0 -351
- package/dist/scripts/validation/phase-5-consensus-report.cjs +0 -113
- package/dist/scripts/validation/phase-5-consensus-report.js +0 -113
- package/dist/scripts/validation/security-analysis.js +0 -49
- package/dist/scripts/validation/security-validation.js +0 -492
- package/dist/scripts/validation/simple-security-validation.js +0 -464
- package/dist/scripts/verify-installation.js +0 -112
- package/dist/scripts/verify-mcp-server.js +0 -86
- package/dist/scripts/verify-sdk-phase1.cjs +0 -293
- package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/esm/vs/platform/accessibility/browser/accessibilityService.js +0 -88
- package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/esm/vs/platform/accessibility/common/accessibility.js +0 -9
- package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/esm/vs/platform/action/common/action.js +0 -7
- package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/esm/vs/platform/action/common/actionCommonCategories.js +0 -13
- package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/esm/vs/platform/actionWidget/browser/actionList.js +0 -276
- package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/esm/vs/platform/actionWidget/browser/actionWidget.js +0 -248
- package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/esm/vs/platform/actionWidget/common/actionWidget.js +0 -5
- package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/esm/vs/platform/actions/common/actions.js +0 -409
- package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/esm/vs/platform/audioCues/browser/audioCueService.js +0 -176
- package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/esm/vs/platform/clipboard/browser/clipboardService.js +0 -141
- package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/esm/vs/platform/clipboard/common/clipboardService.js +0 -6
- package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/esm/vs/platform/commands/common/commands.js +0 -80
- package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/esm/vs/platform/configuration/common/configuration.js +0 -86
- package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/esm/vs/platform/configuration/common/configurationModels.js +0 -554
- package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/esm/vs/platform/configuration/common/configurationRegistry.js +0 -317
- package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/esm/vs/platform/configuration/common/configurations.js +0 -41
- package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/esm/vs/platform/contextkey/browser/contextKeyService.js +0 -432
- package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/esm/vs/platform/contextkey/common/contextkey.js +0 -1547
- package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/esm/vs/platform/contextkey/common/contextkeys.js +0 -18
- package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/esm/vs/platform/contextview/browser/contextMenuHandler.js +0 -124
- package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/esm/vs/platform/contextview/browser/contextMenuService.js +0 -101
- package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/esm/vs/platform/contextview/browser/contextView.js +0 -7
- package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/esm/vs/platform/contextview/browser/contextViewService.js +0 -72
- package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/esm/vs/platform/dialogs/common/dialogs.js +0 -2
- package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/esm/vs/platform/dnd/browser/dnd.js +0 -36
- package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/esm/vs/platform/editor/common/editor.js +0 -17
- package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/esm/vs/platform/environment/common/environment.js +0 -2
- package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/esm/vs/platform/extensions/common/extensions.js +0 -47
- package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/esm/vs/platform/files/common/files.js +0 -9
- package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/esm/vs/platform/history/browser/contextScopedHistoryWidget.js +0 -105
- package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/esm/vs/platform/instantiation/common/descriptors.js +0 -11
- package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/esm/vs/platform/instantiation/common/extensions.js +0 -15
- package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/esm/vs/platform/keybinding/common/abstractKeybindingService.js +0 -277
- package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/esm/vs/platform/keybinding/common/baseResolvedKeybinding.js +0 -53
- package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/esm/vs/platform/quickinput/browser/commandsQuickAccess.js +0 -354
- package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/esm/vs/platform/theme/browser/defaultStyles.js +0 -162
- package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/esm/vs/platform/theme/common/colorRegistry.js +0 -482
- package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/min/vs/basic-languages/abap/abap.js +0 -10
- package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/min/vs/basic-languages/apex/apex.js +0 -10
- package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/min/vs/basic-languages/azcli/azcli.js +0 -10
- package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/min/vs/basic-languages/bat/bat.js +0 -10
- package/dist/src/web/frontend/node_modules/.monaco-editor-MndU045b/min/vs/basic-languages/bicep/bicep.js +0 -11
|
@@ -1,438 +0,0 @@
|
|
|
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;
|