claude-flow-novice 1.3.6 → 1.5.1
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/.claude/agents/analysis/code-analyzer.md +3 -20
- package/.claude/agents/analysis/code-review/analyze-code-quality.md +1 -1
- package/.claude/agents/analyst.md +208 -550
- package/.claude/agents/architect.md +136 -469
- package/.claude/agents/architecture/system-architect.md +20 -1
- package/.claude/agents/architecture/system-design/arch-system-design.md +1 -1
- package/.claude/agents/base-template-generator.md +24 -1
- package/.claude/agents/coder.md +87 -303
- package/.claude/agents/consensus/byzantine-coordinator.md +4 -21
- package/.claude/agents/consensus/consensus-builder.md +3 -20
- package/.claude/agents/consensus/crdt-synchronizer.md +4 -21
- package/.claude/agents/consensus/gossip-coordinator.md +4 -21
- package/.claude/agents/consensus/performance-benchmarker.md +4 -21
- package/.claude/agents/consensus/quorum-manager.md +4 -21
- package/.claude/agents/consensus/raft-manager.md +4 -21
- package/.claude/agents/consensus/security-manager.md +4 -21
- package/.claude/agents/coordinator.md +22 -11
- package/.claude/agents/data/ml/data-ml-model.md +2 -2
- package/.claude/agents/development/backend/dev-backend-api.md +2 -2
- package/.claude/agents/devops/ci-cd/ops-cicd-github.md +2 -2
- package/.claude/agents/devops/devops-engineer.md +134 -402
- package/.claude/agents/documentation/api-docs/docs-api-openapi.md +2 -2
- package/.claude/agents/github/code-review-swarm.md +1 -1
- package/.claude/agents/github/github-specialist.md +856 -0
- package/.claude/agents/github/pr-manager.md +1 -1
- package/.claude/agents/github/release-manager.md +1 -1
- package/.claude/agents/neural/neural-pattern-agent.md +762 -0
- package/.claude/agents/optimization/benchmark-suite.md +1 -1
- package/.claude/agents/optimization/perf-analyzer.md +1 -1
- package/.claude/agents/optimization/performance-monitor.md +1 -1
- package/.claude/agents/planner.md +135 -0
- package/.claude/agents/researcher.md +22 -9
- package/.claude/agents/reviewer.md +291 -0
- package/.claude/agents/security/security-specialist.md +1 -1
- package/.claude/agents/sparc/architecture.md +1 -1
- package/.claude/agents/sparc/pseudocode.md +1 -1
- package/.claude/agents/sparc/refinement.md +1 -1
- package/.claude/agents/sparc/specification.md +1 -1
- package/.claude/agents/specialized/mobile/spec-mobile-react-native.md +2 -2
- package/.claude/agents/tester.md +21 -11
- package/.claude/agents/testing/unit/tdd-london-swarm.md +1 -1
- package/.claude/agents/testing/validation/production-validator.md +1 -1
- package/.claude/commands/claude-soul.js +1 -1
- package/.claude/commands/fullstack.md +134 -0
- package/.claude/commands/index.js +4 -0
- package/.claude/hooks.json +12 -15
- package/{.claude → .claude-flow-novice/.claude}/agents/MIGRATION_SUMMARY.md +1 -1
- package/.claude-flow-novice/.claude/agents/analysis/code-analyzer.md +192 -0
- package/.claude-flow-novice/.claude/agents/analysis/code-review/analyze-code-quality.md +180 -0
- package/.claude-flow-novice/.claude/agents/analyst.md +300 -0
- package/.claude-flow-novice/.claude/agents/architect.md +557 -0
- package/.claude-flow-novice/.claude/agents/architecture/system-architect.md +630 -0
- package/.claude-flow-novice/.claude/agents/architecture/system-design/arch-system-design.md +156 -0
- package/.claude-flow-novice/.claude/agents/base-template-generator.md +65 -0
- package/.claude-flow-novice/.claude/agents/coder.md +180 -0
- package/.claude-flow-novice/.claude/agents/consensus/byzantine-coordinator.md +46 -0
- package/.claude-flow-novice/.claude/agents/consensus/consensus-builder.md +225 -0
- package/.claude-flow-novice/.claude/agents/consensus/crdt-synchronizer.md +980 -0
- package/.claude-flow-novice/.claude/agents/consensus/gossip-coordinator.md +46 -0
- package/.claude-flow-novice/.claude/agents/consensus/performance-benchmarker.md +834 -0
- package/.claude-flow-novice/.claude/agents/consensus/quorum-manager.md +806 -0
- package/.claude-flow-novice/.claude/agents/consensus/raft-manager.md +46 -0
- package/.claude-flow-novice/.claude/agents/consensus/security-manager.md +605 -0
- package/.claude-flow-novice/.claude/agents/coordinator.md +842 -0
- package/.claude-flow-novice/.claude/agents/data/ml/data-ml-model.md +193 -0
- package/.claude-flow-novice/.claude/agents/development/backend/dev-backend-api.md +142 -0
- package/.claude-flow-novice/.claude/agents/devops/ci-cd/ops-cicd-github.md +164 -0
- package/.claude-flow-novice/.claude/agents/devops/devops-engineer.md +638 -0
- package/.claude-flow-novice/.claude/agents/documentation/api-docs/docs-api-openapi.md +174 -0
- package/.claude-flow-novice/.claude/agents/github/code-review-swarm.md +538 -0
- package/.claude-flow-novice/.claude/agents/github/github-modes.md +173 -0
- package/.claude-flow-novice/.claude/agents/github/github-specialist.md +856 -0
- package/.claude-flow-novice/.claude/agents/github/issue-tracker.md +319 -0
- package/.claude-flow-novice/.claude/agents/github/multi-repo-swarm.md +553 -0
- package/.claude-flow-novice/.claude/agents/github/pr-manager.md +191 -0
- package/.claude-flow-novice/.claude/agents/github/project-board-sync.md +509 -0
- package/.claude-flow-novice/.claude/agents/github/release-manager.md +367 -0
- package/.claude-flow-novice/.claude/agents/github/release-swarm.md +583 -0
- package/.claude-flow-novice/.claude/agents/github/repo-architect.md +398 -0
- package/.claude-flow-novice/.claude/agents/github/swarm-issue.md +573 -0
- package/.claude-flow-novice/.claude/agents/github/swarm-pr.md +428 -0
- package/.claude-flow-novice/.claude/agents/github/sync-coordinator.md +452 -0
- package/.claude-flow-novice/.claude/agents/github/workflow-automation.md +635 -0
- package/.claude-flow-novice/.claude/agents/goal/goal-planner.md +73 -0
- package/.claude-flow-novice/.claude/agents/neural/neural-pattern-agent.md +762 -0
- package/.claude-flow-novice/.claude/agents/neural/safla-neural.md +74 -0
- package/.claude-flow-novice/.claude/agents/optimization/benchmark-suite.md +665 -0
- package/.claude-flow-novice/.claude/agents/optimization/load-balancer.md +431 -0
- package/.claude-flow-novice/.claude/agents/optimization/perf-analyzer.md +725 -0
- package/.claude-flow-novice/.claude/agents/optimization/performance-monitor.md +672 -0
- package/.claude-flow-novice/.claude/agents/optimization/resource-allocator.md +674 -0
- package/.claude-flow-novice/.claude/agents/optimization/topology-optimizer.md +808 -0
- package/.claude-flow-novice/.claude/agents/planner.md +135 -0
- package/.claude-flow-novice/.claude/agents/researcher.md +185 -0
- package/.claude-flow-novice/.claude/agents/reviewer.md +291 -0
- package/.claude-flow-novice/.claude/agents/security/security-specialist.md +978 -0
- package/.claude-flow-novice/.claude/agents/sparc/architecture.md +472 -0
- package/.claude-flow-novice/.claude/agents/sparc/pseudocode.md +318 -0
- package/.claude-flow-novice/.claude/agents/sparc/refinement.md +525 -0
- package/.claude-flow-novice/.claude/agents/sparc/specification.md +276 -0
- package/.claude-flow-novice/.claude/agents/specialized/mobile/spec-mobile-react-native.md +226 -0
- package/.claude-flow-novice/.claude/agents/sublinear/consciousness-evolution-agent.md +499 -0
- package/.claude-flow-novice/.claude/agents/sublinear/matrix-solver-agent.md +113 -0
- package/.claude-flow-novice/.claude/agents/sublinear/nanosecond-scheduler-agent.md +644 -0
- package/.claude-flow-novice/.claude/agents/sublinear/pagerank-agent.md +699 -0
- package/.claude-flow-novice/.claude/agents/sublinear/phi-calculator-agent.md +749 -0
- package/.claude-flow-novice/.claude/agents/sublinear/psycho-symbolic-agent.md +543 -0
- package/.claude-flow-novice/.claude/agents/sublinear/sublinear.md +816 -0
- package/.claude-flow-novice/.claude/agents/sublinear/temporal-advantage-agent.md +360 -0
- package/.claude-flow-novice/.claude/agents/swarm/adaptive-coordinator-enhanced.md +746 -0
- package/.claude-flow-novice/.claude/agents/swarm/adaptive-coordinator.md +396 -0
- package/.claude-flow-novice/.claude/agents/swarm/hierarchical-coordinator.md +300 -0
- package/.claude-flow-novice/.claude/agents/swarm/mesh-coordinator.md +435 -0
- package/.claude-flow-novice/.claude/agents/templates/automation-smart-agent.md +205 -0
- package/.claude-flow-novice/.claude/agents/templates/coordinator-swarm-init.md +90 -0
- package/.claude-flow-novice/.claude/agents/templates/github-pr-manager.md +177 -0
- package/.claude-flow-novice/.claude/agents/templates/implementer-sparc-coder.md +259 -0
- package/.claude-flow-novice/.claude/agents/templates/memory-coordinator.md +187 -0
- package/.claude-flow-novice/.claude/agents/templates/migration-plan.md +746 -0
- package/.claude-flow-novice/.claude/agents/templates/orchestrator-task.md +139 -0
- package/.claude-flow-novice/.claude/agents/templates/performance-analyzer.md +199 -0
- package/.claude-flow-novice/.claude/agents/templates/sparc-coordinator.md +183 -0
- package/.claude-flow-novice/.claude/agents/tester.md +663 -0
- package/.claude-flow-novice/.claude/agents/testing/e2e/playwright-agent.md +249 -0
- package/.claude-flow-novice/.claude/agents/testing/unit/tdd-london-swarm.md +244 -0
- package/.claude-flow-novice/.claude/agents/testing/validation/production-validator.md +395 -0
- package/.claude-flow-novice/dist/index.js +12 -24
- package/.claude-flow-novice/dist/index.js.map +1 -0
- package/.claude-flow-novice/dist/src/agents/agent-manager.js +123 -69
- package/.claude-flow-novice/dist/src/agents/agent-manager.js.map +1 -1
- package/.claude-flow-novice/dist/src/agents/github/utils/hook-integration.js +7 -7
- package/.claude-flow-novice/dist/src/agents/github/utils/hook-integration.js.map +1 -1
- package/.claude-flow-novice/dist/src/agents/stage3-integration-validator.js +485 -0
- package/.claude-flow-novice/dist/src/agents/stage3-integration-validator.js.map +1 -0
- package/.claude-flow-novice/dist/src/agents/unified-ultra-fast-agent-manager.js +630 -0
- package/.claude-flow-novice/dist/src/agents/unified-ultra-fast-agent-manager.js.map +1 -0
- package/.claude-flow-novice/dist/src/cli/commands/agent.js +1 -1
- package/.claude-flow-novice/dist/src/cli/commands/agent.js.map +1 -1
- package/.claude-flow-novice/dist/src/cli/commands/config-integration.js +6 -6
- package/.claude-flow-novice/dist/src/cli/commands/enterprise.js +18 -18
- package/.claude-flow-novice/dist/src/cli/commands/enterprise.js.map +1 -1
- package/.claude-flow-novice/dist/src/cli/commands/goal-init.js +4 -4
- package/.claude-flow-novice/dist/src/cli/commands/help-new.js +23 -23
- package/.claude-flow-novice/dist/src/cli/commands/help-new.js.map +1 -1
- package/.claude-flow-novice/dist/src/cli/commands/help.js +74 -74
- package/.claude-flow-novice/dist/src/cli/commands/help.js.map +1 -1
- package/.claude-flow-novice/dist/src/cli/commands/hive-mind/pause.js +2 -2
- package/.claude-flow-novice/dist/src/cli/commands/hive-mind/pause.js.map +1 -1
- package/.claude-flow-novice/dist/src/cli/commands/hive.js +4 -4
- package/.claude-flow-novice/dist/src/cli/commands/index.js +103 -132
- package/.claude-flow-novice/dist/src/cli/commands/index.js.map +1 -1
- package/.claude-flow-novice/dist/src/cli/commands/mcp.js +1 -1
- package/.claude-flow-novice/dist/src/cli/commands/migrate.js +4 -4
- package/.claude-flow-novice/dist/src/cli/commands/migrate.js.map +1 -1
- package/.claude-flow-novice/dist/src/cli/commands/monitor.js +1 -1
- package/.claude-flow-novice/dist/src/cli/commands/neural-init.js +4 -4
- package/.claude-flow-novice/dist/src/cli/commands/ruv-swarm.js +8 -8
- package/.claude-flow-novice/dist/src/cli/commands/sparc.js +12 -12
- package/.claude-flow-novice/dist/src/cli/commands/sparc.js.map +1 -1
- package/.claude-flow-novice/dist/src/cli/commands/start/start-command.js +3 -3
- package/.claude-flow-novice/dist/src/cli/commands/status.js +1 -1
- package/.claude-flow-novice/dist/src/cli/commands/swarm.js +7 -7
- package/.claude-flow-novice/dist/src/cli/commands/swarm.js.map +1 -1
- package/.claude-flow-novice/dist/src/cli/commands/verification.js +18 -18
- package/.claude-flow-novice/dist/src/cli/completion.js +54 -54
- package/.claude-flow-novice/dist/src/cli/completion.js.map +1 -1
- package/.claude-flow-novice/dist/src/cli/consolidated/ConsolidatedCLI.js +11 -11
- package/.claude-flow-novice/dist/src/cli/consolidated/ConsolidatedCLI.js.map +1 -1
- package/.claude-flow-novice/dist/src/cli/consolidated/core/CommandHandlers.js +31 -31
- package/.claude-flow-novice/dist/src/cli/consolidated/core/TierManager.js +39 -39
- package/.claude-flow-novice/dist/src/cli/consolidated/core/TierManager.js.map +1 -1
- package/.claude-flow-novice/dist/src/cli/consolidated/help/InteractiveHelp.js +25 -25
- package/.claude-flow-novice/dist/src/cli/consolidated/help/InteractiveHelp.js.map +1 -1
- package/.claude-flow-novice/dist/src/cli/consolidated/routing/CommandRouter.js +8 -8
- package/.claude-flow-novice/dist/src/cli/consolidated/routing/CommandRouter.js.map +1 -1
- package/.claude-flow-novice/dist/src/cli/consolidated/utils/IntelligentDefaults.js +6 -6
- package/.claude-flow-novice/dist/src/cli/consolidated/utils/IntelligentDefaults.js.map +1 -1
- package/.claude-flow-novice/dist/src/cli/consolidated/utils/PerformanceOptimizer.js +7 -7
- package/.claude-flow-novice/dist/src/cli/consolidated/utils/PerformanceOptimizer.js.map +1 -1
- package/.claude-flow-novice/dist/src/cli/index-remote.js +10 -10
- package/.claude-flow-novice/dist/src/cli/index.js +1 -1
- package/.claude-flow-novice/dist/src/cli/init/directory-structure.js +8 -8
- package/.claude-flow-novice/dist/src/cli/init/index.js +3 -3
- package/.claude-flow-novice/dist/src/cli/init/sparc-environment.js +67 -67
- package/.claude-flow-novice/dist/src/cli/init/swarm-commands.js +18 -18
- package/.claude-flow-novice/dist/src/cli/node-repl.js +2 -2
- package/.claude-flow-novice/dist/src/cli/repl.js +1 -1
- package/.claude-flow-novice/dist/src/cli/simple-cli.js +68 -68
- package/.claude-flow-novice/dist/src/cli/simple-cli.js.map +1 -1
- package/.claude-flow-novice/dist/src/cli/simple-commands/session-start-soul.js +271 -0
- package/.claude-flow-novice/dist/src/cli/simple-orchestrator.js +7 -7
- package/.claude-flow-novice/dist/src/cli/simple-orchestrator.js.map +1 -1
- package/.claude-flow-novice/dist/src/cli/ui/fallback-handler.js +7 -7
- package/.claude-flow-novice/dist/src/communication/enhanced-event-bus.js +816 -0
- package/.claude-flow-novice/dist/src/communication/enhanced-event-bus.js.map +1 -0
- package/.claude-flow-novice/dist/src/communication/failure-recovery-system.js +812 -0
- package/.claude-flow-novice/dist/src/communication/failure-recovery-system.js.map +1 -0
- package/.claude-flow-novice/dist/src/communication/optimized-serialization.js +369 -0
- package/.claude-flow-novice/dist/src/communication/optimized-serialization.js.map +1 -0
- package/.claude-flow-novice/dist/src/communication/performance-optimizations.js +526 -0
- package/.claude-flow-novice/dist/src/communication/performance-optimizations.js.map +1 -0
- package/.claude-flow-novice/dist/src/communication/performance-validator.js +532 -0
- package/.claude-flow-novice/dist/src/communication/performance-validator.js.map +1 -0
- package/.claude-flow-novice/dist/src/communication/priority-message-queue.js +525 -0
- package/.claude-flow-novice/dist/src/communication/priority-message-queue.js.map +1 -0
- package/.claude-flow-novice/dist/src/communication/shared-buffer-bus.js +218 -0
- package/.claude-flow-novice/dist/src/communication/shared-buffer-bus.js.map +1 -0
- package/.claude-flow-novice/dist/src/communication/ultra-fast-communication-bus.js +521 -0
- package/.claude-flow-novice/dist/src/communication/ultra-fast-communication-bus.js.map +1 -0
- package/.claude-flow-novice/dist/src/communication/ultra-fast-serialization.js +563 -0
- package/.claude-flow-novice/dist/src/communication/ultra-fast-serialization.js.map +1 -0
- package/.claude-flow-novice/dist/src/communication/websocket-cluster.js +344 -0
- package/.claude-flow-novice/dist/src/communication/websocket-cluster.js.map +1 -0
- package/.claude-flow-novice/dist/src/communication/zero-copy-structures.js +369 -0
- package/.claude-flow-novice/dist/src/communication/zero-copy-structures.js.map +1 -0
- package/.claude-flow-novice/dist/src/config/config-manager.js +1 -1
- package/.claude-flow-novice/dist/src/config/config-manager.js.map +1 -1
- package/.claude-flow-novice/dist/src/config/core/intelligent-configuration-manager.js +1 -1
- package/.claude-flow-novice/dist/src/config/integration/hooks-integration.js +6 -6
- package/.claude-flow-novice/dist/src/config/integration/hooks-integration.js.map +1 -1
- package/.claude-flow-novice/dist/src/config/migration/config-migration.js +1 -1
- package/.claude-flow-novice/dist/src/config/ruv-swarm-integration.js +1 -1
- package/.claude-flow-novice/dist/src/config/utils/zero-config-setup.js +1 -1
- package/.claude-flow-novice/dist/src/config/utils/zero-config-setup.js.map +1 -1
- package/.claude-flow-novice/dist/src/config/web-portal-config.js +0 -9
- package/.claude-flow-novice/dist/src/config/web-portal-config.js.map +1 -1
- package/.claude-flow-novice/dist/src/config/zero-config-setup.js +18 -18
- package/.claude-flow-novice/dist/src/config/zero-config-setup.js.map +1 -1
- package/.claude-flow-novice/dist/src/core/logger.js +33 -10
- package/.claude-flow-novice/dist/src/core/logger.js.map +1 -1
- package/.claude-flow-novice/dist/src/migration/index.js +1 -1
- package/.claude-flow-novice/dist/src/migration/index.js.map +1 -1
- package/.claude-flow-novice/dist/src/migration/migration-runner.js +4 -4
- package/.claude-flow-novice/dist/src/migration/migration-runner.js.map +1 -1
- package/.claude-flow-novice/dist/src/monitoring/agent-health-monitor.js +430 -0
- package/.claude-flow-novice/dist/src/monitoring/agent-health-monitor.js.map +1 -0
- package/.claude-flow-novice/dist/src/slash-commands/claude-soul.js +248 -365
- package/.claude-flow-novice/dist/src/slash-commands/register-all-commands.js +1 -1
- package/.claude-flow-novice/dist/src/swarm/claude-code-interface.js +1 -1
- package/.claude-flow-novice/dist/src/swarm/claude-flow-executor.js +1 -1
- package/.claude-flow-novice/dist/src/swarm/consensus-coordinator.js +471 -0
- package/.claude-flow-novice/dist/src/swarm/consensus-coordinator.js.map +1 -0
- package/.claude-flow-novice/dist/src/swarm/hive-mind-integration.js +1 -1
- package/.claude-flow-novice/dist/src/swarm/large-scale-coordinator.js +543 -0
- package/.claude-flow-novice/dist/src/swarm/large-scale-coordinator.js.map +1 -0
- package/.claude-flow-novice/dist/src/swarm/optimizations/connection-pool.js +1 -1
- package/.claude-flow-novice/dist/src/swarm/optimizations/optimized-executor.js +1 -1
- package/.claude-flow-novice/dist/src/swarm/types.js.map +1 -1
- package/.claude-flow-novice/dist/src/swarm-fullstack/integrations/communication-bridge.js +709 -0
- package/.claude-flow-novice/dist/src/swarm-fullstack/integrations/communication-bridge.js.map +1 -0
- package/.claude-flow-novice/dist/src/swarm-fullstack/testing/api-contract-validator.js +612 -0
- package/.claude-flow-novice/dist/src/swarm-fullstack/testing/api-contract-validator.js.map +1 -0
- package/.claude-flow-novice/dist/src/swarm-fullstack/testing/backend-test-orchestrator.js +679 -0
- package/.claude-flow-novice/dist/src/swarm-fullstack/testing/backend-test-orchestrator.js.map +1 -0
- package/.claude-flow-novice/dist/src/swarm-fullstack/testing/frontend-test-orchestrator.js +654 -0
- package/.claude-flow-novice/dist/src/swarm-fullstack/testing/frontend-test-orchestrator.js.map +1 -0
- package/.claude-flow-novice/dist/src/swarm-fullstack/testing/visual-regression.js +402 -0
- package/.claude-flow-novice/dist/src/swarm-fullstack/testing/visual-regression.js.map +1 -0
- package/.claude-flow-novice/dist/src/swarm-fullstack/workflows/convergence-detector.js +459 -0
- package/.claude-flow-novice/dist/src/swarm-fullstack/workflows/convergence-detector.js.map +1 -0
- package/.claude-flow-novice/dist/src/swarm-fullstack/workflows/fix-coordinator.js +513 -0
- package/.claude-flow-novice/dist/src/swarm-fullstack/workflows/fix-coordinator.js.map +1 -0
- package/.claude-flow-novice/dist/src/swarm-fullstack/workflows/index.js +19 -0
- package/.claude-flow-novice/dist/src/swarm-fullstack/workflows/index.js.map +1 -0
- package/.claude-flow-novice/dist/src/swarm-fullstack/workflows/iterative-build-test.js +568 -0
- package/.claude-flow-novice/dist/src/swarm-fullstack/workflows/iterative-build-test.js.map +1 -0
- package/.claude-flow-novice/dist/src/swarm-fullstack/workflows/regression-test-manager.js +418 -0
- package/.claude-flow-novice/dist/src/swarm-fullstack/workflows/regression-test-manager.js.map +1 -0
- package/.claude-flow-novice/dist/src/swarm-fullstack/workflows/test-result-analyzer.js +530 -0
- package/.claude-flow-novice/dist/src/swarm-fullstack/workflows/test-result-analyzer.js.map +1 -0
- package/.claude-flow-novice/dist/src/swarm-fullstack/workflows/workflow-metrics.js +250 -0
- package/.claude-flow-novice/dist/src/swarm-fullstack/workflows/workflow-metrics.js.map +1 -0
- package/.claude-flow-novice/dist/src/task/index.js +7 -7
- package/.claude-flow-novice/dist/src/validation/fullstack-integration-validator.js +420 -0
- package/.claude-flow-novice/dist/src/validation/fullstack-integration-validator.js.map +1 -0
- package/.claude-flow-novice/dist/src/validation/production-validator.js +1435 -0
- package/.claude-flow-novice/dist/src/validation/production-validator.js.map +1 -0
- package/.claude-flow-novice/dist/src/verification/cli-integration.js +3 -3
- package/.claude-flow-novice/dist/src/verification/hooks.js +1 -1
- package/CHANGELOG.md +26 -0
- package/CLAUDE.md +1967 -68
- package/README.md +0 -1
- package/config/build/babel.config.cjs +19 -11
- package/config/typescript/tsconfig.json +1 -1
- package/examples/claude-api-error-handling.ts +2 -2
- package/examples/frontend-testing-demo.ts +470 -0
- package/examples/litellm/config/config.yaml +1 -1
- package/package.json +13 -7
- package/scripts/build/unified-builder.sh +6 -6
- package/scripts/build/validate-agents.js +238 -0
- package/scripts/run-production-validation.ts +590 -0
- package/scripts/test/test-coordination-features.ts +2 -2
- package/scripts/validate-stage3-performance.ts +377 -0
- package/src/cli/simple-commands/hooks.js +1 -0
- package/src/cli/simple-commands/init/agent-copier.js +0 -2
- package/src/cli/simple-commands/init/index.js +5 -97
- package/src/cli/simple-commands/init/templates/CLAUDE.md +163 -1158
- package/src/cli/simple-commands/init/templates/claude-md.js +38 -157
- package/src/swarm-fullstack/integrations/communication-bridge.ts +931 -0
- package/src/swarm-fullstack/testing/api-contract-validator.ts +909 -0
- package/src/swarm-fullstack/testing/backend-test-orchestrator.ts +791 -0
- package/src/swarm-fullstack/testing/frontend-test-orchestrator.ts +853 -0
- package/src/swarm-fullstack/testing/visual-regression.ts +507 -0
- package/src/swarm-fullstack/workflows/convergence-detector.ts +736 -0
- package/src/swarm-fullstack/workflows/fix-coordinator.ts +677 -0
- package/src/swarm-fullstack/workflows/index.ts +75 -0
- package/src/swarm-fullstack/workflows/iterative-build-test.ts +829 -0
- package/src/swarm-fullstack/workflows/regression-test-manager.ts +590 -0
- package/src/swarm-fullstack/workflows/test-result-analyzer.ts +739 -0
- package/src/swarm-fullstack/workflows/workflow-metrics.ts +399 -0
- package/wiki/command-reference/README.md +1 -2
- package/wiki/command-reference/mcp-tools/README.md +1 -1
- package/wiki/getting-started/claude-code-mcp/README.md +1 -2
- package/wiki/getting-started/installation/README.md +2 -10
- package/.claude/commands/flow-nexus/app-store.md +0 -124
- package/.claude/commands/flow-nexus/challenges.md +0 -120
- package/.claude/commands/flow-nexus/login-registration.md +0 -65
- package/.claude/commands/flow-nexus/neural-network.md +0 -134
- package/.claude/commands/flow-nexus/payments.md +0 -116
- package/.claude/commands/flow-nexus/sandbox.md +0 -83
- package/.claude/commands/flow-nexus/swarm.md +0 -87
- package/.claude/commands/flow-nexus/user-tools.md +0 -152
- package/.claude/commands/flow-nexus/workflow.md +0 -115
- package/.claude-flow-novice/dist/cli/index.js +0 -45
- package/.claude-flow-novice/dist/core/index.js +0 -22
- package/.claude-flow-novice/dist/mcp/mcp-server-novice.js +0 -595
- package/.claude-flow-novice/dist/mcp/mcp-server-sdk.js +0 -649
- package/.claude-flow-novice/dist/mcp/mcp-server-with-slash-commands.js +0 -776
- package/.claude-flow-novice/dist/src/cli/simple-commands/init/templates/claude-md.js +0 -1101
- package/src/cli/simple-commands/init/templates/CLAUDE.md.optimized +0 -265
- /package/{.claude → .claude-flow-novice/.claude}/agents/README.md +0 -0
- /package/{.claude → .claude-flow-novice/.claude}/agents/backend-dev.json +0 -0
- /package/{.claude → .claude-flow-novice/.claude}/agents/code-analyzer.json +0 -0
- /package/{.claude → .claude-flow-novice/.claude}/agents/coder.json +0 -0
- /package/{.claude → .claude-flow-novice/.claude}/agents/consensus/README.md +0 -0
- /package/{.claude → .claude-flow-novice/.claude}/agents/core/coder.md +0 -0
- /package/{.claude → .claude-flow-novice/.claude}/agents/core/planner.md +0 -0
- /package/{.claude → .claude-flow-novice/.claude}/agents/core/researcher.md +0 -0
- /package/{.claude → .claude-flow-novice/.claude}/agents/core/reviewer.md +0 -0
- /package/{.claude → .claude-flow-novice/.claude}/agents/core/tester.md +0 -0
- /package/{.claude → .claude-flow-novice/.claude}/agents/optimization/README.md +0 -0
- /package/{.claude → .claude-flow-novice/.claude}/agents/planner.json +0 -0
- /package/{.claude → .claude-flow-novice/.claude}/agents/researcher.json +0 -0
- /package/{.claude → .claude-flow-novice/.claude}/agents/reviewer.json +0 -0
- /package/{.claude → .claude-flow-novice/.claude}/agents/swarm/README.md +0 -0
- /package/{.claude → .claude-flow-novice/.claude}/agents/system-architect.json +0 -0
- /package/{.claude → .claude-flow-novice/.claude}/agents/tester.json +0 -0
|
@@ -0,0 +1,931 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Communication Bridge - Integration Layer
|
|
3
|
+
*
|
|
4
|
+
* Connects the ultra-fast communication system with the fullstack swarm orchestrator
|
|
5
|
+
* to enable real-time agent coordination during fullstack development workflows.
|
|
6
|
+
*
|
|
7
|
+
* Key Features:
|
|
8
|
+
* - Ultra-fast inter-agent communication (<1ms latency)
|
|
9
|
+
* - Real-time progress broadcasting between agents
|
|
10
|
+
* - Memory coordination across frontend/backend teams
|
|
11
|
+
* - Event-driven architecture for scalability
|
|
12
|
+
* - Backward compatibility with existing systems
|
|
13
|
+
*
|
|
14
|
+
* Architecture:
|
|
15
|
+
* - Bridges CommunicationMemoryStore with FullStackOrchestrator
|
|
16
|
+
* - Integrates UltraFastCommunicationBus with EnhancedSwarmMessageRouter
|
|
17
|
+
* - Provides unified event broadcasting across all agents
|
|
18
|
+
* - Manages memory sharing for iterative building workflows
|
|
19
|
+
*/
|
|
20
|
+
|
|
21
|
+
import { EventEmitter } from 'events';
|
|
22
|
+
import { FullStackOrchestrator, SwarmExecutionStatus, FeatureRequest } from '../core/fullstack-orchestrator.js';
|
|
23
|
+
import { EnhancedSwarmMessageRouter, EnhancedSwarmState } from '../core/enhanced-swarm-message-router.js';
|
|
24
|
+
import { FullStackAgentMessage, SwarmTeamComposition } from '../types/index.js';
|
|
25
|
+
import { ILogger } from '../../core/logger.js';
|
|
26
|
+
|
|
27
|
+
// Import communication components with runtime checks
|
|
28
|
+
let UltraFastCommunicationBus: any = null;
|
|
29
|
+
let CommunicationMemoryStore: any = null;
|
|
30
|
+
|
|
31
|
+
// Lazy load communication components to avoid top-level await
|
|
32
|
+
async function loadCommunicationComponents() {
|
|
33
|
+
if (UltraFastCommunicationBus !== null) return; // Already loaded
|
|
34
|
+
|
|
35
|
+
try {
|
|
36
|
+
const commModule = await import('../../communication/ultra-fast-communication-bus.js');
|
|
37
|
+
UltraFastCommunicationBus = commModule.UltraFastCommunicationBus || commModule.default;
|
|
38
|
+
} catch {
|
|
39
|
+
console.warn('⚠️ Ultra-fast communication bus not available - using fallback');
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
try {
|
|
43
|
+
const memModule = await import('../../hooks/communication-integrated-post-edit.js');
|
|
44
|
+
CommunicationMemoryStore = memModule.CommunicationMemoryStore;
|
|
45
|
+
} catch {
|
|
46
|
+
console.warn('⚠️ Communication memory store not available - using fallback');
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
/**
|
|
51
|
+
* Configuration for the Communication Bridge
|
|
52
|
+
*/
|
|
53
|
+
export interface CommunicationBridgeConfig {
|
|
54
|
+
// Communication settings
|
|
55
|
+
enableUltraFastComm: boolean;
|
|
56
|
+
enableMemorySharing: boolean;
|
|
57
|
+
enableRealTimeProgress: boolean;
|
|
58
|
+
|
|
59
|
+
// Performance settings
|
|
60
|
+
messageBufferSize: number;
|
|
61
|
+
maxSubscriptionsPerAgent: number;
|
|
62
|
+
broadcastBatchSize: number;
|
|
63
|
+
|
|
64
|
+
// Coordination settings
|
|
65
|
+
enableCrossLayerCoordination: boolean;
|
|
66
|
+
enableDependencyTracking: boolean;
|
|
67
|
+
enableIterativeBuilding: boolean;
|
|
68
|
+
|
|
69
|
+
// Memory settings
|
|
70
|
+
memoryNamespace: string;
|
|
71
|
+
persistMemory: boolean;
|
|
72
|
+
memoryTTL: number;
|
|
73
|
+
|
|
74
|
+
// Monitoring
|
|
75
|
+
enableMetrics: boolean;
|
|
76
|
+
metricsInterval: number;
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
/**
|
|
80
|
+
* Agent coordination event types
|
|
81
|
+
*/
|
|
82
|
+
export type CoordinationEventType =
|
|
83
|
+
| 'agent:spawned'
|
|
84
|
+
| 'agent:ready'
|
|
85
|
+
| 'agent:working'
|
|
86
|
+
| 'agent:blocked'
|
|
87
|
+
| 'agent:completed'
|
|
88
|
+
| 'agent:failed'
|
|
89
|
+
| 'swarm:phase:started'
|
|
90
|
+
| 'swarm:phase:completed'
|
|
91
|
+
| 'swarm:coordination:required'
|
|
92
|
+
| 'swarm:dependency:resolved'
|
|
93
|
+
| 'swarm:conflict:detected'
|
|
94
|
+
| 'swarm:progress:update'
|
|
95
|
+
| 'memory:shared'
|
|
96
|
+
| 'memory:updated'
|
|
97
|
+
| 'memory:query';
|
|
98
|
+
|
|
99
|
+
/**
|
|
100
|
+
* Coordination event structure
|
|
101
|
+
*/
|
|
102
|
+
export interface CoordinationEvent {
|
|
103
|
+
type: CoordinationEventType;
|
|
104
|
+
swarmId: string;
|
|
105
|
+
agentId?: string;
|
|
106
|
+
agentType?: string;
|
|
107
|
+
data: any;
|
|
108
|
+
timestamp: string;
|
|
109
|
+
priority: 'low' | 'medium' | 'high' | 'critical';
|
|
110
|
+
metadata?: Record<string, any>;
|
|
111
|
+
}
|
|
112
|
+
|
|
113
|
+
/**
|
|
114
|
+
* Memory coordination structure
|
|
115
|
+
*/
|
|
116
|
+
export interface MemoryCoordination {
|
|
117
|
+
key: string;
|
|
118
|
+
value: any;
|
|
119
|
+
swarmId: string;
|
|
120
|
+
agentId: string;
|
|
121
|
+
layer: string;
|
|
122
|
+
dependencies?: string[];
|
|
123
|
+
version: number;
|
|
124
|
+
timestamp: string;
|
|
125
|
+
}
|
|
126
|
+
|
|
127
|
+
/**
|
|
128
|
+
* Communication Bridge - Main Integration Class
|
|
129
|
+
*
|
|
130
|
+
* Bridges the ultra-fast communication system with the fullstack orchestrator
|
|
131
|
+
* to enable real-time agent coordination and memory sharing.
|
|
132
|
+
*/
|
|
133
|
+
export class CommunicationBridge extends EventEmitter {
|
|
134
|
+
private config: CommunicationBridgeConfig;
|
|
135
|
+
private logger: ILogger;
|
|
136
|
+
|
|
137
|
+
// Communication components
|
|
138
|
+
private communicationBus: any;
|
|
139
|
+
private memoryStore: any;
|
|
140
|
+
private communicationEnabled: boolean = false;
|
|
141
|
+
|
|
142
|
+
// Orchestrator references
|
|
143
|
+
private orchestrator: FullStackOrchestrator | null = null;
|
|
144
|
+
private messageRouter: EnhancedSwarmMessageRouter | null = null;
|
|
145
|
+
|
|
146
|
+
// Active subscriptions per swarm
|
|
147
|
+
private swarmSubscriptions = new Map<string, Set<string>>();
|
|
148
|
+
private agentQueues = new Map<string, string>();
|
|
149
|
+
|
|
150
|
+
// Performance metrics
|
|
151
|
+
private metrics = {
|
|
152
|
+
messagesRouted: 0,
|
|
153
|
+
memoryOperations: 0,
|
|
154
|
+
coordinationEvents: 0,
|
|
155
|
+
averageLatency: 0,
|
|
156
|
+
activeSwarms: 0,
|
|
157
|
+
activeAgents: 0
|
|
158
|
+
};
|
|
159
|
+
|
|
160
|
+
constructor(config: Partial<CommunicationBridgeConfig>, logger: ILogger) {
|
|
161
|
+
super();
|
|
162
|
+
|
|
163
|
+
this.config = {
|
|
164
|
+
enableUltraFastComm: true,
|
|
165
|
+
enableMemorySharing: true,
|
|
166
|
+
enableRealTimeProgress: true,
|
|
167
|
+
messageBufferSize: 65536,
|
|
168
|
+
maxSubscriptionsPerAgent: 100,
|
|
169
|
+
broadcastBatchSize: 32,
|
|
170
|
+
enableCrossLayerCoordination: true,
|
|
171
|
+
enableDependencyTracking: true,
|
|
172
|
+
enableIterativeBuilding: true,
|
|
173
|
+
memoryNamespace: 'fullstack-swarm',
|
|
174
|
+
persistMemory: true,
|
|
175
|
+
memoryTTL: 3600000, // 1 hour
|
|
176
|
+
enableMetrics: true,
|
|
177
|
+
metricsInterval: 5000,
|
|
178
|
+
...config
|
|
179
|
+
};
|
|
180
|
+
|
|
181
|
+
this.logger = logger;
|
|
182
|
+
}
|
|
183
|
+
|
|
184
|
+
/**
|
|
185
|
+
* Initialize the communication bridge
|
|
186
|
+
*/
|
|
187
|
+
async initialize(
|
|
188
|
+
orchestrator: FullStackOrchestrator,
|
|
189
|
+
messageRouter: EnhancedSwarmMessageRouter
|
|
190
|
+
): Promise<void> {
|
|
191
|
+
this.logger.info('Initializing Communication Bridge', {
|
|
192
|
+
enableUltraFastComm: this.config.enableUltraFastComm,
|
|
193
|
+
enableMemorySharing: this.config.enableMemorySharing
|
|
194
|
+
});
|
|
195
|
+
|
|
196
|
+
this.orchestrator = orchestrator;
|
|
197
|
+
this.messageRouter = messageRouter;
|
|
198
|
+
|
|
199
|
+
// Load communication components lazily
|
|
200
|
+
await loadCommunicationComponents();
|
|
201
|
+
|
|
202
|
+
// Initialize communication bus if available
|
|
203
|
+
if (this.config.enableUltraFastComm && UltraFastCommunicationBus) {
|
|
204
|
+
await this.initializeCommunicationBus();
|
|
205
|
+
}
|
|
206
|
+
|
|
207
|
+
// Initialize memory store if available
|
|
208
|
+
if (this.config.enableMemorySharing && CommunicationMemoryStore) {
|
|
209
|
+
await this.initializeMemoryStore();
|
|
210
|
+
}
|
|
211
|
+
|
|
212
|
+
// Setup event handlers
|
|
213
|
+
this.setupOrchestratorHandlers();
|
|
214
|
+
this.setupMessageRouterHandlers();
|
|
215
|
+
|
|
216
|
+
// Start metrics collection
|
|
217
|
+
if (this.config.enableMetrics) {
|
|
218
|
+
this.startMetricsCollection();
|
|
219
|
+
}
|
|
220
|
+
|
|
221
|
+
this.logger.info('Communication Bridge initialized successfully', {
|
|
222
|
+
communicationEnabled: this.communicationEnabled,
|
|
223
|
+
componentsActive: {
|
|
224
|
+
communicationBus: !!this.communicationBus,
|
|
225
|
+
memoryStore: !!this.memoryStore
|
|
226
|
+
}
|
|
227
|
+
});
|
|
228
|
+
|
|
229
|
+
this.emit('bridge:initialized');
|
|
230
|
+
}
|
|
231
|
+
|
|
232
|
+
/**
|
|
233
|
+
* Initialize ultra-fast communication bus
|
|
234
|
+
*/
|
|
235
|
+
private async initializeCommunicationBus(): Promise<void> {
|
|
236
|
+
try {
|
|
237
|
+
this.communicationBus = new UltraFastCommunicationBus({
|
|
238
|
+
enableZeroCopy: true,
|
|
239
|
+
enableOptimizedSerialization: true,
|
|
240
|
+
maxBufferSize: this.config.messageBufferSize
|
|
241
|
+
});
|
|
242
|
+
|
|
243
|
+
if (this.communicationBus.initialize) {
|
|
244
|
+
await this.communicationBus.initialize();
|
|
245
|
+
}
|
|
246
|
+
|
|
247
|
+
this.communicationEnabled = true;
|
|
248
|
+
this.logger.info('Ultra-fast communication bus initialized');
|
|
249
|
+
} catch (error) {
|
|
250
|
+
this.logger.error('Failed to initialize communication bus', { error });
|
|
251
|
+
this.communicationBus = new EventEmitter(); // Fallback
|
|
252
|
+
}
|
|
253
|
+
}
|
|
254
|
+
|
|
255
|
+
/**
|
|
256
|
+
* Initialize communication memory store
|
|
257
|
+
*/
|
|
258
|
+
private async initializeMemoryStore(): Promise<void> {
|
|
259
|
+
try {
|
|
260
|
+
this.memoryStore = new CommunicationMemoryStore({
|
|
261
|
+
enableCommunication: this.communicationEnabled,
|
|
262
|
+
enableZeroCopy: true,
|
|
263
|
+
enableOptimizedSerialization: true
|
|
264
|
+
});
|
|
265
|
+
|
|
266
|
+
await this.memoryStore.initialize();
|
|
267
|
+
|
|
268
|
+
// Subscribe to memory events
|
|
269
|
+
this.memoryStore.on('store', (event: any) => {
|
|
270
|
+
this.handleMemoryStoreEvent(event);
|
|
271
|
+
});
|
|
272
|
+
|
|
273
|
+
this.memoryStore.on('remoteUpdate', (update: any) => {
|
|
274
|
+
this.handleMemoryRemoteUpdate(update);
|
|
275
|
+
});
|
|
276
|
+
|
|
277
|
+
this.logger.info('Communication memory store initialized');
|
|
278
|
+
} catch (error) {
|
|
279
|
+
this.logger.error('Failed to initialize memory store', { error });
|
|
280
|
+
}
|
|
281
|
+
}
|
|
282
|
+
|
|
283
|
+
/**
|
|
284
|
+
* Setup orchestrator event handlers
|
|
285
|
+
*/
|
|
286
|
+
private setupOrchestratorHandlers(): void {
|
|
287
|
+
if (!this.orchestrator) return;
|
|
288
|
+
|
|
289
|
+
// Feature development lifecycle events
|
|
290
|
+
this.orchestrator.on('feature-development-started', (event) => {
|
|
291
|
+
this.handleFeatureDevelopmentStarted(event);
|
|
292
|
+
});
|
|
293
|
+
|
|
294
|
+
this.orchestrator.on('phase-completed', (event) => {
|
|
295
|
+
this.handlePhaseCompleted(event);
|
|
296
|
+
});
|
|
297
|
+
|
|
298
|
+
this.orchestrator.on('swarm-team-ready', (event) => {
|
|
299
|
+
this.handleSwarmTeamReady(event);
|
|
300
|
+
});
|
|
301
|
+
|
|
302
|
+
this.orchestrator.on('feature-development-completed', (event) => {
|
|
303
|
+
this.handleFeatureDevelopmentCompleted(event);
|
|
304
|
+
});
|
|
305
|
+
|
|
306
|
+
this.orchestrator.on('swarm-scaled', (event) => {
|
|
307
|
+
this.handleSwarmScaled(event);
|
|
308
|
+
});
|
|
309
|
+
}
|
|
310
|
+
|
|
311
|
+
/**
|
|
312
|
+
* Setup message router event handlers
|
|
313
|
+
*/
|
|
314
|
+
private setupMessageRouterHandlers(): void {
|
|
315
|
+
if (!this.messageRouter) return;
|
|
316
|
+
|
|
317
|
+
// Enhanced message routing events
|
|
318
|
+
this.messageRouter.on('enhanced-message', (message: FullStackAgentMessage) => {
|
|
319
|
+
this.handleEnhancedMessage(message);
|
|
320
|
+
});
|
|
321
|
+
|
|
322
|
+
this.messageRouter.on('swarm-state-updated', (state: EnhancedSwarmState) => {
|
|
323
|
+
this.handleSwarmStateUpdated(state);
|
|
324
|
+
});
|
|
325
|
+
|
|
326
|
+
// Routing strategy events
|
|
327
|
+
this.messageRouter.on('direct-message', (event) => {
|
|
328
|
+
this.routeDirectMessage(event);
|
|
329
|
+
});
|
|
330
|
+
|
|
331
|
+
this.messageRouter.on('broadcast-message', (event) => {
|
|
332
|
+
this.routeBroadcastMessage(event);
|
|
333
|
+
});
|
|
334
|
+
|
|
335
|
+
this.messageRouter.on('hierarchical-message', (event) => {
|
|
336
|
+
this.routeHierarchicalMessage(event);
|
|
337
|
+
});
|
|
338
|
+
}
|
|
339
|
+
|
|
340
|
+
/**
|
|
341
|
+
* Handle feature development started
|
|
342
|
+
*/
|
|
343
|
+
private async handleFeatureDevelopmentStarted(event: { swarmId: string; request: FeatureRequest }): Promise<void> {
|
|
344
|
+
const { swarmId, request } = event;
|
|
345
|
+
|
|
346
|
+
this.logger.info('Feature development started - setting up communication', {
|
|
347
|
+
swarmId,
|
|
348
|
+
featureName: request.name
|
|
349
|
+
});
|
|
350
|
+
|
|
351
|
+
// Broadcast to all agents
|
|
352
|
+
await this.broadcastCoordinationEvent({
|
|
353
|
+
type: 'swarm:phase:started',
|
|
354
|
+
swarmId,
|
|
355
|
+
data: {
|
|
356
|
+
phase: 'feature-development',
|
|
357
|
+
feature: request.name,
|
|
358
|
+
requirements: request.requirements
|
|
359
|
+
},
|
|
360
|
+
timestamp: new Date().toISOString(),
|
|
361
|
+
priority: 'high'
|
|
362
|
+
});
|
|
363
|
+
|
|
364
|
+
// Store in shared memory
|
|
365
|
+
if (this.memoryStore) {
|
|
366
|
+
await this.memoryStore.store(
|
|
367
|
+
`swarm:${swarmId}:feature`,
|
|
368
|
+
request,
|
|
369
|
+
{
|
|
370
|
+
namespace: this.config.memoryNamespace,
|
|
371
|
+
metadata: { type: 'feature-request' },
|
|
372
|
+
broadcast: true
|
|
373
|
+
}
|
|
374
|
+
);
|
|
375
|
+
}
|
|
376
|
+
|
|
377
|
+
this.metrics.activeSwarms++;
|
|
378
|
+
}
|
|
379
|
+
|
|
380
|
+
/**
|
|
381
|
+
* Handle swarm team ready
|
|
382
|
+
*/
|
|
383
|
+
private async handleSwarmTeamReady(event: { swarmId: string; team: SwarmTeamComposition }): Promise<void> {
|
|
384
|
+
const { swarmId, team } = event;
|
|
385
|
+
|
|
386
|
+
this.logger.info('Swarm team ready - initializing agent coordination', {
|
|
387
|
+
swarmId,
|
|
388
|
+
agentCount: team.agents.length
|
|
389
|
+
});
|
|
390
|
+
|
|
391
|
+
// Create communication queues for each agent
|
|
392
|
+
for (const agent of team.agents) {
|
|
393
|
+
await this.registerAgent(swarmId, agent.id, agent.type);
|
|
394
|
+
}
|
|
395
|
+
|
|
396
|
+
// Broadcast team composition to all agents
|
|
397
|
+
await this.broadcastCoordinationEvent({
|
|
398
|
+
type: 'swarm:phase:started',
|
|
399
|
+
swarmId,
|
|
400
|
+
data: {
|
|
401
|
+
phase: 'team-spawning-complete',
|
|
402
|
+
team: {
|
|
403
|
+
agentCount: team.agents.length,
|
|
404
|
+
agents: team.agents.map(a => ({
|
|
405
|
+
id: a.id,
|
|
406
|
+
type: a.type,
|
|
407
|
+
capabilities: a.capabilities
|
|
408
|
+
}))
|
|
409
|
+
}
|
|
410
|
+
},
|
|
411
|
+
timestamp: new Date().toISOString(),
|
|
412
|
+
priority: 'high'
|
|
413
|
+
});
|
|
414
|
+
|
|
415
|
+
// Store team composition in shared memory
|
|
416
|
+
if (this.memoryStore) {
|
|
417
|
+
await this.memoryStore.store(
|
|
418
|
+
`swarm:${swarmId}:team`,
|
|
419
|
+
team,
|
|
420
|
+
{
|
|
421
|
+
namespace: this.config.memoryNamespace,
|
|
422
|
+
metadata: { type: 'team-composition' },
|
|
423
|
+
broadcast: true
|
|
424
|
+
}
|
|
425
|
+
);
|
|
426
|
+
}
|
|
427
|
+
|
|
428
|
+
this.metrics.activeAgents += team.agents.length;
|
|
429
|
+
}
|
|
430
|
+
|
|
431
|
+
/**
|
|
432
|
+
* Register agent with communication system
|
|
433
|
+
*/
|
|
434
|
+
private async registerAgent(swarmId: string, agentId: string, agentType: string): Promise<void> {
|
|
435
|
+
const queueId = `${swarmId}:${agentId}`;
|
|
436
|
+
|
|
437
|
+
// Create dedicated queue in communication bus
|
|
438
|
+
if (this.communicationBus && this.communicationBus.subscribe) {
|
|
439
|
+
// Subscribe to agent-specific topics
|
|
440
|
+
this.communicationBus.subscribe(`agent:${agentId}:*`, queueId);
|
|
441
|
+
this.communicationBus.subscribe(`swarm:${swarmId}:*`, queueId);
|
|
442
|
+
this.communicationBus.subscribe(`layer:${this.getAgentLayer(agentType)}:*`, queueId);
|
|
443
|
+
}
|
|
444
|
+
|
|
445
|
+
// Track agent queue
|
|
446
|
+
this.agentQueues.set(agentId, queueId);
|
|
447
|
+
|
|
448
|
+
// Track swarm subscriptions
|
|
449
|
+
if (!this.swarmSubscriptions.has(swarmId)) {
|
|
450
|
+
this.swarmSubscriptions.set(swarmId, new Set());
|
|
451
|
+
}
|
|
452
|
+
this.swarmSubscriptions.get(swarmId)!.add(agentId);
|
|
453
|
+
|
|
454
|
+
// Broadcast agent ready event
|
|
455
|
+
await this.broadcastCoordinationEvent({
|
|
456
|
+
type: 'agent:ready',
|
|
457
|
+
swarmId,
|
|
458
|
+
agentId,
|
|
459
|
+
agentType,
|
|
460
|
+
data: { queueId },
|
|
461
|
+
timestamp: new Date().toISOString(),
|
|
462
|
+
priority: 'medium'
|
|
463
|
+
});
|
|
464
|
+
}
|
|
465
|
+
|
|
466
|
+
/**
|
|
467
|
+
* Handle enhanced message from message router
|
|
468
|
+
*/
|
|
469
|
+
private async handleEnhancedMessage(message: FullStackAgentMessage): Promise<void> {
|
|
470
|
+
const startTime = performance.now();
|
|
471
|
+
|
|
472
|
+
try {
|
|
473
|
+
// Route through ultra-fast communication bus
|
|
474
|
+
if (this.communicationBus && this.communicationBus.publish) {
|
|
475
|
+
const topic = this.buildMessageTopic(message);
|
|
476
|
+
const payload = this.serializeMessage(message);
|
|
477
|
+
|
|
478
|
+
await this.communicationBus.publish(topic, payload, this.getPriority(message.priority));
|
|
479
|
+
}
|
|
480
|
+
|
|
481
|
+
// Broadcast coordination event
|
|
482
|
+
await this.broadcastCoordinationEvent({
|
|
483
|
+
type: this.mapMessageTypeToCoordinationEvent(message.messageType),
|
|
484
|
+
swarmId: message.swarmId,
|
|
485
|
+
agentId: message.agentId,
|
|
486
|
+
agentType: message.agentType,
|
|
487
|
+
data: {
|
|
488
|
+
messageId: message.id,
|
|
489
|
+
messageType: message.messageType,
|
|
490
|
+
content: message.content,
|
|
491
|
+
layer: message.layer
|
|
492
|
+
},
|
|
493
|
+
timestamp: new Date().toISOString(),
|
|
494
|
+
priority: message.priority
|
|
495
|
+
});
|
|
496
|
+
|
|
497
|
+
// Update metrics
|
|
498
|
+
const latency = performance.now() - startTime;
|
|
499
|
+
this.updateLatencyMetrics(latency);
|
|
500
|
+
this.metrics.messagesRouted++;
|
|
501
|
+
|
|
502
|
+
} catch (error) {
|
|
503
|
+
this.logger.error('Failed to handle enhanced message', {
|
|
504
|
+
error,
|
|
505
|
+
messageId: message.id,
|
|
506
|
+
swarmId: message.swarmId
|
|
507
|
+
});
|
|
508
|
+
}
|
|
509
|
+
}
|
|
510
|
+
|
|
511
|
+
/**
|
|
512
|
+
* Handle phase completed
|
|
513
|
+
*/
|
|
514
|
+
private async handlePhaseCompleted(event: { swarmId: string; phase: string; [key: string]: any }): Promise<void> {
|
|
515
|
+
const { swarmId, phase } = event;
|
|
516
|
+
|
|
517
|
+
await this.broadcastCoordinationEvent({
|
|
518
|
+
type: 'swarm:phase:completed',
|
|
519
|
+
swarmId,
|
|
520
|
+
data: {
|
|
521
|
+
phase,
|
|
522
|
+
completedAt: new Date().toISOString(),
|
|
523
|
+
results: event
|
|
524
|
+
},
|
|
525
|
+
timestamp: new Date().toISOString(),
|
|
526
|
+
priority: 'high'
|
|
527
|
+
});
|
|
528
|
+
|
|
529
|
+
// Store phase results in shared memory
|
|
530
|
+
if (this.memoryStore) {
|
|
531
|
+
await this.memoryStore.store(
|
|
532
|
+
`swarm:${swarmId}:phase:${phase}`,
|
|
533
|
+
event,
|
|
534
|
+
{
|
|
535
|
+
namespace: this.config.memoryNamespace,
|
|
536
|
+
metadata: { type: 'phase-completion', phase },
|
|
537
|
+
broadcast: true
|
|
538
|
+
}
|
|
539
|
+
);
|
|
540
|
+
}
|
|
541
|
+
}
|
|
542
|
+
|
|
543
|
+
/**
|
|
544
|
+
* Broadcast coordination event to all agents in swarm
|
|
545
|
+
*/
|
|
546
|
+
private async broadcastCoordinationEvent(event: CoordinationEvent): Promise<void> {
|
|
547
|
+
try {
|
|
548
|
+
// Emit locally
|
|
549
|
+
this.emit('coordination-event', event);
|
|
550
|
+
|
|
551
|
+
// Broadcast via communication bus
|
|
552
|
+
if (this.communicationBus && this.communicationBus.publish) {
|
|
553
|
+
const topic = `coordination:${event.type}`;
|
|
554
|
+
const payload = this.serializeCoordinationEvent(event);
|
|
555
|
+
|
|
556
|
+
await this.communicationBus.publish(topic, payload, this.getPriority(event.priority));
|
|
557
|
+
}
|
|
558
|
+
|
|
559
|
+
// Store in memory if relevant
|
|
560
|
+
if (this.shouldStoreCoordinationEvent(event) && this.memoryStore) {
|
|
561
|
+
await this.memoryStore.store(
|
|
562
|
+
`coordination:${event.swarmId}:${event.type}:${Date.now()}`,
|
|
563
|
+
event,
|
|
564
|
+
{
|
|
565
|
+
namespace: this.config.memoryNamespace,
|
|
566
|
+
metadata: { type: 'coordination-event' },
|
|
567
|
+
broadcast: false // Already broadcasted above
|
|
568
|
+
}
|
|
569
|
+
);
|
|
570
|
+
}
|
|
571
|
+
|
|
572
|
+
this.metrics.coordinationEvents++;
|
|
573
|
+
|
|
574
|
+
} catch (error) {
|
|
575
|
+
this.logger.error('Failed to broadcast coordination event', { error, event });
|
|
576
|
+
}
|
|
577
|
+
}
|
|
578
|
+
|
|
579
|
+
/**
|
|
580
|
+
* Share memory across agents
|
|
581
|
+
*/
|
|
582
|
+
async shareMemory(coordination: MemoryCoordination): Promise<void> {
|
|
583
|
+
if (!this.memoryStore) {
|
|
584
|
+
this.logger.warn('Memory store not available for memory sharing');
|
|
585
|
+
return;
|
|
586
|
+
}
|
|
587
|
+
|
|
588
|
+
try {
|
|
589
|
+
await this.memoryStore.store(
|
|
590
|
+
coordination.key,
|
|
591
|
+
coordination.value,
|
|
592
|
+
{
|
|
593
|
+
namespace: `${this.config.memoryNamespace}:${coordination.swarmId}`,
|
|
594
|
+
metadata: {
|
|
595
|
+
agentId: coordination.agentId,
|
|
596
|
+
layer: coordination.layer,
|
|
597
|
+
dependencies: coordination.dependencies,
|
|
598
|
+
version: coordination.version
|
|
599
|
+
},
|
|
600
|
+
broadcast: true
|
|
601
|
+
}
|
|
602
|
+
);
|
|
603
|
+
|
|
604
|
+
await this.broadcastCoordinationEvent({
|
|
605
|
+
type: 'memory:shared',
|
|
606
|
+
swarmId: coordination.swarmId,
|
|
607
|
+
agentId: coordination.agentId,
|
|
608
|
+
data: {
|
|
609
|
+
key: coordination.key,
|
|
610
|
+
layer: coordination.layer,
|
|
611
|
+
dependencies: coordination.dependencies
|
|
612
|
+
},
|
|
613
|
+
timestamp: new Date().toISOString(),
|
|
614
|
+
priority: 'medium'
|
|
615
|
+
});
|
|
616
|
+
|
|
617
|
+
this.metrics.memoryOperations++;
|
|
618
|
+
|
|
619
|
+
} catch (error) {
|
|
620
|
+
this.logger.error('Failed to share memory', { error, coordination });
|
|
621
|
+
}
|
|
622
|
+
}
|
|
623
|
+
|
|
624
|
+
/**
|
|
625
|
+
* Query shared memory
|
|
626
|
+
*/
|
|
627
|
+
async queryMemory(swarmId: string, key: string, options: { queryRemote?: boolean } = {}): Promise<any> {
|
|
628
|
+
if (!this.memoryStore) {
|
|
629
|
+
this.logger.warn('Memory store not available for memory query');
|
|
630
|
+
return null;
|
|
631
|
+
}
|
|
632
|
+
|
|
633
|
+
try {
|
|
634
|
+
const value = await this.memoryStore.retrieve(key, {
|
|
635
|
+
namespace: `${this.config.memoryNamespace}:${swarmId}`,
|
|
636
|
+
queryRemote: options.queryRemote
|
|
637
|
+
});
|
|
638
|
+
|
|
639
|
+
if (value) {
|
|
640
|
+
await this.broadcastCoordinationEvent({
|
|
641
|
+
type: 'memory:query',
|
|
642
|
+
swarmId,
|
|
643
|
+
data: { key, found: true },
|
|
644
|
+
timestamp: new Date().toISOString(),
|
|
645
|
+
priority: 'low'
|
|
646
|
+
});
|
|
647
|
+
}
|
|
648
|
+
|
|
649
|
+
this.metrics.memoryOperations++;
|
|
650
|
+
|
|
651
|
+
return value;
|
|
652
|
+
|
|
653
|
+
} catch (error) {
|
|
654
|
+
this.logger.error('Failed to query memory', { error, swarmId, key });
|
|
655
|
+
return null;
|
|
656
|
+
}
|
|
657
|
+
}
|
|
658
|
+
|
|
659
|
+
/**
|
|
660
|
+
* Handle swarm state updated
|
|
661
|
+
*/
|
|
662
|
+
private async handleSwarmStateUpdated(state: EnhancedSwarmState): Promise<void> {
|
|
663
|
+
await this.broadcastCoordinationEvent({
|
|
664
|
+
type: 'swarm:progress:update',
|
|
665
|
+
swarmId: state.swarmId,
|
|
666
|
+
data: {
|
|
667
|
+
complexity: state.complexity,
|
|
668
|
+
agentCount: state.teamComposition.agents.length,
|
|
669
|
+
messageCount: state.messageCount,
|
|
670
|
+
coordination: state.coordination,
|
|
671
|
+
resourceUsage: state.resourceUsage
|
|
672
|
+
},
|
|
673
|
+
timestamp: new Date().toISOString(),
|
|
674
|
+
priority: 'low'
|
|
675
|
+
});
|
|
676
|
+
}
|
|
677
|
+
|
|
678
|
+
/**
|
|
679
|
+
* Handle memory store event
|
|
680
|
+
*/
|
|
681
|
+
private handleMemoryStoreEvent(event: { key: string; value: any; entry: any }): void {
|
|
682
|
+
this.emit('memory:stored', event);
|
|
683
|
+
}
|
|
684
|
+
|
|
685
|
+
/**
|
|
686
|
+
* Handle memory remote update
|
|
687
|
+
*/
|
|
688
|
+
private handleMemoryRemoteUpdate(update: any): void {
|
|
689
|
+
this.emit('memory:updated', update);
|
|
690
|
+
}
|
|
691
|
+
|
|
692
|
+
/**
|
|
693
|
+
* Route direct message to specific agent
|
|
694
|
+
*/
|
|
695
|
+
private async routeDirectMessage(event: any): Promise<void> {
|
|
696
|
+
if (this.communicationBus && this.communicationBus.publish) {
|
|
697
|
+
const topic = `agent:${event.targetAgent}:direct`;
|
|
698
|
+
const payload = this.serializeMessage(event);
|
|
699
|
+
await this.communicationBus.publish(topic, payload, 0); // High priority
|
|
700
|
+
}
|
|
701
|
+
}
|
|
702
|
+
|
|
703
|
+
/**
|
|
704
|
+
* Route broadcast message to layer
|
|
705
|
+
*/
|
|
706
|
+
private async routeBroadcastMessage(event: any): Promise<void> {
|
|
707
|
+
if (this.communicationBus && this.communicationBus.publish) {
|
|
708
|
+
const topic = `swarm:${event.swarmId}:broadcast`;
|
|
709
|
+
const payload = this.serializeMessage(event);
|
|
710
|
+
await this.communicationBus.publish(topic, payload, 2); // Normal priority
|
|
711
|
+
}
|
|
712
|
+
}
|
|
713
|
+
|
|
714
|
+
/**
|
|
715
|
+
* Route hierarchical message through coordinators
|
|
716
|
+
*/
|
|
717
|
+
private async routeHierarchicalMessage(event: any): Promise<void> {
|
|
718
|
+
if (this.communicationBus && this.communicationBus.publish) {
|
|
719
|
+
const topic = `coordinator:${event.coordinator}:hierarchical`;
|
|
720
|
+
const payload = this.serializeMessage(event);
|
|
721
|
+
await this.communicationBus.publish(topic, payload, 1); // High priority
|
|
722
|
+
}
|
|
723
|
+
}
|
|
724
|
+
|
|
725
|
+
/**
|
|
726
|
+
* Handle feature development completed
|
|
727
|
+
*/
|
|
728
|
+
private async handleFeatureDevelopmentCompleted(event: { swarmId: string; status: SwarmExecutionStatus }): Promise<void> {
|
|
729
|
+
const { swarmId, status } = event;
|
|
730
|
+
|
|
731
|
+
await this.broadcastCoordinationEvent({
|
|
732
|
+
type: 'swarm:phase:completed',
|
|
733
|
+
swarmId,
|
|
734
|
+
data: {
|
|
735
|
+
phase: 'feature-development-complete',
|
|
736
|
+
status: status.status,
|
|
737
|
+
performance: status.performance
|
|
738
|
+
},
|
|
739
|
+
timestamp: new Date().toISOString(),
|
|
740
|
+
priority: 'high'
|
|
741
|
+
});
|
|
742
|
+
|
|
743
|
+
// Cleanup swarm resources
|
|
744
|
+
await this.cleanupSwarm(swarmId);
|
|
745
|
+
|
|
746
|
+
this.metrics.activeSwarms--;
|
|
747
|
+
}
|
|
748
|
+
|
|
749
|
+
/**
|
|
750
|
+
* Handle swarm scaled
|
|
751
|
+
*/
|
|
752
|
+
private async handleSwarmScaled(event: any): Promise<void> {
|
|
753
|
+
const { swarmId, newTeamSize } = event;
|
|
754
|
+
|
|
755
|
+
await this.broadcastCoordinationEvent({
|
|
756
|
+
type: 'swarm:phase:started',
|
|
757
|
+
swarmId,
|
|
758
|
+
data: {
|
|
759
|
+
phase: 'swarm-scaled',
|
|
760
|
+
newTeamSize,
|
|
761
|
+
action: event.action
|
|
762
|
+
},
|
|
763
|
+
timestamp: new Date().toISOString(),
|
|
764
|
+
priority: 'high'
|
|
765
|
+
});
|
|
766
|
+
}
|
|
767
|
+
|
|
768
|
+
/**
|
|
769
|
+
* Cleanup swarm resources
|
|
770
|
+
*/
|
|
771
|
+
private async cleanupSwarm(swarmId: string): Promise<void> {
|
|
772
|
+
// Remove agent subscriptions
|
|
773
|
+
const agents = this.swarmSubscriptions.get(swarmId);
|
|
774
|
+
if (agents) {
|
|
775
|
+
for (const agentId of agents) {
|
|
776
|
+
this.agentQueues.delete(agentId);
|
|
777
|
+
this.metrics.activeAgents--;
|
|
778
|
+
}
|
|
779
|
+
this.swarmSubscriptions.delete(swarmId);
|
|
780
|
+
}
|
|
781
|
+
|
|
782
|
+
// Clear memory namespace
|
|
783
|
+
if (this.memoryStore && this.config.persistMemory === false) {
|
|
784
|
+
// Memory cleanup logic would go here
|
|
785
|
+
}
|
|
786
|
+
}
|
|
787
|
+
|
|
788
|
+
/**
|
|
789
|
+
* Build message topic for routing
|
|
790
|
+
*/
|
|
791
|
+
private buildMessageTopic(message: FullStackAgentMessage): string {
|
|
792
|
+
if (message.targetAgents && message.targetAgents.length > 0) {
|
|
793
|
+
return `agent:${message.targetAgents[0]}:direct`;
|
|
794
|
+
}
|
|
795
|
+
if (message.layer) {
|
|
796
|
+
return `layer:${message.layer}:${message.messageType}`;
|
|
797
|
+
}
|
|
798
|
+
return `swarm:${message.swarmId}:${message.messageType}`;
|
|
799
|
+
}
|
|
800
|
+
|
|
801
|
+
/**
|
|
802
|
+
* Map message priority to communication bus priority
|
|
803
|
+
*/
|
|
804
|
+
private getPriority(priority: string): number {
|
|
805
|
+
const priorityMap: Record<string, number> = {
|
|
806
|
+
'critical': 0,
|
|
807
|
+
'urgent': 0,
|
|
808
|
+
'high': 1,
|
|
809
|
+
'medium': 2,
|
|
810
|
+
'low': 3
|
|
811
|
+
};
|
|
812
|
+
return priorityMap[priority] || 2;
|
|
813
|
+
}
|
|
814
|
+
|
|
815
|
+
/**
|
|
816
|
+
* Map message type to coordination event type
|
|
817
|
+
*/
|
|
818
|
+
private mapMessageTypeToCoordinationEvent(messageType: string): CoordinationEventType {
|
|
819
|
+
const typeMap: Record<string, CoordinationEventType> = {
|
|
820
|
+
'task-start': 'agent:working',
|
|
821
|
+
'completion': 'agent:completed',
|
|
822
|
+
'error': 'agent:failed',
|
|
823
|
+
'coordination': 'swarm:coordination:required',
|
|
824
|
+
'decision': 'swarm:coordination:required'
|
|
825
|
+
};
|
|
826
|
+
return typeMap[messageType] || 'swarm:progress:update';
|
|
827
|
+
}
|
|
828
|
+
|
|
829
|
+
/**
|
|
830
|
+
* Get agent layer from agent type
|
|
831
|
+
*/
|
|
832
|
+
private getAgentLayer(agentType: string): string {
|
|
833
|
+
if (agentType.includes('frontend') || agentType.includes('ui')) return 'frontend';
|
|
834
|
+
if (agentType.includes('backend') || agentType.includes('api')) return 'backend';
|
|
835
|
+
if (agentType.includes('database') || agentType.includes('data')) return 'database';
|
|
836
|
+
if (agentType.includes('devops') || agentType.includes('deployment')) return 'infrastructure';
|
|
837
|
+
if (agentType.includes('qa') || agentType.includes('test')) return 'testing';
|
|
838
|
+
return 'general';
|
|
839
|
+
}
|
|
840
|
+
|
|
841
|
+
/**
|
|
842
|
+
* Serialize message for communication bus
|
|
843
|
+
*/
|
|
844
|
+
private serializeMessage(message: any): ArrayBuffer {
|
|
845
|
+
const json = JSON.stringify(message);
|
|
846
|
+
const encoder = new TextEncoder();
|
|
847
|
+
return encoder.encode(json).buffer;
|
|
848
|
+
}
|
|
849
|
+
|
|
850
|
+
/**
|
|
851
|
+
* Serialize coordination event
|
|
852
|
+
*/
|
|
853
|
+
private serializeCoordinationEvent(event: CoordinationEvent): ArrayBuffer {
|
|
854
|
+
const json = JSON.stringify(event);
|
|
855
|
+
const encoder = new TextEncoder();
|
|
856
|
+
return encoder.encode(json).buffer;
|
|
857
|
+
}
|
|
858
|
+
|
|
859
|
+
/**
|
|
860
|
+
* Should store coordination event in memory
|
|
861
|
+
*/
|
|
862
|
+
private shouldStoreCoordinationEvent(event: CoordinationEvent): boolean {
|
|
863
|
+
// Store important coordination events
|
|
864
|
+
const importantTypes: CoordinationEventType[] = [
|
|
865
|
+
'swarm:phase:started',
|
|
866
|
+
'swarm:phase:completed',
|
|
867
|
+
'swarm:coordination:required',
|
|
868
|
+
'swarm:conflict:detected'
|
|
869
|
+
];
|
|
870
|
+
return importantTypes.includes(event.type);
|
|
871
|
+
}
|
|
872
|
+
|
|
873
|
+
/**
|
|
874
|
+
* Update latency metrics
|
|
875
|
+
*/
|
|
876
|
+
private updateLatencyMetrics(latency: number): void {
|
|
877
|
+
const alpha = 0.2;
|
|
878
|
+
this.metrics.averageLatency = alpha * latency + (1 - alpha) * this.metrics.averageLatency;
|
|
879
|
+
}
|
|
880
|
+
|
|
881
|
+
/**
|
|
882
|
+
* Start metrics collection
|
|
883
|
+
*/
|
|
884
|
+
private startMetricsCollection(): void {
|
|
885
|
+
setInterval(() => {
|
|
886
|
+
this.emit('metrics:updated', this.getMetrics());
|
|
887
|
+
}, this.config.metricsInterval);
|
|
888
|
+
}
|
|
889
|
+
|
|
890
|
+
/**
|
|
891
|
+
* Get comprehensive metrics
|
|
892
|
+
*/
|
|
893
|
+
getMetrics(): any {
|
|
894
|
+
return {
|
|
895
|
+
...this.metrics,
|
|
896
|
+
communicationEnabled: this.communicationEnabled,
|
|
897
|
+
componentsActive: {
|
|
898
|
+
communicationBus: !!this.communicationBus,
|
|
899
|
+
memoryStore: !!this.memoryStore,
|
|
900
|
+
orchestrator: !!this.orchestrator,
|
|
901
|
+
messageRouter: !!this.messageRouter
|
|
902
|
+
},
|
|
903
|
+
communicationBusMetrics: this.communicationBus?.getMetrics?.() || null,
|
|
904
|
+
memoryStoreMetrics: this.memoryStore?.getMetrics?.() || null
|
|
905
|
+
};
|
|
906
|
+
}
|
|
907
|
+
|
|
908
|
+
/**
|
|
909
|
+
* Graceful shutdown
|
|
910
|
+
*/
|
|
911
|
+
async shutdown(): Promise<void> {
|
|
912
|
+
this.logger.info('Shutting down Communication Bridge');
|
|
913
|
+
|
|
914
|
+
// Cleanup all swarms
|
|
915
|
+
for (const swarmId of this.swarmSubscriptions.keys()) {
|
|
916
|
+
await this.cleanupSwarm(swarmId);
|
|
917
|
+
}
|
|
918
|
+
|
|
919
|
+
// Close communication components
|
|
920
|
+
if (this.communicationBus && this.communicationBus.shutdown) {
|
|
921
|
+
await this.communicationBus.shutdown();
|
|
922
|
+
}
|
|
923
|
+
|
|
924
|
+
if (this.memoryStore && this.memoryStore.close) {
|
|
925
|
+
await this.memoryStore.close();
|
|
926
|
+
}
|
|
927
|
+
|
|
928
|
+
this.emit('bridge:shutdown');
|
|
929
|
+
this.logger.info('Communication Bridge shutdown complete');
|
|
930
|
+
}
|
|
931
|
+
}
|