@claude-flow/cli 3.0.0-alpha.6 → 3.0.0-alpha.60
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/analyze-code-quality.md +181 -0
- package/.claude/agents/analysis/code-analyzer.md +210 -0
- package/.claude/agents/architecture/arch-system-design.md +157 -0
- package/.claude/agents/consensus/byzantine-coordinator.md +63 -0
- package/.claude/agents/consensus/crdt-synchronizer.md +997 -0
- package/.claude/agents/consensus/gossip-coordinator.md +63 -0
- package/.claude/agents/consensus/performance-benchmarker.md +851 -0
- package/.claude/agents/consensus/quorum-manager.md +823 -0
- package/.claude/agents/consensus/raft-manager.md +63 -0
- package/.claude/agents/consensus/security-manager.md +622 -0
- package/.claude/agents/core/coder.md +453 -0
- package/.claude/agents/core/planner.md +375 -0
- package/.claude/agents/core/researcher.md +369 -0
- package/.claude/agents/core/reviewer.md +520 -0
- package/.claude/agents/core/tester.md +512 -0
- package/.claude/agents/custom/test-long-runner.md +44 -0
- package/.claude/agents/data/data-ml-model.md +445 -0
- package/.claude/agents/development/dev-backend-api.md +346 -0
- package/.claude/agents/devops/ops-cicd-github.md +165 -0
- package/.claude/agents/documentation/docs-api-openapi.md +355 -0
- package/.claude/agents/flow-nexus/app-store.md +88 -0
- package/.claude/agents/flow-nexus/authentication.md +69 -0
- package/.claude/agents/flow-nexus/challenges.md +81 -0
- package/.claude/agents/flow-nexus/neural-network.md +88 -0
- package/.claude/agents/flow-nexus/payments.md +83 -0
- package/.claude/agents/flow-nexus/sandbox.md +76 -0
- package/.claude/agents/flow-nexus/swarm.md +76 -0
- package/.claude/agents/flow-nexus/user-tools.md +96 -0
- package/.claude/agents/flow-nexus/workflow.md +84 -0
- package/.claude/agents/github/code-review-swarm.md +377 -0
- package/.claude/agents/github/github-modes.md +173 -0
- package/.claude/agents/github/issue-tracker.md +576 -0
- package/.claude/agents/github/multi-repo-swarm.md +553 -0
- package/.claude/agents/github/pr-manager.md +438 -0
- package/.claude/agents/github/project-board-sync.md +509 -0
- package/.claude/agents/github/release-manager.md +605 -0
- package/.claude/agents/github/release-swarm.md +583 -0
- package/.claude/agents/github/repo-architect.md +398 -0
- package/.claude/agents/github/swarm-issue.md +573 -0
- package/.claude/agents/github/swarm-pr.md +428 -0
- package/.claude/agents/github/sync-coordinator.md +452 -0
- package/.claude/agents/github/workflow-automation.md +903 -0
- package/.claude/agents/goal/agent.md +816 -0
- package/.claude/agents/goal/goal-planner.md +73 -0
- package/.claude/agents/optimization/benchmark-suite.md +665 -0
- package/.claude/agents/optimization/load-balancer.md +431 -0
- package/.claude/agents/optimization/performance-monitor.md +672 -0
- package/.claude/agents/optimization/resource-allocator.md +674 -0
- package/.claude/agents/optimization/topology-optimizer.md +808 -0
- package/.claude/agents/payments/agentic-payments.md +126 -0
- package/.claude/agents/sona/sona-learning-optimizer.md +254 -0
- package/.claude/agents/sparc/architecture.md +699 -0
- package/.claude/agents/sparc/pseudocode.md +520 -0
- package/.claude/agents/sparc/refinement.md +802 -0
- package/.claude/agents/sparc/specification.md +478 -0
- package/.claude/agents/specialized/spec-mobile-react-native.md +227 -0
- package/.claude/agents/sublinear/consensus-coordinator.md +338 -0
- package/.claude/agents/sublinear/matrix-optimizer.md +185 -0
- package/.claude/agents/sublinear/pagerank-analyzer.md +299 -0
- package/.claude/agents/sublinear/performance-optimizer.md +368 -0
- package/.claude/agents/sublinear/trading-predictor.md +246 -0
- package/.claude/agents/swarm/adaptive-coordinator.md +1127 -0
- package/.claude/agents/swarm/hierarchical-coordinator.md +710 -0
- package/.claude/agents/swarm/mesh-coordinator.md +963 -0
- package/.claude/agents/templates/automation-smart-agent.md +205 -0
- package/.claude/agents/templates/base-template-generator.md +268 -0
- package/.claude/agents/templates/coordinator-swarm-init.md +90 -0
- package/.claude/agents/templates/github-pr-manager.md +177 -0
- package/.claude/agents/templates/implementer-sparc-coder.md +259 -0
- package/.claude/agents/templates/memory-coordinator.md +187 -0
- package/.claude/agents/templates/orchestrator-task.md +139 -0
- package/.claude/agents/templates/performance-analyzer.md +199 -0
- package/.claude/agents/templates/sparc-coordinator.md +514 -0
- package/.claude/agents/testing/production-validator.md +395 -0
- package/.claude/agents/testing/tdd-london-swarm.md +244 -0
- package/.claude/agents/v3/adr-architect.md +184 -0
- package/.claude/agents/v3/claims-authorizer.md +208 -0
- package/.claude/agents/v3/collective-intelligence-coordinator.md +993 -0
- package/.claude/agents/v3/ddd-domain-expert.md +220 -0
- package/.claude/agents/v3/memory-specialist.md +995 -0
- package/.claude/agents/v3/performance-engineer.md +1233 -0
- package/.claude/agents/v3/reasoningbank-learner.md +213 -0
- package/.claude/agents/v3/security-architect.md +867 -0
- package/.claude/agents/v3/security-auditor.md +771 -0
- package/.claude/agents/v3/sparc-orchestrator.md +182 -0
- package/.claude/agents/v3/swarm-memory-manager.md +157 -0
- package/.claude/agents/v3/v3-integration-architect.md +205 -0
- package/.claude/commands/agents/README.md +50 -0
- package/.claude/commands/agents/agent-capabilities.md +140 -0
- package/.claude/commands/agents/agent-coordination.md +28 -0
- package/.claude/commands/agents/agent-spawning.md +28 -0
- package/.claude/commands/agents/agent-types.md +216 -0
- package/.claude/commands/agents/health.md +139 -0
- package/.claude/commands/agents/list.md +100 -0
- package/.claude/commands/agents/logs.md +130 -0
- package/.claude/commands/agents/metrics.md +122 -0
- package/.claude/commands/agents/pool.md +127 -0
- package/.claude/commands/agents/spawn.md +140 -0
- package/.claude/commands/agents/status.md +115 -0
- package/.claude/commands/agents/stop.md +102 -0
- package/.claude/commands/analysis/COMMAND_COMPLIANCE_REPORT.md +54 -0
- package/.claude/commands/analysis/README.md +9 -0
- package/.claude/commands/analysis/bottleneck-detect.md +162 -0
- package/.claude/commands/analysis/performance-bottlenecks.md +59 -0
- package/.claude/commands/analysis/performance-report.md +25 -0
- package/.claude/commands/analysis/token-efficiency.md +45 -0
- package/.claude/commands/analysis/token-usage.md +25 -0
- package/.claude/commands/automation/README.md +9 -0
- package/.claude/commands/automation/auto-agent.md +122 -0
- package/.claude/commands/automation/self-healing.md +106 -0
- package/.claude/commands/automation/session-memory.md +90 -0
- package/.claude/commands/automation/smart-agents.md +73 -0
- package/.claude/commands/automation/smart-spawn.md +25 -0
- package/.claude/commands/automation/workflow-select.md +25 -0
- package/.claude/commands/claude-flow-help.md +103 -0
- package/.claude/commands/claude-flow-memory.md +107 -0
- package/.claude/commands/claude-flow-swarm.md +205 -0
- package/.claude/commands/coordination/README.md +9 -0
- package/.claude/commands/coordination/agent-spawn.md +25 -0
- package/.claude/commands/coordination/init.md +44 -0
- package/.claude/commands/coordination/orchestrate.md +43 -0
- package/.claude/commands/coordination/spawn.md +45 -0
- package/.claude/commands/coordination/swarm-init.md +85 -0
- package/.claude/commands/coordination/task-orchestrate.md +25 -0
- package/.claude/commands/flow-nexus/app-store.md +124 -0
- package/.claude/commands/flow-nexus/challenges.md +120 -0
- package/.claude/commands/flow-nexus/login-registration.md +65 -0
- package/.claude/commands/flow-nexus/neural-network.md +134 -0
- package/.claude/commands/flow-nexus/payments.md +116 -0
- package/.claude/commands/flow-nexus/sandbox.md +83 -0
- package/.claude/commands/flow-nexus/swarm.md +87 -0
- package/.claude/commands/flow-nexus/user-tools.md +152 -0
- package/.claude/commands/flow-nexus/workflow.md +115 -0
- package/.claude/commands/github/README.md +11 -0
- package/.claude/commands/github/code-review-swarm.md +514 -0
- package/.claude/commands/github/code-review.md +25 -0
- package/.claude/commands/github/github-modes.md +147 -0
- package/.claude/commands/github/github-swarm.md +121 -0
- package/.claude/commands/github/issue-tracker.md +292 -0
- package/.claude/commands/github/issue-triage.md +25 -0
- package/.claude/commands/github/multi-repo-swarm.md +519 -0
- package/.claude/commands/github/pr-enhance.md +26 -0
- package/.claude/commands/github/pr-manager.md +170 -0
- package/.claude/commands/github/project-board-sync.md +471 -0
- package/.claude/commands/github/release-manager.md +338 -0
- package/.claude/commands/github/release-swarm.md +544 -0
- package/.claude/commands/github/repo-analyze.md +25 -0
- package/.claude/commands/github/repo-architect.md +367 -0
- package/.claude/commands/github/swarm-issue.md +482 -0
- package/.claude/commands/github/swarm-pr.md +285 -0
- package/.claude/commands/github/sync-coordinator.md +301 -0
- package/.claude/commands/github/workflow-automation.md +442 -0
- package/.claude/commands/hive-mind/README.md +17 -0
- package/.claude/commands/hive-mind/hive-mind-consensus.md +8 -0
- package/.claude/commands/hive-mind/hive-mind-init.md +18 -0
- package/.claude/commands/hive-mind/hive-mind-memory.md +8 -0
- package/.claude/commands/hive-mind/hive-mind-metrics.md +8 -0
- package/.claude/commands/hive-mind/hive-mind-resume.md +8 -0
- package/.claude/commands/hive-mind/hive-mind-sessions.md +8 -0
- package/.claude/commands/hive-mind/hive-mind-spawn.md +21 -0
- package/.claude/commands/hive-mind/hive-mind-status.md +8 -0
- package/.claude/commands/hive-mind/hive-mind-stop.md +8 -0
- package/.claude/commands/hive-mind/hive-mind-wizard.md +8 -0
- package/.claude/commands/hive-mind/hive-mind.md +27 -0
- package/.claude/commands/hooks/README.md +11 -0
- package/.claude/commands/hooks/overview.md +58 -0
- package/.claude/commands/hooks/post-edit.md +117 -0
- package/.claude/commands/hooks/post-task.md +112 -0
- package/.claude/commands/hooks/pre-edit.md +113 -0
- package/.claude/commands/hooks/pre-task.md +111 -0
- package/.claude/commands/hooks/session-end.md +118 -0
- package/.claude/commands/hooks/setup.md +103 -0
- package/.claude/commands/memory/README.md +9 -0
- package/.claude/commands/memory/memory-persist.md +25 -0
- package/.claude/commands/memory/memory-search.md +25 -0
- package/.claude/commands/memory/memory-usage.md +25 -0
- package/.claude/commands/memory/neural.md +47 -0
- package/.claude/commands/monitoring/README.md +9 -0
- package/.claude/commands/monitoring/agent-metrics.md +25 -0
- package/.claude/commands/monitoring/agents.md +44 -0
- package/.claude/commands/monitoring/real-time-view.md +25 -0
- package/.claude/commands/monitoring/status.md +46 -0
- package/.claude/commands/monitoring/swarm-monitor.md +25 -0
- package/.claude/commands/optimization/README.md +9 -0
- package/.claude/commands/optimization/auto-topology.md +62 -0
- package/.claude/commands/optimization/cache-manage.md +25 -0
- package/.claude/commands/optimization/parallel-execute.md +25 -0
- package/.claude/commands/optimization/parallel-execution.md +50 -0
- package/.claude/commands/optimization/topology-optimize.md +25 -0
- package/.claude/commands/pair/README.md +261 -0
- package/.claude/commands/pair/commands.md +546 -0
- package/.claude/commands/pair/config.md +510 -0
- package/.claude/commands/pair/examples.md +512 -0
- package/.claude/commands/pair/modes.md +348 -0
- package/.claude/commands/pair/session.md +407 -0
- package/.claude/commands/pair/start.md +209 -0
- package/.claude/commands/sparc/analyzer.md +52 -0
- package/.claude/commands/sparc/architect.md +53 -0
- package/.claude/commands/sparc/ask.md +97 -0
- package/.claude/commands/sparc/batch-executor.md +54 -0
- package/.claude/commands/sparc/code.md +89 -0
- package/.claude/commands/sparc/coder.md +54 -0
- package/.claude/commands/sparc/debug.md +83 -0
- package/.claude/commands/sparc/debugger.md +54 -0
- package/.claude/commands/sparc/designer.md +53 -0
- package/.claude/commands/sparc/devops.md +109 -0
- package/.claude/commands/sparc/docs-writer.md +80 -0
- package/.claude/commands/sparc/documenter.md +54 -0
- package/.claude/commands/sparc/innovator.md +54 -0
- package/.claude/commands/sparc/integration.md +83 -0
- package/.claude/commands/sparc/mcp.md +117 -0
- package/.claude/commands/sparc/memory-manager.md +54 -0
- package/.claude/commands/sparc/optimizer.md +54 -0
- package/.claude/commands/sparc/orchestrator.md +132 -0
- package/.claude/commands/sparc/post-deployment-monitoring-mode.md +83 -0
- package/.claude/commands/sparc/refinement-optimization-mode.md +83 -0
- package/.claude/commands/sparc/researcher.md +54 -0
- package/.claude/commands/sparc/reviewer.md +54 -0
- package/.claude/commands/sparc/security-review.md +80 -0
- package/.claude/commands/sparc/sparc-modes.md +174 -0
- package/.claude/commands/sparc/sparc.md +111 -0
- package/.claude/commands/sparc/spec-pseudocode.md +80 -0
- package/.claude/commands/sparc/supabase-admin.md +348 -0
- package/.claude/commands/sparc/swarm-coordinator.md +54 -0
- package/.claude/commands/sparc/tdd.md +54 -0
- package/.claude/commands/sparc/tester.md +54 -0
- package/.claude/commands/sparc/tutorial.md +79 -0
- package/.claude/commands/sparc/workflow-manager.md +54 -0
- package/.claude/commands/sparc.md +166 -0
- package/.claude/commands/stream-chain/pipeline.md +121 -0
- package/.claude/commands/stream-chain/run.md +70 -0
- package/.claude/commands/swarm/README.md +15 -0
- package/.claude/commands/swarm/analysis.md +95 -0
- package/.claude/commands/swarm/development.md +96 -0
- package/.claude/commands/swarm/examples.md +168 -0
- package/.claude/commands/swarm/maintenance.md +102 -0
- package/.claude/commands/swarm/optimization.md +117 -0
- package/.claude/commands/swarm/research.md +136 -0
- package/.claude/commands/swarm/swarm-analysis.md +8 -0
- package/.claude/commands/swarm/swarm-background.md +8 -0
- package/.claude/commands/swarm/swarm-init.md +19 -0
- package/.claude/commands/swarm/swarm-modes.md +8 -0
- package/.claude/commands/swarm/swarm-monitor.md +8 -0
- package/.claude/commands/swarm/swarm-spawn.md +19 -0
- package/.claude/commands/swarm/swarm-status.md +8 -0
- package/.claude/commands/swarm/swarm-strategies.md +8 -0
- package/.claude/commands/swarm/swarm.md +87 -0
- package/.claude/commands/swarm/testing.md +131 -0
- package/.claude/commands/training/README.md +9 -0
- package/.claude/commands/training/model-update.md +25 -0
- package/.claude/commands/training/neural-patterns.md +74 -0
- package/.claude/commands/training/neural-train.md +25 -0
- package/.claude/commands/training/pattern-learn.md +25 -0
- package/.claude/commands/training/specialization.md +63 -0
- package/.claude/commands/truth/start.md +143 -0
- package/.claude/commands/verify/check.md +50 -0
- package/.claude/commands/verify/start.md +128 -0
- package/.claude/commands/workflows/README.md +9 -0
- package/.claude/commands/workflows/development.md +78 -0
- package/.claude/commands/workflows/research.md +63 -0
- package/.claude/commands/workflows/workflow-create.md +25 -0
- package/.claude/commands/workflows/workflow-execute.md +25 -0
- package/.claude/commands/workflows/workflow-export.md +25 -0
- package/.claude/helpers/README.md +97 -0
- package/.claude/helpers/adr-compliance.sh +186 -0
- package/.claude/helpers/auto-commit.sh +178 -0
- package/.claude/helpers/checkpoint-manager.sh +251 -0
- package/.claude/helpers/daemon-manager.sh +252 -0
- package/.claude/helpers/ddd-tracker.sh +144 -0
- package/.claude/helpers/github-safe.js +106 -0
- package/.claude/helpers/github-setup.sh +28 -0
- package/.claude/helpers/guidance-hook.sh +13 -0
- package/.claude/helpers/guidance-hooks.sh +102 -0
- package/.claude/helpers/health-monitor.sh +108 -0
- package/.claude/helpers/learning-hooks.sh +329 -0
- package/.claude/helpers/learning-optimizer.sh +127 -0
- package/.claude/helpers/learning-service.mjs +1144 -0
- package/.claude/helpers/memory.js +83 -0
- package/.claude/helpers/metrics-db.mjs +488 -0
- package/.claude/helpers/pattern-consolidator.sh +86 -0
- package/.claude/helpers/perf-worker.sh +160 -0
- package/.claude/helpers/post-commit +16 -0
- package/.claude/helpers/pre-commit +26 -0
- package/.claude/helpers/quick-start.sh +19 -0
- package/.claude/helpers/router.js +66 -0
- package/.claude/helpers/security-scanner.sh +127 -0
- package/.claude/helpers/session.js +127 -0
- package/.claude/helpers/setup-mcp.sh +18 -0
- package/.claude/helpers/standard-checkpoint-hooks.sh +189 -0
- package/.claude/helpers/statusline-hook.sh +21 -0
- package/.claude/helpers/statusline.js +316 -0
- package/.claude/helpers/swarm-comms.sh +353 -0
- package/.claude/helpers/swarm-hooks.sh +761 -0
- package/.claude/helpers/swarm-monitor.sh +211 -0
- package/.claude/helpers/sync-v3-metrics.sh +245 -0
- package/.claude/helpers/update-v3-progress.sh +166 -0
- package/.claude/helpers/v3-quick-status.sh +58 -0
- package/.claude/helpers/v3.sh +111 -0
- package/.claude/helpers/validate-v3-config.sh +216 -0
- package/.claude/helpers/worker-manager.sh +170 -0
- package/.claude/settings.json +259 -0
- package/.claude/skills/agentdb-advanced/SKILL.md +550 -0
- package/.claude/skills/agentdb-learning/SKILL.md +545 -0
- package/.claude/skills/agentdb-memory-patterns/SKILL.md +339 -0
- package/.claude/skills/agentdb-optimization/SKILL.md +509 -0
- package/.claude/skills/agentdb-vector-search/SKILL.md +339 -0
- package/.claude/skills/agentic-jujutsu/SKILL.md +645 -0
- package/.claude/skills/flow-nexus-neural/SKILL.md +738 -0
- package/.claude/skills/flow-nexus-platform/SKILL.md +1157 -0
- package/.claude/skills/flow-nexus-swarm/SKILL.md +610 -0
- package/.claude/skills/github-code-review/SKILL.md +1140 -0
- package/.claude/skills/github-multi-repo/SKILL.md +874 -0
- package/.claude/skills/github-project-management/SKILL.md +1277 -0
- package/.claude/skills/github-release-management/SKILL.md +1081 -0
- package/.claude/skills/github-workflow-automation/SKILL.md +1065 -0
- package/.claude/skills/hive-mind-advanced/SKILL.md +712 -0
- package/.claude/skills/hooks-automation/SKILL.md +1201 -0
- package/.claude/skills/pair-programming/SKILL.md +1202 -0
- package/.claude/skills/performance-analysis/SKILL.md +563 -0
- package/.claude/skills/reasoningbank-agentdb/SKILL.md +446 -0
- package/.claude/skills/reasoningbank-intelligence/SKILL.md +201 -0
- package/{.claude-flow → .claude/skills/skill-builder/.claude-flow}/metrics/performance.json +3 -3
- package/.claude/skills/skill-builder/.claude-flow/metrics/task-metrics.json +10 -0
- package/.claude/skills/skill-builder/SKILL.md +910 -0
- package/.claude/skills/sparc-methodology/SKILL.md +1115 -0
- package/.claude/skills/stream-chain/SKILL.md +563 -0
- package/.claude/skills/swarm-advanced/SKILL.md +973 -0
- package/.claude/skills/swarm-orchestration/SKILL.md +179 -0
- package/.claude/skills/v3-cli-modernization/SKILL.md +872 -0
- package/.claude/skills/v3-core-implementation/SKILL.md +797 -0
- package/.claude/skills/v3-ddd-architecture/SKILL.md +442 -0
- package/.claude/skills/v3-integration-deep/SKILL.md +241 -0
- package/.claude/skills/v3-mcp-optimization/SKILL.md +777 -0
- package/.claude/skills/v3-memory-unification/SKILL.md +174 -0
- package/.claude/skills/v3-performance-optimization/SKILL.md +390 -0
- package/.claude/skills/v3-security-overhaul/SKILL.md +82 -0
- package/.claude/skills/v3-swarm-coordination/SKILL.md +340 -0
- package/.claude/skills/verification-quality/SKILL.md +649 -0
- package/.claude/skills/worker-benchmarks/skill.md +135 -0
- package/.claude/skills/worker-integration/skill.md +154 -0
- package/README.md +428 -6
- package/bin/cli.js +142 -6
- package/bin/mcp-server.js +188 -0
- package/dist/src/commands/agent.d.ts.map +1 -1
- package/dist/src/commands/agent.js +42 -26
- package/dist/src/commands/agent.js.map +1 -1
- package/dist/src/commands/analyze.d.ts +19 -0
- package/dist/src/commands/analyze.d.ts.map +1 -0
- package/dist/src/commands/analyze.js +1823 -0
- package/dist/src/commands/analyze.js.map +1 -0
- package/dist/src/commands/claims.d.ts +10 -0
- package/dist/src/commands/claims.d.ts.map +1 -0
- package/dist/src/commands/claims.js +288 -0
- package/dist/src/commands/claims.js.map +1 -0
- package/dist/src/commands/completions.d.ts +10 -0
- package/dist/src/commands/completions.d.ts.map +1 -0
- package/dist/src/commands/completions.js +539 -0
- package/dist/src/commands/completions.js.map +1 -0
- package/dist/src/commands/daemon.d.ts +8 -0
- package/dist/src/commands/daemon.d.ts.map +1 -0
- package/dist/src/commands/daemon.js +593 -0
- package/dist/src/commands/daemon.js.map +1 -0
- package/dist/src/commands/deployment.d.ts +10 -0
- package/dist/src/commands/deployment.d.ts.map +1 -0
- package/dist/src/commands/deployment.js +289 -0
- package/dist/src/commands/deployment.js.map +1 -0
- package/dist/src/commands/doctor.d.ts +10 -0
- package/dist/src/commands/doctor.d.ts.map +1 -0
- package/dist/src/commands/doctor.js +448 -0
- package/dist/src/commands/doctor.js.map +1 -0
- package/dist/src/commands/embeddings.d.ts +18 -0
- package/dist/src/commands/embeddings.d.ts.map +1 -0
- package/dist/src/commands/embeddings.js +616 -0
- package/dist/src/commands/embeddings.js.map +1 -0
- package/dist/src/commands/hive-mind.d.ts.map +1 -1
- package/dist/src/commands/hive-mind.js +252 -35
- package/dist/src/commands/hive-mind.js.map +1 -1
- package/dist/src/commands/hooks.d.ts.map +1 -1
- package/dist/src/commands/hooks.js +729 -6
- package/dist/src/commands/hooks.js.map +1 -1
- package/dist/src/commands/index.d.ts +52 -14
- package/dist/src/commands/index.d.ts.map +1 -1
- package/dist/src/commands/index.js +191 -38
- package/dist/src/commands/index.js.map +1 -1
- package/dist/src/commands/init.d.ts.map +1 -1
- package/dist/src/commands/init.js +80 -9
- package/dist/src/commands/init.js.map +1 -1
- package/dist/src/commands/issues.d.ts +21 -0
- package/dist/src/commands/issues.d.ts.map +1 -0
- package/dist/src/commands/issues.js +567 -0
- package/dist/src/commands/issues.js.map +1 -0
- package/dist/src/commands/mcp.js +3 -3
- package/dist/src/commands/mcp.js.map +1 -1
- package/dist/src/commands/memory.d.ts.map +1 -1
- package/dist/src/commands/memory.js +223 -4
- package/dist/src/commands/memory.js.map +1 -1
- package/dist/src/commands/neural.d.ts +10 -0
- package/dist/src/commands/neural.d.ts.map +1 -0
- package/dist/src/commands/neural.js +224 -0
- package/dist/src/commands/neural.js.map +1 -0
- package/dist/src/commands/performance.d.ts +10 -0
- package/dist/src/commands/performance.d.ts.map +1 -0
- package/dist/src/commands/performance.js +262 -0
- package/dist/src/commands/performance.js.map +1 -0
- package/dist/src/commands/plugins.d.ts +11 -0
- package/dist/src/commands/plugins.d.ts.map +1 -0
- package/dist/src/commands/plugins.js +630 -0
- package/dist/src/commands/plugins.js.map +1 -0
- package/dist/src/commands/progress.d.ts +11 -0
- package/dist/src/commands/progress.d.ts.map +1 -0
- package/dist/src/commands/progress.js +259 -0
- package/dist/src/commands/progress.js.map +1 -0
- package/dist/src/commands/providers.d.ts +10 -0
- package/dist/src/commands/providers.d.ts.map +1 -0
- package/dist/src/commands/providers.js +232 -0
- package/dist/src/commands/providers.js.map +1 -0
- package/dist/src/commands/route.d.ts +16 -0
- package/dist/src/commands/route.d.ts.map +1 -0
- package/dist/src/commands/route.js +813 -0
- package/dist/src/commands/route.js.map +1 -0
- package/dist/src/commands/security.d.ts +10 -0
- package/dist/src/commands/security.d.ts.map +1 -0
- package/dist/src/commands/security.js +261 -0
- package/dist/src/commands/security.js.map +1 -0
- package/dist/src/commands/start.d.ts.map +1 -1
- package/dist/src/commands/start.js +22 -2
- package/dist/src/commands/start.js.map +1 -1
- package/dist/src/commands/swarm.d.ts.map +1 -1
- package/dist/src/commands/swarm.js +185 -32
- package/dist/src/commands/swarm.js.map +1 -1
- package/dist/src/commands/transfer-store.d.ts +13 -0
- package/dist/src/commands/transfer-store.d.ts.map +1 -0
- package/dist/src/commands/transfer-store.js +428 -0
- package/dist/src/commands/transfer-store.js.map +1 -0
- package/dist/src/index.d.ts +3 -1
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js +69 -10
- package/dist/src/index.js.map +1 -1
- package/dist/src/init/claudemd-generator.d.ts.map +1 -1
- package/dist/src/init/claudemd-generator.js +407 -405
- package/dist/src/init/claudemd-generator.js.map +1 -1
- package/dist/src/init/executor.d.ts.map +1 -1
- package/dist/src/init/executor.js +142 -31
- package/dist/src/init/executor.js.map +1 -1
- package/dist/src/init/helpers-generator.js +1 -1
- package/dist/src/init/helpers-generator.js.map +1 -1
- package/dist/src/init/mcp-generator.d.ts +9 -0
- package/dist/src/init/mcp-generator.d.ts.map +1 -1
- package/dist/src/init/mcp-generator.js +57 -28
- package/dist/src/init/mcp-generator.js.map +1 -1
- package/dist/src/init/settings-generator.d.ts.map +1 -1
- package/dist/src/init/settings-generator.js +116 -62
- package/dist/src/init/settings-generator.js.map +1 -1
- package/dist/src/init/statusline-generator.d.ts +6 -0
- package/dist/src/init/statusline-generator.d.ts.map +1 -1
- package/dist/src/init/statusline-generator.js +252 -89
- package/dist/src/init/statusline-generator.js.map +1 -1
- package/dist/src/init/types.d.ts +6 -0
- package/dist/src/init/types.d.ts.map +1 -1
- package/dist/src/init/types.js +8 -2
- package/dist/src/init/types.js.map +1 -1
- package/dist/src/mcp-client.d.ts.map +1 -1
- package/dist/src/mcp-client.js +17 -1
- package/dist/src/mcp-client.js.map +1 -1
- package/dist/src/mcp-server.d.ts +6 -1
- package/dist/src/mcp-server.d.ts.map +1 -1
- package/dist/src/mcp-server.js +169 -38
- package/dist/src/mcp-server.js.map +1 -1
- package/dist/src/mcp-tools/agent-tools.d.ts +1 -1
- package/dist/src/mcp-tools/agent-tools.d.ts.map +1 -1
- package/dist/src/mcp-tools/agent-tools.js +350 -14
- package/dist/src/mcp-tools/agent-tools.js.map +1 -1
- package/dist/src/mcp-tools/analyze-tools.d.ts +38 -0
- package/dist/src/mcp-tools/analyze-tools.d.ts.map +1 -0
- package/dist/src/mcp-tools/analyze-tools.js +317 -0
- package/dist/src/mcp-tools/analyze-tools.js.map +1 -0
- package/dist/src/mcp-tools/config-tools.d.ts +1 -1
- package/dist/src/mcp-tools/config-tools.d.ts.map +1 -1
- package/dist/src/mcp-tools/config-tools.js +262 -15
- package/dist/src/mcp-tools/config-tools.js.map +1 -1
- package/dist/src/mcp-tools/hive-mind-tools.d.ts +8 -0
- package/dist/src/mcp-tools/hive-mind-tools.d.ts.map +1 -0
- package/dist/src/mcp-tools/hive-mind-tools.js +447 -0
- package/dist/src/mcp-tools/hive-mind-tools.js.map +1 -0
- package/dist/src/mcp-tools/hooks-tools.d.ts.map +1 -1
- package/dist/src/mcp-tools/hooks-tools.js +195 -31
- package/dist/src/mcp-tools/hooks-tools.js.map +1 -1
- package/dist/src/mcp-tools/index.d.ts +6 -0
- package/dist/src/mcp-tools/index.d.ts.map +1 -1
- package/dist/src/mcp-tools/index.js +6 -0
- package/dist/src/mcp-tools/index.js.map +1 -1
- package/dist/src/mcp-tools/progress-tools.d.ts +14 -0
- package/dist/src/mcp-tools/progress-tools.d.ts.map +1 -0
- package/dist/src/mcp-tools/progress-tools.js +343 -0
- package/dist/src/mcp-tools/progress-tools.js.map +1 -0
- package/dist/src/mcp-tools/session-tools.d.ts +1 -1
- package/dist/src/mcp-tools/session-tools.d.ts.map +1 -1
- package/dist/src/mcp-tools/session-tools.js +237 -22
- package/dist/src/mcp-tools/session-tools.js.map +1 -1
- package/dist/src/mcp-tools/task-tools.d.ts +1 -1
- package/dist/src/mcp-tools/task-tools.d.ts.map +1 -1
- package/dist/src/mcp-tools/task-tools.js +219 -17
- package/dist/src/mcp-tools/task-tools.js.map +1 -1
- package/dist/src/mcp-tools/transfer-tools.d.ts +14 -0
- package/dist/src/mcp-tools/transfer-tools.d.ts.map +1 -0
- package/dist/src/mcp-tools/transfer-tools.js +396 -0
- package/dist/src/mcp-tools/transfer-tools.js.map +1 -0
- package/dist/src/mcp-tools/workflow-tools.d.ts +8 -0
- package/dist/src/mcp-tools/workflow-tools.d.ts.map +1 -0
- package/dist/src/mcp-tools/workflow-tools.js +481 -0
- package/dist/src/mcp-tools/workflow-tools.js.map +1 -0
- package/dist/src/output.d.ts +16 -0
- package/dist/src/output.d.ts.map +1 -1
- package/dist/src/output.js +42 -0
- package/dist/src/output.js.map +1 -1
- package/dist/src/plugins/store/discovery.d.ts +73 -0
- package/dist/src/plugins/store/discovery.d.ts.map +1 -0
- package/dist/src/plugins/store/discovery.js +568 -0
- package/dist/src/plugins/store/discovery.js.map +1 -0
- package/dist/src/plugins/store/index.d.ts +76 -0
- package/dist/src/plugins/store/index.d.ts.map +1 -0
- package/dist/src/plugins/store/index.js +141 -0
- package/dist/src/plugins/store/index.js.map +1 -0
- package/dist/src/plugins/store/search.d.ts +46 -0
- package/dist/src/plugins/store/search.d.ts.map +1 -0
- package/dist/src/plugins/store/search.js +230 -0
- package/dist/src/plugins/store/search.js.map +1 -0
- package/dist/src/plugins/store/types.d.ts +274 -0
- package/dist/src/plugins/store/types.d.ts.map +1 -0
- package/dist/src/plugins/store/types.js +7 -0
- package/dist/src/plugins/store/types.js.map +1 -0
- package/dist/src/plugins/tests/demo-plugin-store.d.ts +7 -0
- package/dist/src/plugins/tests/demo-plugin-store.d.ts.map +1 -0
- package/dist/src/plugins/tests/demo-plugin-store.js +126 -0
- package/dist/src/plugins/tests/demo-plugin-store.js.map +1 -0
- package/dist/src/plugins/tests/standalone-test.d.ts +12 -0
- package/dist/src/plugins/tests/standalone-test.d.ts.map +1 -0
- package/dist/src/plugins/tests/standalone-test.js +188 -0
- package/dist/src/plugins/tests/standalone-test.js.map +1 -0
- package/dist/src/plugins/tests/test-plugin-store.d.ts +7 -0
- package/dist/src/plugins/tests/test-plugin-store.d.ts.map +1 -0
- package/dist/src/plugins/tests/test-plugin-store.js +206 -0
- package/dist/src/plugins/tests/test-plugin-store.js.map +1 -0
- package/dist/src/ruvector/ast-analyzer.d.ts +67 -0
- package/dist/src/ruvector/ast-analyzer.d.ts.map +1 -0
- package/dist/src/ruvector/ast-analyzer.js +277 -0
- package/dist/src/ruvector/ast-analyzer.js.map +1 -0
- package/dist/src/ruvector/coverage-router.d.ts +160 -0
- package/dist/src/ruvector/coverage-router.d.ts.map +1 -0
- package/dist/src/ruvector/coverage-router.js +529 -0
- package/dist/src/ruvector/coverage-router.js.map +1 -0
- package/dist/src/ruvector/coverage-tools.d.ts +33 -0
- package/dist/src/ruvector/coverage-tools.d.ts.map +1 -0
- package/dist/src/ruvector/coverage-tools.js +157 -0
- package/dist/src/ruvector/coverage-tools.js.map +1 -0
- package/dist/src/ruvector/diff-classifier.d.ts +175 -0
- package/dist/src/ruvector/diff-classifier.d.ts.map +1 -0
- package/dist/src/ruvector/diff-classifier.js +698 -0
- package/dist/src/ruvector/diff-classifier.js.map +1 -0
- package/dist/src/ruvector/graph-analyzer.d.ts +187 -0
- package/dist/src/ruvector/graph-analyzer.d.ts.map +1 -0
- package/dist/src/ruvector/graph-analyzer.js +929 -0
- package/dist/src/ruvector/graph-analyzer.js.map +1 -0
- package/dist/src/ruvector/index.d.ts +27 -0
- package/dist/src/ruvector/index.d.ts.map +1 -0
- package/dist/src/ruvector/index.js +53 -0
- package/dist/src/ruvector/index.js.map +1 -0
- package/dist/src/ruvector/q-learning-router.d.ts +211 -0
- package/dist/src/ruvector/q-learning-router.d.ts.map +1 -0
- package/dist/src/ruvector/q-learning-router.js +681 -0
- package/dist/src/ruvector/q-learning-router.js.map +1 -0
- package/dist/src/ruvector/vector-db.d.ts +69 -0
- package/dist/src/ruvector/vector-db.d.ts.map +1 -0
- package/dist/src/ruvector/vector-db.js +243 -0
- package/dist/src/ruvector/vector-db.js.map +1 -0
- package/dist/src/services/claim-service.d.ts +204 -0
- package/dist/src/services/claim-service.d.ts.map +1 -0
- package/dist/src/services/claim-service.js +818 -0
- package/dist/src/services/claim-service.js.map +1 -0
- package/dist/src/services/container-worker-pool.d.ts +197 -0
- package/dist/src/services/container-worker-pool.d.ts.map +1 -0
- package/dist/src/services/container-worker-pool.js +581 -0
- package/dist/src/services/container-worker-pool.js.map +1 -0
- package/dist/src/services/headless-worker-executor.d.ts +304 -0
- package/dist/src/services/headless-worker-executor.d.ts.map +1 -0
- package/dist/src/services/headless-worker-executor.js +997 -0
- package/dist/src/services/headless-worker-executor.js.map +1 -0
- package/dist/src/services/index.d.ts +13 -0
- package/dist/src/services/index.d.ts.map +1 -0
- package/dist/src/services/index.js +11 -0
- package/dist/src/services/index.js.map +1 -0
- package/dist/src/services/worker-daemon.d.ts +203 -0
- package/dist/src/services/worker-daemon.d.ts.map +1 -0
- package/dist/src/services/worker-daemon.js +745 -0
- package/dist/src/services/worker-daemon.js.map +1 -0
- package/dist/src/services/worker-queue.d.ts +194 -0
- package/dist/src/services/worker-queue.d.ts.map +1 -0
- package/dist/src/services/worker-queue.js +511 -0
- package/dist/src/services/worker-queue.js.map +1 -0
- package/dist/src/suggest.d.ts +53 -0
- package/dist/src/suggest.d.ts.map +1 -0
- package/dist/src/suggest.js +200 -0
- package/dist/src/suggest.js.map +1 -0
- package/dist/src/transfer/anonymization/index.d.ts +25 -0
- package/dist/src/transfer/anonymization/index.d.ts.map +1 -0
- package/dist/src/transfer/anonymization/index.js +175 -0
- package/dist/src/transfer/anonymization/index.js.map +1 -0
- package/dist/src/transfer/deploy-seraphine.d.ts +13 -0
- package/dist/src/transfer/deploy-seraphine.d.ts.map +1 -0
- package/dist/src/transfer/deploy-seraphine.js +205 -0
- package/dist/src/transfer/deploy-seraphine.js.map +1 -0
- package/dist/src/transfer/export.d.ts +25 -0
- package/dist/src/transfer/export.d.ts.map +1 -0
- package/dist/src/transfer/export.js +113 -0
- package/dist/src/transfer/export.js.map +1 -0
- package/dist/src/transfer/index.d.ts +12 -0
- package/dist/src/transfer/index.d.ts.map +1 -0
- package/dist/src/transfer/index.js +31 -0
- package/dist/src/transfer/index.js.map +1 -0
- package/dist/src/transfer/ipfs/client.d.ts +31 -0
- package/dist/src/transfer/ipfs/client.d.ts.map +1 -0
- package/dist/src/transfer/ipfs/client.js +74 -0
- package/dist/src/transfer/ipfs/client.js.map +1 -0
- package/dist/src/transfer/ipfs/upload.d.ts +95 -0
- package/dist/src/transfer/ipfs/upload.d.ts.map +1 -0
- package/dist/src/transfer/ipfs/upload.js +410 -0
- package/dist/src/transfer/ipfs/upload.js.map +1 -0
- package/dist/src/transfer/models/seraphine.d.ts +72 -0
- package/dist/src/transfer/models/seraphine.d.ts.map +1 -0
- package/dist/src/transfer/models/seraphine.js +373 -0
- package/dist/src/transfer/models/seraphine.js.map +1 -0
- package/dist/src/transfer/serialization/cfp.d.ts +49 -0
- package/dist/src/transfer/serialization/cfp.d.ts.map +1 -0
- package/dist/src/transfer/serialization/cfp.js +180 -0
- package/dist/src/transfer/serialization/cfp.js.map +1 -0
- package/dist/src/transfer/store/discovery.d.ts +84 -0
- package/dist/src/transfer/store/discovery.d.ts.map +1 -0
- package/dist/src/transfer/store/discovery.js +275 -0
- package/dist/src/transfer/store/discovery.js.map +1 -0
- package/dist/src/transfer/store/download.d.ts +70 -0
- package/dist/src/transfer/store/download.d.ts.map +1 -0
- package/dist/src/transfer/store/download.js +295 -0
- package/dist/src/transfer/store/download.js.map +1 -0
- package/dist/src/transfer/store/index.d.ts +84 -0
- package/dist/src/transfer/store/index.d.ts.map +1 -0
- package/dist/src/transfer/store/index.js +153 -0
- package/dist/src/transfer/store/index.js.map +1 -0
- package/dist/src/transfer/store/publish.d.ts +76 -0
- package/dist/src/transfer/store/publish.d.ts.map +1 -0
- package/dist/src/transfer/store/publish.js +262 -0
- package/dist/src/transfer/store/publish.js.map +1 -0
- package/dist/src/transfer/store/registry.d.ts +58 -0
- package/dist/src/transfer/store/registry.d.ts.map +1 -0
- package/dist/src/transfer/store/registry.js +285 -0
- package/dist/src/transfer/store/registry.js.map +1 -0
- package/dist/src/transfer/store/search.d.ts +54 -0
- package/dist/src/transfer/store/search.d.ts.map +1 -0
- package/dist/src/transfer/store/search.js +232 -0
- package/dist/src/transfer/store/search.js.map +1 -0
- package/dist/src/transfer/store/tests/standalone-test.d.ts +12 -0
- package/dist/src/transfer/store/tests/standalone-test.d.ts.map +1 -0
- package/dist/src/transfer/store/tests/standalone-test.js +190 -0
- package/dist/src/transfer/store/tests/standalone-test.js.map +1 -0
- package/dist/src/transfer/store/types.d.ts +193 -0
- package/dist/src/transfer/store/types.d.ts.map +1 -0
- package/dist/src/transfer/store/types.js +6 -0
- package/dist/src/transfer/store/types.js.map +1 -0
- package/dist/src/transfer/test-seraphine.d.ts +6 -0
- package/dist/src/transfer/test-seraphine.d.ts.map +1 -0
- package/dist/src/transfer/test-seraphine.js +105 -0
- package/dist/src/transfer/test-seraphine.js.map +1 -0
- package/dist/src/transfer/tests/test-store.d.ts +7 -0
- package/dist/src/transfer/tests/test-store.d.ts.map +1 -0
- package/dist/src/transfer/tests/test-store.js +214 -0
- package/dist/src/transfer/tests/test-store.js.map +1 -0
- package/dist/src/transfer/types.d.ts +245 -0
- package/dist/src/transfer/types.d.ts.map +1 -0
- package/dist/src/transfer/types.js +6 -0
- package/dist/src/transfer/types.js.map +1 -0
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +37 -9
- package/.agentic-flow/intelligence.json +0 -17
- package/.claude-flow/metrics/task-metrics.json +0 -10
- package/__tests__/README.md +0 -140
- package/__tests__/TEST_SUMMARY.md +0 -144
- package/__tests__/cli.test.ts +0 -558
- package/__tests__/commands.test.ts +0 -726
- package/__tests__/config-adapter.test.ts +0 -362
- package/__tests__/config-loading.test.ts +0 -106
- package/__tests__/coverage/.tmp/coverage-0.json +0 -1
- package/__tests__/coverage/.tmp/coverage-1.json +0 -1
- package/__tests__/coverage/.tmp/coverage-2.json +0 -1
- package/__tests__/coverage/.tmp/coverage-3.json +0 -1
- package/__tests__/coverage/.tmp/coverage-4.json +0 -1
- package/__tests__/coverage/.tmp/coverage-5.json +0 -1
- package/__tests__/mcp-client.test.ts +0 -480
- package/__tests__/p1-commands.test.ts +0 -1064
- package/agents/architect.yaml +0 -11
- package/agents/coder.yaml +0 -11
- package/agents/reviewer.yaml +0 -10
- package/agents/security-architect.yaml +0 -10
- package/agents/tester.yaml +0 -10
- package/docs/CONFIG_LOADING.md +0 -236
- package/docs/IMPLEMENTATION_COMPLETE.md +0 -421
- package/docs/MCP_CLIENT_GUIDE.md +0 -620
- package/docs/REFACTORING_SUMMARY.md +0 -247
- package/src/commands/agent.ts +0 -941
- package/src/commands/config.ts +0 -452
- package/src/commands/hive-mind.ts +0 -762
- package/src/commands/hooks.ts +0 -2603
- package/src/commands/index.ts +0 -115
- package/src/commands/init.ts +0 -597
- package/src/commands/mcp.ts +0 -753
- package/src/commands/memory.ts +0 -1161
- package/src/commands/migrate.ts +0 -447
- package/src/commands/process.ts +0 -695
- package/src/commands/session.ts +0 -891
- package/src/commands/start.ts +0 -457
- package/src/commands/status.ts +0 -736
- package/src/commands/swarm.ts +0 -648
- package/src/commands/task.ts +0 -792
- package/src/commands/workflow.ts +0 -742
- package/src/config-adapter.ts +0 -210
- package/src/index.ts +0 -400
- package/src/infrastructure/in-memory-repositories.ts +0 -310
- package/src/init/claudemd-generator.ts +0 -631
- package/src/init/executor.ts +0 -762
- package/src/init/helpers-generator.ts +0 -628
- package/src/init/index.ts +0 -60
- package/src/init/mcp-generator.ts +0 -83
- package/src/init/settings-generator.ts +0 -274
- package/src/init/statusline-generator.ts +0 -211
- package/src/init/types.ts +0 -447
- package/src/mcp-client.ts +0 -229
- package/src/mcp-server.ts +0 -577
- package/src/mcp-tools/agent-tools.ts +0 -92
- package/src/mcp-tools/config-tools.ts +0 -88
- package/src/mcp-tools/hooks-tools.ts +0 -1849
- package/src/mcp-tools/index.ts +0 -14
- package/src/mcp-tools/memory-tools.ts +0 -270
- package/src/mcp-tools/session-tools.ts +0 -102
- package/src/mcp-tools/swarm-tools.ts +0 -105
- package/src/mcp-tools/task-tools.ts +0 -102
- package/src/mcp-tools/types.ts +0 -33
- package/src/output.ts +0 -593
- package/src/parser.ts +0 -417
- package/src/prompt.ts +0 -619
- package/src/types.ts +0 -287
- package/tsconfig.json +0 -16
- package/tsconfig.tsbuildinfo +0 -1
- package/vitest.config.ts +0 -13
- /package/{tmp.json → .claude/agents/tmp.json} +0 -0
- /package/{.claude-flow → .claude/skills/skill-builder/.claude-flow}/metrics/agent-metrics.json +0 -0
|
@@ -0,0 +1,777 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: "V3 MCP Optimization"
|
|
3
|
+
description: "MCP server optimization and transport layer enhancement for claude-flow v3. Implements connection pooling, load balancing, tool registry optimization, and performance monitoring for sub-100ms response times."
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# V3 MCP Optimization
|
|
7
|
+
|
|
8
|
+
## What This Skill Does
|
|
9
|
+
|
|
10
|
+
Optimizes claude-flow v3 MCP (Model Context Protocol) server implementation with advanced transport layer optimizations, connection pooling, load balancing, and comprehensive performance monitoring to achieve sub-100ms response times.
|
|
11
|
+
|
|
12
|
+
## Quick Start
|
|
13
|
+
|
|
14
|
+
```bash
|
|
15
|
+
# Initialize MCP optimization analysis
|
|
16
|
+
Task("MCP architecture", "Analyze current MCP server performance and bottlenecks", "mcp-specialist")
|
|
17
|
+
|
|
18
|
+
# Optimization implementation (parallel)
|
|
19
|
+
Task("Connection pooling", "Implement MCP connection pooling and reuse", "mcp-specialist")
|
|
20
|
+
Task("Load balancing", "Add dynamic load balancing for MCP tools", "mcp-specialist")
|
|
21
|
+
Task("Transport optimization", "Optimize transport layer performance", "mcp-specialist")
|
|
22
|
+
```
|
|
23
|
+
|
|
24
|
+
## MCP Performance Architecture
|
|
25
|
+
|
|
26
|
+
### Current State Analysis
|
|
27
|
+
```
|
|
28
|
+
Current MCP Issues:
|
|
29
|
+
├── Cold Start Latency: ~1.8s MCP server init
|
|
30
|
+
├── Connection Overhead: New connection per request
|
|
31
|
+
├── Tool Registry: Linear search O(n) for 213+ tools
|
|
32
|
+
├── Transport Layer: No connection reuse
|
|
33
|
+
└── Memory Usage: No cleanup of idle connections
|
|
34
|
+
|
|
35
|
+
Target Performance:
|
|
36
|
+
├── Startup Time: <400ms (4.5x improvement)
|
|
37
|
+
├── Tool Lookup: <5ms (O(1) hash table)
|
|
38
|
+
├── Connection Reuse: 90%+ connection pool hits
|
|
39
|
+
├── Response Time: <100ms p95
|
|
40
|
+
└── Memory Efficiency: 50% reduction
|
|
41
|
+
```
|
|
42
|
+
|
|
43
|
+
### MCP Server Architecture
|
|
44
|
+
```typescript
|
|
45
|
+
// src/core/mcp/mcp-server.ts
|
|
46
|
+
import { Server } from '@modelcontextprotocol/sdk/server/index.js';
|
|
47
|
+
import { StdioServerTransport } from '@modelcontextprotocol/sdk/server/stdio.js';
|
|
48
|
+
|
|
49
|
+
interface OptimizedMCPConfig {
|
|
50
|
+
// Connection pooling
|
|
51
|
+
maxConnections: number;
|
|
52
|
+
idleTimeoutMs: number;
|
|
53
|
+
connectionReuseEnabled: boolean;
|
|
54
|
+
|
|
55
|
+
// Tool registry
|
|
56
|
+
toolCacheEnabled: boolean;
|
|
57
|
+
toolIndexType: 'hash' | 'trie';
|
|
58
|
+
|
|
59
|
+
// Performance
|
|
60
|
+
requestTimeoutMs: number;
|
|
61
|
+
batchingEnabled: boolean;
|
|
62
|
+
compressionEnabled: boolean;
|
|
63
|
+
|
|
64
|
+
// Monitoring
|
|
65
|
+
metricsEnabled: boolean;
|
|
66
|
+
healthCheckIntervalMs: number;
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
export class OptimizedMCPServer {
|
|
70
|
+
private server: Server;
|
|
71
|
+
private connectionPool: ConnectionPool;
|
|
72
|
+
private toolRegistry: FastToolRegistry;
|
|
73
|
+
private loadBalancer: MCPLoadBalancer;
|
|
74
|
+
private metrics: MCPMetrics;
|
|
75
|
+
|
|
76
|
+
constructor(config: OptimizedMCPConfig) {
|
|
77
|
+
this.server = new Server({
|
|
78
|
+
name: 'claude-flow-v3',
|
|
79
|
+
version: '3.0.0'
|
|
80
|
+
}, {
|
|
81
|
+
capabilities: {
|
|
82
|
+
tools: { listChanged: true },
|
|
83
|
+
resources: { subscribe: true, listChanged: true },
|
|
84
|
+
prompts: { listChanged: true }
|
|
85
|
+
}
|
|
86
|
+
});
|
|
87
|
+
|
|
88
|
+
this.connectionPool = new ConnectionPool(config);
|
|
89
|
+
this.toolRegistry = new FastToolRegistry(config.toolIndexType);
|
|
90
|
+
this.loadBalancer = new MCPLoadBalancer();
|
|
91
|
+
this.metrics = new MCPMetrics(config.metricsEnabled);
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
async start(): Promise<void> {
|
|
95
|
+
// Pre-warm connection pool
|
|
96
|
+
await this.connectionPool.preWarm();
|
|
97
|
+
|
|
98
|
+
// Pre-build tool index
|
|
99
|
+
await this.toolRegistry.buildIndex();
|
|
100
|
+
|
|
101
|
+
// Setup request handlers with optimizations
|
|
102
|
+
this.setupOptimizedHandlers();
|
|
103
|
+
|
|
104
|
+
// Start health monitoring
|
|
105
|
+
this.startHealthMonitoring();
|
|
106
|
+
|
|
107
|
+
// Start server
|
|
108
|
+
const transport = new StdioServerTransport();
|
|
109
|
+
await this.server.connect(transport);
|
|
110
|
+
|
|
111
|
+
this.metrics.recordStartup();
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
```
|
|
115
|
+
|
|
116
|
+
## Connection Pool Implementation
|
|
117
|
+
|
|
118
|
+
### Advanced Connection Pooling
|
|
119
|
+
```typescript
|
|
120
|
+
// src/core/mcp/connection-pool.ts
|
|
121
|
+
interface PooledConnection {
|
|
122
|
+
id: string;
|
|
123
|
+
connection: MCPConnection;
|
|
124
|
+
lastUsed: number;
|
|
125
|
+
usageCount: number;
|
|
126
|
+
isHealthy: boolean;
|
|
127
|
+
}
|
|
128
|
+
|
|
129
|
+
export class ConnectionPool {
|
|
130
|
+
private pool: Map<string, PooledConnection> = new Map();
|
|
131
|
+
private readonly config: ConnectionPoolConfig;
|
|
132
|
+
private healthChecker: HealthChecker;
|
|
133
|
+
|
|
134
|
+
constructor(config: ConnectionPoolConfig) {
|
|
135
|
+
this.config = {
|
|
136
|
+
maxConnections: 50,
|
|
137
|
+
minConnections: 5,
|
|
138
|
+
idleTimeoutMs: 300000, // 5 minutes
|
|
139
|
+
maxUsageCount: 1000,
|
|
140
|
+
healthCheckIntervalMs: 30000,
|
|
141
|
+
...config
|
|
142
|
+
};
|
|
143
|
+
|
|
144
|
+
this.healthChecker = new HealthChecker(this.config.healthCheckIntervalMs);
|
|
145
|
+
}
|
|
146
|
+
|
|
147
|
+
async getConnection(endpoint: string): Promise<MCPConnection> {
|
|
148
|
+
const start = performance.now();
|
|
149
|
+
|
|
150
|
+
// Try to get from pool first
|
|
151
|
+
const pooled = this.findAvailableConnection(endpoint);
|
|
152
|
+
if (pooled) {
|
|
153
|
+
pooled.lastUsed = Date.now();
|
|
154
|
+
pooled.usageCount++;
|
|
155
|
+
|
|
156
|
+
this.recordMetric('pool_hit', performance.now() - start);
|
|
157
|
+
return pooled.connection;
|
|
158
|
+
}
|
|
159
|
+
|
|
160
|
+
// Check pool capacity
|
|
161
|
+
if (this.pool.size >= this.config.maxConnections) {
|
|
162
|
+
await this.evictLeastUsedConnection();
|
|
163
|
+
}
|
|
164
|
+
|
|
165
|
+
// Create new connection
|
|
166
|
+
const connection = await this.createConnection(endpoint);
|
|
167
|
+
const pooledConn: PooledConnection = {
|
|
168
|
+
id: this.generateConnectionId(),
|
|
169
|
+
connection,
|
|
170
|
+
lastUsed: Date.now(),
|
|
171
|
+
usageCount: 1,
|
|
172
|
+
isHealthy: true
|
|
173
|
+
};
|
|
174
|
+
|
|
175
|
+
this.pool.set(pooledConn.id, pooledConn);
|
|
176
|
+
this.recordMetric('pool_miss', performance.now() - start);
|
|
177
|
+
|
|
178
|
+
return connection;
|
|
179
|
+
}
|
|
180
|
+
|
|
181
|
+
async releaseConnection(connection: MCPConnection): Promise<void> {
|
|
182
|
+
// Mark connection as available for reuse
|
|
183
|
+
const pooled = this.findConnectionById(connection.id);
|
|
184
|
+
if (pooled) {
|
|
185
|
+
// Check if connection should be retired
|
|
186
|
+
if (pooled.usageCount >= this.config.maxUsageCount) {
|
|
187
|
+
await this.removeConnection(pooled.id);
|
|
188
|
+
}
|
|
189
|
+
}
|
|
190
|
+
}
|
|
191
|
+
|
|
192
|
+
async preWarm(): Promise<void> {
|
|
193
|
+
const connections: Promise<MCPConnection>[] = [];
|
|
194
|
+
|
|
195
|
+
for (let i = 0; i < this.config.minConnections; i++) {
|
|
196
|
+
connections.push(this.createConnection('default'));
|
|
197
|
+
}
|
|
198
|
+
|
|
199
|
+
await Promise.all(connections);
|
|
200
|
+
}
|
|
201
|
+
|
|
202
|
+
private async evictLeastUsedConnection(): Promise<void> {
|
|
203
|
+
let oldestConn: PooledConnection | null = null;
|
|
204
|
+
let oldestTime = Date.now();
|
|
205
|
+
|
|
206
|
+
for (const conn of this.pool.values()) {
|
|
207
|
+
if (conn.lastUsed < oldestTime) {
|
|
208
|
+
oldestTime = conn.lastUsed;
|
|
209
|
+
oldestConn = conn;
|
|
210
|
+
}
|
|
211
|
+
}
|
|
212
|
+
|
|
213
|
+
if (oldestConn) {
|
|
214
|
+
await this.removeConnection(oldestConn.id);
|
|
215
|
+
}
|
|
216
|
+
}
|
|
217
|
+
|
|
218
|
+
private findAvailableConnection(endpoint: string): PooledConnection | null {
|
|
219
|
+
for (const conn of this.pool.values()) {
|
|
220
|
+
if (conn.isHealthy &&
|
|
221
|
+
conn.connection.endpoint === endpoint &&
|
|
222
|
+
Date.now() - conn.lastUsed < this.config.idleTimeoutMs) {
|
|
223
|
+
return conn;
|
|
224
|
+
}
|
|
225
|
+
}
|
|
226
|
+
return null;
|
|
227
|
+
}
|
|
228
|
+
}
|
|
229
|
+
```
|
|
230
|
+
|
|
231
|
+
## Fast Tool Registry
|
|
232
|
+
|
|
233
|
+
### O(1) Tool Lookup Implementation
|
|
234
|
+
```typescript
|
|
235
|
+
// src/core/mcp/fast-tool-registry.ts
|
|
236
|
+
interface ToolIndexEntry {
|
|
237
|
+
name: string;
|
|
238
|
+
handler: ToolHandler;
|
|
239
|
+
metadata: ToolMetadata;
|
|
240
|
+
usageCount: number;
|
|
241
|
+
avgLatencyMs: number;
|
|
242
|
+
}
|
|
243
|
+
|
|
244
|
+
export class FastToolRegistry {
|
|
245
|
+
private toolIndex: Map<string, ToolIndexEntry> = new Map();
|
|
246
|
+
private categoryIndex: Map<string, string[]> = new Map();
|
|
247
|
+
private fuzzyMatcher: FuzzyMatcher;
|
|
248
|
+
private cache: LRUCache<string, ToolIndexEntry>;
|
|
249
|
+
|
|
250
|
+
constructor(indexType: 'hash' | 'trie' = 'hash') {
|
|
251
|
+
this.fuzzyMatcher = new FuzzyMatcher();
|
|
252
|
+
this.cache = new LRUCache<string, ToolIndexEntry>(1000); // Cache 1000 most used tools
|
|
253
|
+
}
|
|
254
|
+
|
|
255
|
+
async buildIndex(): Promise<void> {
|
|
256
|
+
const start = performance.now();
|
|
257
|
+
|
|
258
|
+
// Load all available tools
|
|
259
|
+
const tools = await this.loadAllTools();
|
|
260
|
+
|
|
261
|
+
// Build hash index for O(1) lookup
|
|
262
|
+
for (const tool of tools) {
|
|
263
|
+
const entry: ToolIndexEntry = {
|
|
264
|
+
name: tool.name,
|
|
265
|
+
handler: tool.handler,
|
|
266
|
+
metadata: tool.metadata,
|
|
267
|
+
usageCount: 0,
|
|
268
|
+
avgLatencyMs: 0
|
|
269
|
+
};
|
|
270
|
+
|
|
271
|
+
this.toolIndex.set(tool.name, entry);
|
|
272
|
+
|
|
273
|
+
// Build category index
|
|
274
|
+
const category = tool.metadata.category || 'general';
|
|
275
|
+
if (!this.categoryIndex.has(category)) {
|
|
276
|
+
this.categoryIndex.set(category, []);
|
|
277
|
+
}
|
|
278
|
+
this.categoryIndex.get(category)!.push(tool.name);
|
|
279
|
+
}
|
|
280
|
+
|
|
281
|
+
// Build fuzzy search index
|
|
282
|
+
await this.fuzzyMatcher.buildIndex(tools.map(t => t.name));
|
|
283
|
+
|
|
284
|
+
console.log(`Tool index built in ${(performance.now() - start).toFixed(2)}ms for ${tools.length} tools`);
|
|
285
|
+
}
|
|
286
|
+
|
|
287
|
+
findTool(name: string): ToolIndexEntry | null {
|
|
288
|
+
// Try cache first
|
|
289
|
+
const cached = this.cache.get(name);
|
|
290
|
+
if (cached) return cached;
|
|
291
|
+
|
|
292
|
+
// Try exact match
|
|
293
|
+
const exact = this.toolIndex.get(name);
|
|
294
|
+
if (exact) {
|
|
295
|
+
this.cache.set(name, exact);
|
|
296
|
+
return exact;
|
|
297
|
+
}
|
|
298
|
+
|
|
299
|
+
// Try fuzzy match
|
|
300
|
+
const fuzzyMatches = this.fuzzyMatcher.search(name, 1);
|
|
301
|
+
if (fuzzyMatches.length > 0) {
|
|
302
|
+
const match = this.toolIndex.get(fuzzyMatches[0]);
|
|
303
|
+
if (match) {
|
|
304
|
+
this.cache.set(name, match);
|
|
305
|
+
return match;
|
|
306
|
+
}
|
|
307
|
+
}
|
|
308
|
+
|
|
309
|
+
return null;
|
|
310
|
+
}
|
|
311
|
+
|
|
312
|
+
findToolsByCategory(category: string): ToolIndexEntry[] {
|
|
313
|
+
const toolNames = this.categoryIndex.get(category) || [];
|
|
314
|
+
return toolNames
|
|
315
|
+
.map(name => this.toolIndex.get(name))
|
|
316
|
+
.filter(entry => entry !== undefined) as ToolIndexEntry[];
|
|
317
|
+
}
|
|
318
|
+
|
|
319
|
+
getMostUsedTools(limit: number = 10): ToolIndexEntry[] {
|
|
320
|
+
return Array.from(this.toolIndex.values())
|
|
321
|
+
.sort((a, b) => b.usageCount - a.usageCount)
|
|
322
|
+
.slice(0, limit);
|
|
323
|
+
}
|
|
324
|
+
|
|
325
|
+
recordToolUsage(toolName: string, latencyMs: number): void {
|
|
326
|
+
const entry = this.toolIndex.get(toolName);
|
|
327
|
+
if (entry) {
|
|
328
|
+
entry.usageCount++;
|
|
329
|
+
// Moving average for latency
|
|
330
|
+
entry.avgLatencyMs = (entry.avgLatencyMs + latencyMs) / 2;
|
|
331
|
+
}
|
|
332
|
+
}
|
|
333
|
+
}
|
|
334
|
+
```
|
|
335
|
+
|
|
336
|
+
## Load Balancing & Request Distribution
|
|
337
|
+
|
|
338
|
+
### Intelligent Load Balancer
|
|
339
|
+
```typescript
|
|
340
|
+
// src/core/mcp/load-balancer.ts
|
|
341
|
+
interface ServerInstance {
|
|
342
|
+
id: string;
|
|
343
|
+
endpoint: string;
|
|
344
|
+
load: number;
|
|
345
|
+
responseTime: number;
|
|
346
|
+
isHealthy: boolean;
|
|
347
|
+
maxConnections: number;
|
|
348
|
+
currentConnections: number;
|
|
349
|
+
}
|
|
350
|
+
|
|
351
|
+
export class MCPLoadBalancer {
|
|
352
|
+
private servers: Map<string, ServerInstance> = new Map();
|
|
353
|
+
private routingStrategy: RoutingStrategy = 'least-connections';
|
|
354
|
+
|
|
355
|
+
addServer(server: ServerInstance): void {
|
|
356
|
+
this.servers.set(server.id, server);
|
|
357
|
+
}
|
|
358
|
+
|
|
359
|
+
selectServer(toolCategory?: string): ServerInstance | null {
|
|
360
|
+
const healthyServers = Array.from(this.servers.values())
|
|
361
|
+
.filter(server => server.isHealthy);
|
|
362
|
+
|
|
363
|
+
if (healthyServers.length === 0) return null;
|
|
364
|
+
|
|
365
|
+
switch (this.routingStrategy) {
|
|
366
|
+
case 'round-robin':
|
|
367
|
+
return this.roundRobinSelection(healthyServers);
|
|
368
|
+
|
|
369
|
+
case 'least-connections':
|
|
370
|
+
return this.leastConnectionsSelection(healthyServers);
|
|
371
|
+
|
|
372
|
+
case 'response-time':
|
|
373
|
+
return this.responseTimeSelection(healthyServers);
|
|
374
|
+
|
|
375
|
+
case 'weighted':
|
|
376
|
+
return this.weightedSelection(healthyServers, toolCategory);
|
|
377
|
+
|
|
378
|
+
default:
|
|
379
|
+
return healthyServers[0];
|
|
380
|
+
}
|
|
381
|
+
}
|
|
382
|
+
|
|
383
|
+
private leastConnectionsSelection(servers: ServerInstance[]): ServerInstance {
|
|
384
|
+
return servers.reduce((least, current) =>
|
|
385
|
+
current.currentConnections < least.currentConnections ? current : least
|
|
386
|
+
);
|
|
387
|
+
}
|
|
388
|
+
|
|
389
|
+
private responseTimeSelection(servers: ServerInstance[]): ServerInstance {
|
|
390
|
+
return servers.reduce((fastest, current) =>
|
|
391
|
+
current.responseTime < fastest.responseTime ? current : fastest
|
|
392
|
+
);
|
|
393
|
+
}
|
|
394
|
+
|
|
395
|
+
private weightedSelection(servers: ServerInstance[], category?: string): ServerInstance {
|
|
396
|
+
// Prefer servers with lower load and better response time
|
|
397
|
+
const scored = servers.map(server => ({
|
|
398
|
+
server,
|
|
399
|
+
score: this.calculateServerScore(server, category)
|
|
400
|
+
}));
|
|
401
|
+
|
|
402
|
+
scored.sort((a, b) => b.score - a.score);
|
|
403
|
+
return scored[0].server;
|
|
404
|
+
}
|
|
405
|
+
|
|
406
|
+
private calculateServerScore(server: ServerInstance, category?: string): number {
|
|
407
|
+
const loadFactor = 1 - (server.currentConnections / server.maxConnections);
|
|
408
|
+
const responseFactor = 1 / (server.responseTime + 1);
|
|
409
|
+
const categoryBonus = this.getCategoryBonus(server, category);
|
|
410
|
+
|
|
411
|
+
return loadFactor * 0.4 + responseFactor * 0.4 + categoryBonus * 0.2;
|
|
412
|
+
}
|
|
413
|
+
|
|
414
|
+
updateServerMetrics(serverId: string, metrics: Partial<ServerInstance>): void {
|
|
415
|
+
const server = this.servers.get(serverId);
|
|
416
|
+
if (server) {
|
|
417
|
+
Object.assign(server, metrics);
|
|
418
|
+
}
|
|
419
|
+
}
|
|
420
|
+
}
|
|
421
|
+
```
|
|
422
|
+
|
|
423
|
+
## Transport Layer Optimization
|
|
424
|
+
|
|
425
|
+
### High-Performance Transport
|
|
426
|
+
```typescript
|
|
427
|
+
// src/core/mcp/optimized-transport.ts
|
|
428
|
+
export class OptimizedTransport {
|
|
429
|
+
private compression: boolean = true;
|
|
430
|
+
private batching: boolean = true;
|
|
431
|
+
private batchBuffer: MCPMessage[] = [];
|
|
432
|
+
private batchTimeout: NodeJS.Timeout | null = null;
|
|
433
|
+
|
|
434
|
+
constructor(private config: TransportConfig) {}
|
|
435
|
+
|
|
436
|
+
async send(message: MCPMessage): Promise<void> {
|
|
437
|
+
if (this.batching && this.canBatch(message)) {
|
|
438
|
+
this.addToBatch(message);
|
|
439
|
+
return;
|
|
440
|
+
}
|
|
441
|
+
|
|
442
|
+
await this.sendImmediate(message);
|
|
443
|
+
}
|
|
444
|
+
|
|
445
|
+
private async sendImmediate(message: MCPMessage): Promise<void> {
|
|
446
|
+
const start = performance.now();
|
|
447
|
+
|
|
448
|
+
// Compress if enabled
|
|
449
|
+
const payload = this.compression
|
|
450
|
+
? await this.compress(message)
|
|
451
|
+
: message;
|
|
452
|
+
|
|
453
|
+
// Send through transport
|
|
454
|
+
await this.transport.send(payload);
|
|
455
|
+
|
|
456
|
+
// Record metrics
|
|
457
|
+
this.recordLatency(performance.now() - start);
|
|
458
|
+
}
|
|
459
|
+
|
|
460
|
+
private addToBatch(message: MCPMessage): void {
|
|
461
|
+
this.batchBuffer.push(message);
|
|
462
|
+
|
|
463
|
+
// Start batch timeout if not already running
|
|
464
|
+
if (!this.batchTimeout) {
|
|
465
|
+
this.batchTimeout = setTimeout(
|
|
466
|
+
() => this.flushBatch(),
|
|
467
|
+
this.config.batchTimeoutMs || 10
|
|
468
|
+
);
|
|
469
|
+
}
|
|
470
|
+
|
|
471
|
+
// Flush if batch is full
|
|
472
|
+
if (this.batchBuffer.length >= this.config.maxBatchSize) {
|
|
473
|
+
this.flushBatch();
|
|
474
|
+
}
|
|
475
|
+
}
|
|
476
|
+
|
|
477
|
+
private async flushBatch(): Promise<void> {
|
|
478
|
+
if (this.batchBuffer.length === 0) return;
|
|
479
|
+
|
|
480
|
+
const batch = this.batchBuffer.splice(0);
|
|
481
|
+
this.batchTimeout = null;
|
|
482
|
+
|
|
483
|
+
// Send as single batched message
|
|
484
|
+
await this.sendImmediate({
|
|
485
|
+
type: 'batch',
|
|
486
|
+
messages: batch
|
|
487
|
+
});
|
|
488
|
+
}
|
|
489
|
+
|
|
490
|
+
private canBatch(message: MCPMessage): boolean {
|
|
491
|
+
// Don't batch urgent messages or responses
|
|
492
|
+
return message.type !== 'response' &&
|
|
493
|
+
message.priority !== 'high' &&
|
|
494
|
+
message.type !== 'error';
|
|
495
|
+
}
|
|
496
|
+
|
|
497
|
+
private async compress(data: any): Promise<Buffer> {
|
|
498
|
+
// Use fast compression for smaller messages
|
|
499
|
+
return gzipSync(JSON.stringify(data));
|
|
500
|
+
}
|
|
501
|
+
}
|
|
502
|
+
```
|
|
503
|
+
|
|
504
|
+
## Performance Monitoring
|
|
505
|
+
|
|
506
|
+
### Real-time MCP Metrics
|
|
507
|
+
```typescript
|
|
508
|
+
// src/core/mcp/metrics.ts
|
|
509
|
+
interface MCPMetrics {
|
|
510
|
+
requestCount: number;
|
|
511
|
+
errorCount: number;
|
|
512
|
+
avgResponseTime: number;
|
|
513
|
+
p95ResponseTime: number;
|
|
514
|
+
connectionPoolHits: number;
|
|
515
|
+
connectionPoolMisses: number;
|
|
516
|
+
toolLookupTime: number;
|
|
517
|
+
startupTime: number;
|
|
518
|
+
}
|
|
519
|
+
|
|
520
|
+
export class MCPMetricsCollector {
|
|
521
|
+
private metrics: MCPMetrics;
|
|
522
|
+
private responseTimeBuffer: number[] = [];
|
|
523
|
+
private readonly bufferSize = 1000;
|
|
524
|
+
|
|
525
|
+
constructor() {
|
|
526
|
+
this.metrics = this.createInitialMetrics();
|
|
527
|
+
}
|
|
528
|
+
|
|
529
|
+
recordRequest(latencyMs: number): void {
|
|
530
|
+
this.metrics.requestCount++;
|
|
531
|
+
this.updateResponseTimes(latencyMs);
|
|
532
|
+
}
|
|
533
|
+
|
|
534
|
+
recordError(): void {
|
|
535
|
+
this.metrics.errorCount++;
|
|
536
|
+
}
|
|
537
|
+
|
|
538
|
+
recordConnectionPoolHit(): void {
|
|
539
|
+
this.metrics.connectionPoolHits++;
|
|
540
|
+
}
|
|
541
|
+
|
|
542
|
+
recordConnectionPoolMiss(): void {
|
|
543
|
+
this.metrics.connectionPoolMisses++;
|
|
544
|
+
}
|
|
545
|
+
|
|
546
|
+
recordToolLookup(latencyMs: number): void {
|
|
547
|
+
this.metrics.toolLookupTime = this.updateMovingAverage(
|
|
548
|
+
this.metrics.toolLookupTime,
|
|
549
|
+
latencyMs
|
|
550
|
+
);
|
|
551
|
+
}
|
|
552
|
+
|
|
553
|
+
recordStartup(latencyMs: number): void {
|
|
554
|
+
this.metrics.startupTime = latencyMs;
|
|
555
|
+
}
|
|
556
|
+
|
|
557
|
+
getMetrics(): MCPMetrics {
|
|
558
|
+
return { ...this.metrics };
|
|
559
|
+
}
|
|
560
|
+
|
|
561
|
+
getHealthStatus(): HealthStatus {
|
|
562
|
+
const errorRate = this.metrics.errorCount / this.metrics.requestCount;
|
|
563
|
+
const poolHitRate = this.metrics.connectionPoolHits /
|
|
564
|
+
(this.metrics.connectionPoolHits + this.metrics.connectionPoolMisses);
|
|
565
|
+
|
|
566
|
+
return {
|
|
567
|
+
status: this.determineHealthStatus(errorRate, poolHitRate),
|
|
568
|
+
errorRate,
|
|
569
|
+
poolHitRate,
|
|
570
|
+
avgResponseTime: this.metrics.avgResponseTime,
|
|
571
|
+
p95ResponseTime: this.metrics.p95ResponseTime
|
|
572
|
+
};
|
|
573
|
+
}
|
|
574
|
+
|
|
575
|
+
private updateResponseTimes(latency: number): void {
|
|
576
|
+
this.responseTimeBuffer.push(latency);
|
|
577
|
+
|
|
578
|
+
if (this.responseTimeBuffer.length > this.bufferSize) {
|
|
579
|
+
this.responseTimeBuffer.shift();
|
|
580
|
+
}
|
|
581
|
+
|
|
582
|
+
this.metrics.avgResponseTime = this.calculateAverage(this.responseTimeBuffer);
|
|
583
|
+
this.metrics.p95ResponseTime = this.calculatePercentile(this.responseTimeBuffer, 95);
|
|
584
|
+
}
|
|
585
|
+
|
|
586
|
+
private calculatePercentile(arr: number[], percentile: number): number {
|
|
587
|
+
const sorted = arr.slice().sort((a, b) => a - b);
|
|
588
|
+
const index = Math.ceil((percentile / 100) * sorted.length) - 1;
|
|
589
|
+
return sorted[index] || 0;
|
|
590
|
+
}
|
|
591
|
+
|
|
592
|
+
private determineHealthStatus(errorRate: number, poolHitRate: number): 'healthy' | 'warning' | 'critical' {
|
|
593
|
+
if (errorRate > 0.1 || poolHitRate < 0.5) return 'critical';
|
|
594
|
+
if (errorRate > 0.05 || poolHitRate < 0.7) return 'warning';
|
|
595
|
+
return 'healthy';
|
|
596
|
+
}
|
|
597
|
+
}
|
|
598
|
+
```
|
|
599
|
+
|
|
600
|
+
## Tool Registry Optimization
|
|
601
|
+
|
|
602
|
+
### Pre-compiled Tool Index
|
|
603
|
+
```typescript
|
|
604
|
+
// src/core/mcp/tool-precompiler.ts
|
|
605
|
+
export class ToolPrecompiler {
|
|
606
|
+
async precompileTools(): Promise<CompiledToolRegistry> {
|
|
607
|
+
const tools = await this.loadAllTools();
|
|
608
|
+
|
|
609
|
+
// Create optimized lookup structures
|
|
610
|
+
const nameIndex = new Map<string, Tool>();
|
|
611
|
+
const categoryIndex = new Map<string, Tool[]>();
|
|
612
|
+
const fuzzyIndex = new Map<string, string[]>();
|
|
613
|
+
|
|
614
|
+
for (const tool of tools) {
|
|
615
|
+
// Exact name index
|
|
616
|
+
nameIndex.set(tool.name, tool);
|
|
617
|
+
|
|
618
|
+
// Category index
|
|
619
|
+
const category = tool.metadata.category || 'general';
|
|
620
|
+
if (!categoryIndex.has(category)) {
|
|
621
|
+
categoryIndex.set(category, []);
|
|
622
|
+
}
|
|
623
|
+
categoryIndex.get(category)!.push(tool);
|
|
624
|
+
|
|
625
|
+
// Pre-compute fuzzy variations
|
|
626
|
+
const variations = this.generateFuzzyVariations(tool.name);
|
|
627
|
+
for (const variation of variations) {
|
|
628
|
+
if (!fuzzyIndex.has(variation)) {
|
|
629
|
+
fuzzyIndex.set(variation, []);
|
|
630
|
+
}
|
|
631
|
+
fuzzyIndex.get(variation)!.push(tool.name);
|
|
632
|
+
}
|
|
633
|
+
}
|
|
634
|
+
|
|
635
|
+
return {
|
|
636
|
+
nameIndex,
|
|
637
|
+
categoryIndex,
|
|
638
|
+
fuzzyIndex,
|
|
639
|
+
totalTools: tools.length,
|
|
640
|
+
compiledAt: new Date()
|
|
641
|
+
};
|
|
642
|
+
}
|
|
643
|
+
|
|
644
|
+
private generateFuzzyVariations(name: string): string[] {
|
|
645
|
+
const variations: string[] = [];
|
|
646
|
+
|
|
647
|
+
// Common typos and abbreviations
|
|
648
|
+
variations.push(name.toLowerCase());
|
|
649
|
+
variations.push(name.replace(/[-_]/g, ''));
|
|
650
|
+
variations.push(name.replace(/[aeiou]/gi, '')); // Consonants only
|
|
651
|
+
|
|
652
|
+
// Add more fuzzy matching logic as needed
|
|
653
|
+
|
|
654
|
+
return variations;
|
|
655
|
+
}
|
|
656
|
+
}
|
|
657
|
+
```
|
|
658
|
+
|
|
659
|
+
## Advanced Caching Strategy
|
|
660
|
+
|
|
661
|
+
### Multi-Level Caching
|
|
662
|
+
```typescript
|
|
663
|
+
// src/core/mcp/multi-level-cache.ts
|
|
664
|
+
export class MultiLevelCache {
|
|
665
|
+
private l1Cache: Map<string, any> = new Map(); // In-memory, fastest
|
|
666
|
+
private l2Cache: LRUCache<string, any>; // LRU cache, larger capacity
|
|
667
|
+
private l3Cache: DiskCache; // Persistent disk cache
|
|
668
|
+
|
|
669
|
+
constructor(config: CacheConfig) {
|
|
670
|
+
this.l2Cache = new LRUCache<string, any>({
|
|
671
|
+
max: config.l2MaxEntries || 10000,
|
|
672
|
+
ttl: config.l2TTL || 300000 // 5 minutes
|
|
673
|
+
});
|
|
674
|
+
|
|
675
|
+
this.l3Cache = new DiskCache(config.l3Path || './.cache/mcp');
|
|
676
|
+
}
|
|
677
|
+
|
|
678
|
+
async get(key: string): Promise<any | null> {
|
|
679
|
+
// Try L1 cache first (fastest)
|
|
680
|
+
if (this.l1Cache.has(key)) {
|
|
681
|
+
return this.l1Cache.get(key);
|
|
682
|
+
}
|
|
683
|
+
|
|
684
|
+
// Try L2 cache
|
|
685
|
+
const l2Value = this.l2Cache.get(key);
|
|
686
|
+
if (l2Value) {
|
|
687
|
+
// Promote to L1
|
|
688
|
+
this.l1Cache.set(key, l2Value);
|
|
689
|
+
return l2Value;
|
|
690
|
+
}
|
|
691
|
+
|
|
692
|
+
// Try L3 cache (disk)
|
|
693
|
+
const l3Value = await this.l3Cache.get(key);
|
|
694
|
+
if (l3Value) {
|
|
695
|
+
// Promote to L2 and L1
|
|
696
|
+
this.l2Cache.set(key, l3Value);
|
|
697
|
+
this.l1Cache.set(key, l3Value);
|
|
698
|
+
return l3Value;
|
|
699
|
+
}
|
|
700
|
+
|
|
701
|
+
return null;
|
|
702
|
+
}
|
|
703
|
+
|
|
704
|
+
async set(key: string, value: any, options?: CacheOptions): Promise<void> {
|
|
705
|
+
// Set in all levels
|
|
706
|
+
this.l1Cache.set(key, value);
|
|
707
|
+
this.l2Cache.set(key, value);
|
|
708
|
+
|
|
709
|
+
if (options?.persistent) {
|
|
710
|
+
await this.l3Cache.set(key, value);
|
|
711
|
+
}
|
|
712
|
+
|
|
713
|
+
// Manage L1 cache size
|
|
714
|
+
if (this.l1Cache.size > 1000) {
|
|
715
|
+
const firstKey = this.l1Cache.keys().next().value;
|
|
716
|
+
this.l1Cache.delete(firstKey);
|
|
717
|
+
}
|
|
718
|
+
}
|
|
719
|
+
}
|
|
720
|
+
```
|
|
721
|
+
|
|
722
|
+
## Success Metrics
|
|
723
|
+
|
|
724
|
+
### Performance Targets
|
|
725
|
+
- [ ] **Startup Time**: <400ms MCP server initialization (4.5x improvement)
|
|
726
|
+
- [ ] **Response Time**: <100ms p95 for tool execution
|
|
727
|
+
- [ ] **Tool Lookup**: <5ms average lookup time
|
|
728
|
+
- [ ] **Connection Pool**: >90% hit rate
|
|
729
|
+
- [ ] **Memory Usage**: 50% reduction in idle memory
|
|
730
|
+
- [ ] **Error Rate**: <1% failed requests
|
|
731
|
+
- [ ] **Throughput**: >1000 requests/second
|
|
732
|
+
|
|
733
|
+
### Monitoring Dashboards
|
|
734
|
+
```typescript
|
|
735
|
+
const mcpDashboard = {
|
|
736
|
+
metrics: [
|
|
737
|
+
'Request latency (p50, p95, p99)',
|
|
738
|
+
'Error rate by tool category',
|
|
739
|
+
'Connection pool utilization',
|
|
740
|
+
'Tool lookup performance',
|
|
741
|
+
'Memory usage trends',
|
|
742
|
+
'Cache hit rates (L1, L2, L3)'
|
|
743
|
+
],
|
|
744
|
+
|
|
745
|
+
alerts: [
|
|
746
|
+
'Response time >200ms for 5 minutes',
|
|
747
|
+
'Error rate >5% for 1 minute',
|
|
748
|
+
'Pool hit rate <70% for 10 minutes',
|
|
749
|
+
'Memory usage >500MB for 5 minutes'
|
|
750
|
+
]
|
|
751
|
+
};
|
|
752
|
+
```
|
|
753
|
+
|
|
754
|
+
## Related V3 Skills
|
|
755
|
+
|
|
756
|
+
- `v3-core-implementation` - Core domain integration with MCP
|
|
757
|
+
- `v3-performance-optimization` - Overall performance optimization
|
|
758
|
+
- `v3-swarm-coordination` - MCP integration with swarm coordination
|
|
759
|
+
- `v3-memory-unification` - Memory sharing via MCP tools
|
|
760
|
+
|
|
761
|
+
## Usage Examples
|
|
762
|
+
|
|
763
|
+
### Complete MCP Optimization
|
|
764
|
+
```bash
|
|
765
|
+
# Full MCP server optimization
|
|
766
|
+
Task("MCP optimization implementation",
|
|
767
|
+
"Implement all MCP performance optimizations with monitoring",
|
|
768
|
+
"mcp-specialist")
|
|
769
|
+
```
|
|
770
|
+
|
|
771
|
+
### Specific Optimization
|
|
772
|
+
```bash
|
|
773
|
+
# Connection pool optimization
|
|
774
|
+
Task("MCP connection pooling",
|
|
775
|
+
"Implement advanced connection pooling with health monitoring",
|
|
776
|
+
"mcp-specialist")
|
|
777
|
+
```
|