agentic-flow 1.0.0
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/MIGRATION_SUMMARY.md +222 -0
- package/.claude/agents/README.md +89 -0
- package/.claude/agents/analysis/code-analyzer.md +209 -0
- package/.claude/agents/analysis/code-review/analyze-code-quality.md +180 -0
- package/.claude/agents/architecture/system-design/arch-system-design.md +156 -0
- package/.claude/agents/base-template-generator.md +42 -0
- package/.claude/agents/consensus/README.md +253 -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 +211 -0
- package/.claude/agents/core/planner.md +116 -0
- package/.claude/agents/core/researcher.md +136 -0
- package/.claude/agents/core/reviewer.md +272 -0
- package/.claude/agents/core/tester.md +266 -0
- package/.claude/agents/data/ml/data-ml-model.md +193 -0
- package/.claude/agents/development/backend/dev-backend-api.md +142 -0
- package/.claude/agents/devops/ci-cd/ops-cicd-github.md +164 -0
- package/.claude/agents/documentation/api-docs/docs-api-openapi.md +174 -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 +538 -0
- package/.claude/agents/github/github-modes.md +173 -0
- package/.claude/agents/github/issue-tracker.md +319 -0
- package/.claude/agents/github/multi-repo-swarm.md +553 -0
- package/.claude/agents/github/pr-manager.md +191 -0
- package/.claude/agents/github/project-board-sync.md +509 -0
- package/.claude/agents/github/release-manager.md +367 -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 +635 -0
- package/.claude/agents/goal/agent.md +816 -0
- package/.claude/agents/goal/goal-planner.md +73 -0
- package/.claude/agents/optimization/README.md +250 -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/sparc/architecture.md +472 -0
- package/.claude/agents/sparc/pseudocode.md +318 -0
- package/.claude/agents/sparc/refinement.md +525 -0
- package/.claude/agents/sparc/specification.md +276 -0
- package/.claude/agents/specialized/mobile/spec-mobile-react-native.md +226 -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/README.md +190 -0
- package/.claude/agents/swarm/adaptive-coordinator.md +396 -0
- package/.claude/agents/swarm/hierarchical-coordinator.md +256 -0
- package/.claude/agents/swarm/mesh-coordinator.md +392 -0
- package/.claude/agents/templates/automation-smart-agent.md +205 -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/migration-plan.md +746 -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 +183 -0
- package/.claude/agents/test-neural.md +14 -0
- package/.claude/agents/testing/unit/tdd-london-swarm.md +244 -0
- package/.claude/agents/testing/validation/production-validator.md +395 -0
- package/.claude/commands/agents/README.md +10 -0
- package/.claude/commands/agents/agent-capabilities.md +21 -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 +26 -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/memory/usage.md +46 -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 +27 -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/checkpoint-manager.sh +251 -0
- package/.claude/helpers/github-safe.js +106 -0
- package/.claude/helpers/github-setup.sh +28 -0
- package/.claude/helpers/quick-start.sh +19 -0
- package/.claude/helpers/setup-mcp.sh +18 -0
- package/.claude/helpers/standard-checkpoint-hooks.sh +179 -0
- package/.claude/mcp.json +13 -0
- package/.claude/settings-backup.json +130 -0
- package/.claude/settings-optimized.json +116 -0
- package/.claude/settings-simple.json +78 -0
- package/.claude/settings.json +114 -0
- package/.claude/settings.local.json +14 -0
- package/README.md +1280 -0
- package/dist/agents/claudeAgent.js +73 -0
- package/dist/agents/claudeFlowAgent.js +115 -0
- package/dist/agents/codeReviewAgent.js +34 -0
- package/dist/agents/dataAgent.js +34 -0
- package/dist/agents/directApiAgent.js +260 -0
- package/dist/agents/webResearchAgent.js +35 -0
- package/dist/cli/mcp.js +135 -0
- package/dist/cli-proxy.js +246 -0
- package/dist/cli.js +158 -0
- package/dist/config/claudeFlow.js +67 -0
- package/dist/config/tools.js +33 -0
- package/dist/coordination/parallelSwarm.js +226 -0
- package/dist/examples/multi-agent-orchestration.js +45 -0
- package/dist/examples/parallel-swarm-deployment.js +171 -0
- package/dist/examples/use-goal-planner.js +52 -0
- package/dist/health.js +46 -0
- package/dist/index-with-proxy.js +101 -0
- package/dist/index.js +167 -0
- package/dist/mcp/claudeFlowSdkServer.js +202 -0
- package/dist/mcp/fastmcp/servers/claude-flow-sdk.js +198 -0
- package/dist/mcp/fastmcp/servers/http-streaming-updated.js +421 -0
- package/dist/mcp/fastmcp/servers/poc-stdio.js +82 -0
- package/dist/mcp/fastmcp/servers/stdio-full.js +421 -0
- package/dist/mcp/fastmcp/tools/agent/add-agent.js +107 -0
- package/dist/mcp/fastmcp/tools/agent/add-command.js +117 -0
- package/dist/mcp/fastmcp/tools/agent/execute.js +56 -0
- package/dist/mcp/fastmcp/tools/agent/list.js +82 -0
- package/dist/mcp/fastmcp/tools/agent/parallel.js +63 -0
- package/dist/mcp/fastmcp/tools/memory/retrieve.js +38 -0
- package/dist/mcp/fastmcp/tools/memory/search.js +41 -0
- package/dist/mcp/fastmcp/tools/memory/store.js +56 -0
- package/dist/mcp/fastmcp/tools/swarm/init.js +41 -0
- package/dist/mcp/fastmcp/tools/swarm/orchestrate.js +47 -0
- package/dist/mcp/fastmcp/tools/swarm/spawn.js +40 -0
- package/dist/mcp/fastmcp/types/index.js +2 -0
- package/dist/proxy/anthropic-to-openrouter.js +246 -0
- package/dist/router/providers/anthropic.js +89 -0
- package/dist/router/providers/onnx-local-optimized.js +167 -0
- package/dist/router/providers/onnx-local.js +294 -0
- package/dist/router/providers/onnx-phi4.js +190 -0
- package/dist/router/providers/onnx.js +242 -0
- package/dist/router/providers/openrouter.js +242 -0
- package/dist/router/router.js +283 -0
- package/dist/router/test-integration.js +140 -0
- package/dist/router/test-onnx-benchmark.js +145 -0
- package/dist/router/test-onnx-integration.js +128 -0
- package/dist/router/test-onnx-local.js +37 -0
- package/dist/router/test-onnx.js +148 -0
- package/dist/router/test-openrouter.js +121 -0
- package/dist/router/test-phi4.js +137 -0
- package/dist/router/types.js +2 -0
- package/dist/utils/agentLoader.js +106 -0
- package/dist/utils/cli.js +128 -0
- package/dist/utils/logger.js +41 -0
- package/dist/utils/mcpCommands.js +214 -0
- package/dist/utils/model-downloader.js +182 -0
- package/dist/utils/retry.js +54 -0
- package/docs/.claude-flow/metrics/agent-metrics.json +1 -0
- package/docs/.claude-flow/metrics/performance.json +9 -0
- package/docs/.claude-flow/metrics/task-metrics.json +10 -0
- package/docs/CHANGELOG.md +155 -0
- package/docs/CLAUDE.md +352 -0
- package/docs/COMPLETE_VALIDATION_SUMMARY.md +405 -0
- package/docs/INDEX.md +183 -0
- package/docs/LICENSE +21 -0
- package/docs/ONNX_CLI_USAGE.md +344 -0
- package/docs/ONNX_ENV_VARS.md +564 -0
- package/docs/ONNX_INTEGRATION.md +422 -0
- package/docs/ONNX_OPTIMIZATION_GUIDE.md +665 -0
- package/docs/ONNX_OPTIMIZATION_SUMMARY.md +374 -0
- package/docs/ONNX_VS_CLAUDE_QUALITY.md +442 -0
- package/docs/OPENROUTER_DEPLOYMENT.md +495 -0
- package/docs/architecture/EXECUTIVE_SUMMARY.md +310 -0
- package/docs/architecture/IMPROVEMENT_PLAN.md +11 -0
- package/docs/architecture/INTEGRATION-STATUS.md +290 -0
- package/docs/architecture/MULTI_MODEL_ROUTER_PLAN.md +620 -0
- package/docs/architecture/QUICK_WINS.md +333 -0
- package/docs/architecture/README.md +15 -0
- package/docs/architecture/RESEARCH_SUMMARY.md +652 -0
- package/docs/archived/FASTMCP_COMPLETE.md +428 -0
- package/docs/archived/FASTMCP_INTEGRATION_STATUS.md +288 -0
- package/docs/archived/FLOW-NEXUS-COMPLETE.md +269 -0
- package/docs/archived/INTEGRATION_CONFIRMED.md +351 -0
- package/docs/archived/ONNX_FINAL_REPORT.md +312 -0
- package/docs/archived/ONNX_IMPLEMENTATION_COMPLETE.md +215 -0
- package/docs/archived/ONNX_IMPLEMENTATION_SUMMARY.md +197 -0
- package/docs/archived/ONNX_SUCCESS_REPORT.md +271 -0
- package/docs/archived/OPENROUTER_PROXY_COMPLETE.md +494 -0
- package/docs/archived/PACKAGE-COMPLETE.md +138 -0
- package/docs/archived/README.md +27 -0
- package/docs/archived/RESEARCH_COMPLETE.txt +335 -0
- package/docs/archived/SDK-SETUP-COMPLETE.md +252 -0
- package/docs/guides/ALTERNATIVE_LLM_MODELS.md +524 -0
- package/docs/guides/DOCKER_AGENT_USAGE.md +352 -0
- package/docs/guides/IMPLEMENTATION_EXAMPLES.md +960 -0
- package/docs/guides/NPM-PUBLISH.md +218 -0
- package/docs/guides/README.md +17 -0
- package/docs/guides/agent-sdk.md +234 -0
- package/docs/integrations/CLAUDE_AGENTS_INTEGRATION.md +356 -0
- package/docs/integrations/CLAUDE_FLOW_INTEGRATION.md +535 -0
- package/docs/integrations/FASTMCP_CLI_INTEGRATION.md +503 -0
- package/docs/integrations/FLOW-NEXUS-INTEGRATION.md +319 -0
- package/docs/integrations/README.md +18 -0
- package/docs/integrations/fastmcp-implementation-plan.md +2516 -0
- package/docs/integrations/fastmcp-poc-integration.md +198 -0
- package/docs/router/ONNX_PHI4_RESEARCH.md +220 -0
- package/docs/router/ONNX_RUNTIME_INTEGRATION_PLAN.md +866 -0
- package/docs/router/PHI4_HYPEROPTIMIZATION_PLAN.md +2488 -0
- package/docs/router/README.md +552 -0
- package/docs/router/ROUTER_CONFIG_REFERENCE.md +577 -0
- package/docs/router/ROUTER_USER_GUIDE.md +865 -0
- package/docs/validation/DOCKER_MCP_VALIDATION.md +358 -0
- package/docs/validation/DOCKER_OPENROUTER_VALIDATION.md +443 -0
- package/docs/validation/FINAL_SYSTEM_VALIDATION.md +458 -0
- package/docs/validation/FINAL_VALIDATION_SUMMARY.md +409 -0
- package/docs/validation/MCP_CLI_TOOLS_VALIDATION.md +266 -0
- package/docs/validation/MODEL_VALIDATION_REPORT.md +386 -0
- package/docs/validation/OPENROUTER_VALIDATION_COMPLETE.md +382 -0
- package/docs/validation/README.md +20 -0
- package/docs/validation/ROUTER_VALIDATION.md +311 -0
- package/package.json +140 -0
package/dist/index.js
ADDED
|
@@ -0,0 +1,167 @@
|
|
|
1
|
+
import "dotenv/config";
|
|
2
|
+
import { webResearchAgent } from "./agents/webResearchAgent.js";
|
|
3
|
+
import { codeReviewAgent } from "./agents/codeReviewAgent.js";
|
|
4
|
+
import { dataAgent } from "./agents/dataAgent.js";
|
|
5
|
+
import { claudeAgent } from "./agents/claudeAgent.js";
|
|
6
|
+
import { logger } from "./utils/logger.js";
|
|
7
|
+
import { startHealthServer } from "./health.js";
|
|
8
|
+
import { parseArgs, printHelp, validateOptions } from "./utils/cli.js";
|
|
9
|
+
import { getAgent, listAgents } from "./utils/agentLoader.js";
|
|
10
|
+
import { handleMCPCommand } from "./utils/mcpCommands.js";
|
|
11
|
+
async function runParallelMode() {
|
|
12
|
+
const topic = process.env.TOPIC ?? "migrate payments service";
|
|
13
|
+
const codeDiff = process.env.DIFF ?? "feat: add payments router and mandate checks";
|
|
14
|
+
const datasetHint = process.env.DATASET ?? "monthly tx volume, refunds, chargebacks";
|
|
15
|
+
logger.info('Starting parallel agent execution', {
|
|
16
|
+
topic,
|
|
17
|
+
diff: codeDiff.substring(0, 50),
|
|
18
|
+
dataset: datasetHint
|
|
19
|
+
});
|
|
20
|
+
// Stream handler for real-time output
|
|
21
|
+
const streamHandler = (agent) => (chunk) => {
|
|
22
|
+
if (process.env.ENABLE_STREAMING === 'true') {
|
|
23
|
+
process.stdout.write(`[${agent}] ${chunk}`);
|
|
24
|
+
}
|
|
25
|
+
};
|
|
26
|
+
// Each agent runs with its own context. Fan out in parallel.
|
|
27
|
+
const startTime = Date.now();
|
|
28
|
+
const [researchOut, reviewOut, dataOut] = await Promise.all([
|
|
29
|
+
webResearchAgent(`Give me context and risks about: ${topic}`, streamHandler('RESEARCH')),
|
|
30
|
+
codeReviewAgent(`Review this diff at a high level and propose tests:\n${codeDiff}`, streamHandler('CODE_REVIEW')),
|
|
31
|
+
dataAgent(`Analyze ${datasetHint} and report key stats.`, streamHandler('DATA'))
|
|
32
|
+
]);
|
|
33
|
+
const totalDuration = Date.now() - startTime;
|
|
34
|
+
logger.info('All agents completed', {
|
|
35
|
+
totalDuration,
|
|
36
|
+
agentCount: 3,
|
|
37
|
+
avgDuration: Math.round(totalDuration / 3)
|
|
38
|
+
});
|
|
39
|
+
// Basic reconcile step
|
|
40
|
+
const summary = [
|
|
41
|
+
"=== RESEARCH ===",
|
|
42
|
+
researchOut.output?.trim() ?? "",
|
|
43
|
+
"=== CODE REVIEW ===",
|
|
44
|
+
reviewOut.output?.trim() ?? "",
|
|
45
|
+
"=== DATA ===",
|
|
46
|
+
dataOut.output?.trim() ?? ""
|
|
47
|
+
].join("\n");
|
|
48
|
+
console.log(summary);
|
|
49
|
+
}
|
|
50
|
+
async function runAgentMode(agentName, task, stream, modelOverride) {
|
|
51
|
+
logger.info('Running agent mode', { agent: agentName, task: task.substring(0, 100), model: modelOverride || 'default' });
|
|
52
|
+
// Load the specified agent
|
|
53
|
+
const agent = getAgent(agentName);
|
|
54
|
+
if (!agent) {
|
|
55
|
+
const availableAgents = listAgents();
|
|
56
|
+
logger.error('Agent not found', { agent: agentName });
|
|
57
|
+
console.error(`\n❌ Agent '${agentName}' not found.\n`);
|
|
58
|
+
console.error('Available agents:');
|
|
59
|
+
availableAgents.slice(0, 20).forEach(a => {
|
|
60
|
+
console.error(` • ${a.name}: ${a.description.substring(0, 80)}...`);
|
|
61
|
+
});
|
|
62
|
+
if (availableAgents.length > 20) {
|
|
63
|
+
console.error(` ... and ${availableAgents.length - 20} more (use --list to see all)`);
|
|
64
|
+
}
|
|
65
|
+
process.exit(1);
|
|
66
|
+
}
|
|
67
|
+
console.log(`\n🤖 Agent: ${agent.name}`);
|
|
68
|
+
console.log(`📝 Description: ${agent.description}\n`);
|
|
69
|
+
console.log(`🎯 Task: ${task}\n`);
|
|
70
|
+
if (modelOverride) {
|
|
71
|
+
console.log(`🔧 Model: ${modelOverride}\n`);
|
|
72
|
+
}
|
|
73
|
+
console.log('⏳ Running...\n');
|
|
74
|
+
const streamHandler = stream ? (chunk) => process.stdout.write(chunk) : undefined;
|
|
75
|
+
// Use Claude Agent SDK with in-SDK MCP server and optional model override
|
|
76
|
+
logger.info('Using Claude Agent SDK with in-SDK MCP server', { modelOverride });
|
|
77
|
+
const result = await claudeAgent(agent, task, streamHandler, modelOverride);
|
|
78
|
+
if (!stream) {
|
|
79
|
+
console.log('\n✅ Completed!\n');
|
|
80
|
+
console.log('═══════════════════════════════════════\n');
|
|
81
|
+
console.log(result.output);
|
|
82
|
+
console.log('\n═══════════════════════════════════════\n');
|
|
83
|
+
}
|
|
84
|
+
logger.info('Agent mode completed', { agent: agentName, outputLength: result.output.length, model: modelOverride || 'default' });
|
|
85
|
+
}
|
|
86
|
+
function runListMode() {
|
|
87
|
+
const agents = listAgents();
|
|
88
|
+
console.log(`\n📦 Available Agents (${agents.length} total)\n`);
|
|
89
|
+
// Group by category (based on directory structure)
|
|
90
|
+
const grouped = new Map();
|
|
91
|
+
agents.forEach(agent => {
|
|
92
|
+
const parts = agent.filePath.split('/');
|
|
93
|
+
const category = parts[parts.length - 2] || 'other';
|
|
94
|
+
if (!grouped.has(category)) {
|
|
95
|
+
grouped.set(category, []);
|
|
96
|
+
}
|
|
97
|
+
grouped.get(category).push(agent);
|
|
98
|
+
});
|
|
99
|
+
// Print grouped
|
|
100
|
+
Array.from(grouped.entries())
|
|
101
|
+
.sort(([a], [b]) => a.localeCompare(b))
|
|
102
|
+
.forEach(([category, categoryAgents]) => {
|
|
103
|
+
console.log(`\n${category.toUpperCase()}:`);
|
|
104
|
+
categoryAgents.forEach(agent => {
|
|
105
|
+
console.log(` ${agent.name.padEnd(30)} ${agent.description.substring(0, 80)}`);
|
|
106
|
+
});
|
|
107
|
+
});
|
|
108
|
+
console.log(`\nTo use an agent:`);
|
|
109
|
+
console.log(` docker run --env-file .env claude-agents --agent <name> --task "Your task"\n`);
|
|
110
|
+
}
|
|
111
|
+
async function main() {
|
|
112
|
+
logger.setContext({ service: 'claude-agents', version: '1.0.0' });
|
|
113
|
+
// Parse CLI arguments
|
|
114
|
+
const options = parseArgs();
|
|
115
|
+
// Handle help
|
|
116
|
+
if (options.help) {
|
|
117
|
+
printHelp();
|
|
118
|
+
process.exit(0);
|
|
119
|
+
}
|
|
120
|
+
// Handle list mode
|
|
121
|
+
if (options.mode === 'list') {
|
|
122
|
+
runListMode();
|
|
123
|
+
process.exit(0);
|
|
124
|
+
}
|
|
125
|
+
// Handle MCP mode
|
|
126
|
+
if (options.mode === 'mcp') {
|
|
127
|
+
await handleMCPCommand(options.mcpCommand || 'start', options.mcpServer || 'all');
|
|
128
|
+
process.exit(0);
|
|
129
|
+
}
|
|
130
|
+
// Validate options
|
|
131
|
+
const validationError = validateOptions(options);
|
|
132
|
+
if (validationError) {
|
|
133
|
+
console.error(`\n❌ ${validationError}\n`);
|
|
134
|
+
printHelp();
|
|
135
|
+
process.exit(1);
|
|
136
|
+
}
|
|
137
|
+
logger.info('Starting Claude Agent SDK', { mode: options.mode });
|
|
138
|
+
// Start health check server
|
|
139
|
+
const healthPort = parseInt(process.env.HEALTH_PORT || '8080');
|
|
140
|
+
const healthServer = startHealthServer(healthPort);
|
|
141
|
+
try {
|
|
142
|
+
if (options.mode === 'agent') {
|
|
143
|
+
const task = options.task || process.env.TASK || '';
|
|
144
|
+
const agent = options.agent || process.env.AGENT || '';
|
|
145
|
+
const model = options.model || process.env.MODEL;
|
|
146
|
+
await runAgentMode(agent, task, options.stream || false, model);
|
|
147
|
+
}
|
|
148
|
+
else {
|
|
149
|
+
await runParallelMode();
|
|
150
|
+
}
|
|
151
|
+
logger.info('Execution completed successfully');
|
|
152
|
+
}
|
|
153
|
+
catch (err) {
|
|
154
|
+
logger.error('Execution failed', { error: err });
|
|
155
|
+
throw err;
|
|
156
|
+
}
|
|
157
|
+
finally {
|
|
158
|
+
// Keep health server running for container health checks
|
|
159
|
+
if (process.env.KEEP_ALIVE !== 'true') {
|
|
160
|
+
healthServer.close();
|
|
161
|
+
}
|
|
162
|
+
}
|
|
163
|
+
}
|
|
164
|
+
main().catch(err => {
|
|
165
|
+
console.error(err);
|
|
166
|
+
process.exit(1);
|
|
167
|
+
});
|
|
@@ -0,0 +1,202 @@
|
|
|
1
|
+
// In-SDK MCP server for claude-flow tools (no subprocess required)
|
|
2
|
+
import { createSdkMcpServer, tool } from '@anthropic-ai/claude-agent-sdk';
|
|
3
|
+
import { z } from 'zod';
|
|
4
|
+
import { execSync } from 'child_process';
|
|
5
|
+
import { logger } from '../utils/logger.js';
|
|
6
|
+
/**
|
|
7
|
+
* Create an in-SDK MCP server that provides claude-flow memory and coordination tools
|
|
8
|
+
* This runs in-process without spawning Claude Code CLI subprocess
|
|
9
|
+
*/
|
|
10
|
+
export const claudeFlowSdkServer = createSdkMcpServer({
|
|
11
|
+
name: 'claude-flow-sdk',
|
|
12
|
+
version: '1.0.0',
|
|
13
|
+
tools: [
|
|
14
|
+
// Memory storage tool
|
|
15
|
+
tool('memory_store', 'Store a value in persistent memory with optional namespace and TTL', {
|
|
16
|
+
key: z.string().describe('Memory key'),
|
|
17
|
+
value: z.string().describe('Value to store'),
|
|
18
|
+
namespace: z.string().optional().default('default').describe('Memory namespace'),
|
|
19
|
+
ttl: z.number().optional().describe('Time-to-live in seconds')
|
|
20
|
+
}, async ({ key, value, namespace, ttl }) => {
|
|
21
|
+
try {
|
|
22
|
+
logger.info('Storing memory', { key, namespace });
|
|
23
|
+
const cmd = `npx claude-flow@alpha memory store "${key}" "${value}" --namespace "${namespace}"${ttl ? ` --ttl ${ttl}` : ''}`;
|
|
24
|
+
const result = execSync(cmd, { encoding: 'utf-8', maxBuffer: 10 * 1024 * 1024 });
|
|
25
|
+
logger.info('Memory stored successfully', { key });
|
|
26
|
+
return {
|
|
27
|
+
content: [{
|
|
28
|
+
type: 'text',
|
|
29
|
+
text: `✅ Stored successfully\n📝 Key: ${key}\n📦 Namespace: ${namespace}\n💾 Size: ${value.length} bytes`
|
|
30
|
+
}]
|
|
31
|
+
};
|
|
32
|
+
}
|
|
33
|
+
catch (error) {
|
|
34
|
+
logger.error('Failed to store memory', { error: error.message });
|
|
35
|
+
return {
|
|
36
|
+
content: [{
|
|
37
|
+
type: 'text',
|
|
38
|
+
text: `❌ Failed to store: ${error.message}`
|
|
39
|
+
}],
|
|
40
|
+
isError: true
|
|
41
|
+
};
|
|
42
|
+
}
|
|
43
|
+
}),
|
|
44
|
+
// Memory retrieval tool
|
|
45
|
+
tool('memory_retrieve', 'Retrieve a value from persistent memory', {
|
|
46
|
+
key: z.string().describe('Memory key'),
|
|
47
|
+
namespace: z.string().optional().default('default').describe('Memory namespace')
|
|
48
|
+
}, async ({ key, namespace }) => {
|
|
49
|
+
try {
|
|
50
|
+
const cmd = `npx claude-flow@alpha memory retrieve "${key}" --namespace "${namespace}"`;
|
|
51
|
+
const result = execSync(cmd, { encoding: 'utf-8' });
|
|
52
|
+
return {
|
|
53
|
+
content: [{
|
|
54
|
+
type: 'text',
|
|
55
|
+
text: `✅ Retrieved:\n${result}`
|
|
56
|
+
}]
|
|
57
|
+
};
|
|
58
|
+
}
|
|
59
|
+
catch (error) {
|
|
60
|
+
return {
|
|
61
|
+
content: [{
|
|
62
|
+
type: 'text',
|
|
63
|
+
text: `❌ Failed to retrieve: ${error.message}`
|
|
64
|
+
}],
|
|
65
|
+
isError: true
|
|
66
|
+
};
|
|
67
|
+
}
|
|
68
|
+
}),
|
|
69
|
+
// Memory search tool
|
|
70
|
+
tool('memory_search', 'Search for keys matching a pattern in memory', {
|
|
71
|
+
pattern: z.string().describe('Search pattern (supports wildcards)'),
|
|
72
|
+
namespace: z.string().optional().describe('Memory namespace to search in'),
|
|
73
|
+
limit: z.number().optional().default(10).describe('Maximum results to return')
|
|
74
|
+
}, async ({ pattern, namespace, limit }) => {
|
|
75
|
+
try {
|
|
76
|
+
const cmd = `npx claude-flow@alpha memory search "${pattern}"${namespace ? ` --namespace "${namespace}"` : ''} --limit ${limit}`;
|
|
77
|
+
const result = execSync(cmd, { encoding: 'utf-8' });
|
|
78
|
+
return {
|
|
79
|
+
content: [{
|
|
80
|
+
type: 'text',
|
|
81
|
+
text: `🔍 Search results:\n${result}`
|
|
82
|
+
}]
|
|
83
|
+
};
|
|
84
|
+
}
|
|
85
|
+
catch (error) {
|
|
86
|
+
return {
|
|
87
|
+
content: [{
|
|
88
|
+
type: 'text',
|
|
89
|
+
text: `❌ Search failed: ${error.message}`
|
|
90
|
+
}],
|
|
91
|
+
isError: true
|
|
92
|
+
};
|
|
93
|
+
}
|
|
94
|
+
}),
|
|
95
|
+
// Swarm initialization tool
|
|
96
|
+
tool('swarm_init', 'Initialize a multi-agent swarm with specified topology', {
|
|
97
|
+
topology: z.enum(['mesh', 'hierarchical', 'ring', 'star']).describe('Swarm topology'),
|
|
98
|
+
maxAgents: z.number().optional().default(8).describe('Maximum number of agents'),
|
|
99
|
+
strategy: z.enum(['balanced', 'specialized', 'adaptive']).optional().default('balanced').describe('Agent distribution strategy')
|
|
100
|
+
}, async ({ topology, maxAgents, strategy }) => {
|
|
101
|
+
try {
|
|
102
|
+
const cmd = `npx claude-flow@alpha swarm init --topology ${topology} --max-agents ${maxAgents} --strategy ${strategy}`;
|
|
103
|
+
const result = execSync(cmd, { encoding: 'utf-8' });
|
|
104
|
+
return {
|
|
105
|
+
content: [{
|
|
106
|
+
type: 'text',
|
|
107
|
+
text: `🚀 Swarm initialized:\n${result}`
|
|
108
|
+
}]
|
|
109
|
+
};
|
|
110
|
+
}
|
|
111
|
+
catch (error) {
|
|
112
|
+
return {
|
|
113
|
+
content: [{
|
|
114
|
+
type: 'text',
|
|
115
|
+
text: `❌ Swarm init failed: ${error.message}`
|
|
116
|
+
}],
|
|
117
|
+
isError: true
|
|
118
|
+
};
|
|
119
|
+
}
|
|
120
|
+
}),
|
|
121
|
+
// Agent spawn tool
|
|
122
|
+
tool('agent_spawn', 'Spawn a new agent in the swarm', {
|
|
123
|
+
type: z.enum(['researcher', 'coder', 'analyst', 'optimizer', 'coordinator']).describe('Agent type'),
|
|
124
|
+
capabilities: z.array(z.string()).optional().describe('Agent capabilities'),
|
|
125
|
+
name: z.string().optional().describe('Custom agent name')
|
|
126
|
+
}, async ({ type, capabilities, name }) => {
|
|
127
|
+
try {
|
|
128
|
+
const capStr = capabilities ? ` --capabilities "${capabilities.join(',')}"` : '';
|
|
129
|
+
const nameStr = name ? ` --name "${name}"` : '';
|
|
130
|
+
const cmd = `npx claude-flow@alpha agent spawn --type ${type}${capStr}${nameStr}`;
|
|
131
|
+
const result = execSync(cmd, { encoding: 'utf-8' });
|
|
132
|
+
return {
|
|
133
|
+
content: [{
|
|
134
|
+
type: 'text',
|
|
135
|
+
text: `🤖 Agent spawned:\n${result}`
|
|
136
|
+
}]
|
|
137
|
+
};
|
|
138
|
+
}
|
|
139
|
+
catch (error) {
|
|
140
|
+
return {
|
|
141
|
+
content: [{
|
|
142
|
+
type: 'text',
|
|
143
|
+
text: `❌ Agent spawn failed: ${error.message}`
|
|
144
|
+
}],
|
|
145
|
+
isError: true
|
|
146
|
+
};
|
|
147
|
+
}
|
|
148
|
+
}),
|
|
149
|
+
// Task orchestration tool
|
|
150
|
+
tool('task_orchestrate', 'Orchestrate a complex task across the swarm', {
|
|
151
|
+
task: z.string().describe('Task description or instructions'),
|
|
152
|
+
strategy: z.enum(['parallel', 'sequential', 'adaptive']).optional().default('adaptive').describe('Execution strategy'),
|
|
153
|
+
priority: z.enum(['low', 'medium', 'high', 'critical']).optional().default('medium').describe('Task priority'),
|
|
154
|
+
maxAgents: z.number().optional().describe('Maximum agents to use for this task')
|
|
155
|
+
}, async ({ task, strategy, priority, maxAgents }) => {
|
|
156
|
+
try {
|
|
157
|
+
const maxStr = maxAgents ? ` --max-agents ${maxAgents}` : '';
|
|
158
|
+
const cmd = `npx claude-flow@alpha task orchestrate "${task}" --strategy ${strategy} --priority ${priority}${maxStr}`;
|
|
159
|
+
const result = execSync(cmd, { encoding: 'utf-8' });
|
|
160
|
+
return {
|
|
161
|
+
content: [{
|
|
162
|
+
type: 'text',
|
|
163
|
+
text: `⚡ Task orchestrated:\n${result}`
|
|
164
|
+
}]
|
|
165
|
+
};
|
|
166
|
+
}
|
|
167
|
+
catch (error) {
|
|
168
|
+
return {
|
|
169
|
+
content: [{
|
|
170
|
+
type: 'text',
|
|
171
|
+
text: `❌ Task orchestration failed: ${error.message}`
|
|
172
|
+
}],
|
|
173
|
+
isError: true
|
|
174
|
+
};
|
|
175
|
+
}
|
|
176
|
+
}),
|
|
177
|
+
// Swarm status tool
|
|
178
|
+
tool('swarm_status', 'Get current swarm status and metrics', {
|
|
179
|
+
verbose: z.boolean().optional().default(false).describe('Include detailed metrics')
|
|
180
|
+
}, async ({ verbose }) => {
|
|
181
|
+
try {
|
|
182
|
+
const cmd = `npx claude-flow@alpha swarm status${verbose ? ' --verbose' : ''}`;
|
|
183
|
+
const result = execSync(cmd, { encoding: 'utf-8' });
|
|
184
|
+
return {
|
|
185
|
+
content: [{
|
|
186
|
+
type: 'text',
|
|
187
|
+
text: `📊 Swarm status:\n${result}`
|
|
188
|
+
}]
|
|
189
|
+
};
|
|
190
|
+
}
|
|
191
|
+
catch (error) {
|
|
192
|
+
return {
|
|
193
|
+
content: [{
|
|
194
|
+
type: 'text',
|
|
195
|
+
text: `❌ Status check failed: ${error.message}`
|
|
196
|
+
}],
|
|
197
|
+
isError: true
|
|
198
|
+
};
|
|
199
|
+
}
|
|
200
|
+
})
|
|
201
|
+
]
|
|
202
|
+
});
|
|
@@ -0,0 +1,198 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
// FastMCP implementation of claude-flow-sdk server (in-process, 6 tools)
|
|
3
|
+
// Phase 1: Migration from claudeFlowSdkServer.ts to fastmcp
|
|
4
|
+
import { FastMCP } from 'fastmcp';
|
|
5
|
+
import { z } from 'zod';
|
|
6
|
+
import { execSync } from 'child_process';
|
|
7
|
+
import { logger } from '../../../utils/logger.js';
|
|
8
|
+
console.error('🚀 Starting FastMCP claude-flow-sdk Server...');
|
|
9
|
+
// Create server
|
|
10
|
+
const server = new FastMCP({
|
|
11
|
+
name: 'claude-flow-sdk',
|
|
12
|
+
version: '1.0.0'
|
|
13
|
+
});
|
|
14
|
+
// Tool 1: Memory Store
|
|
15
|
+
server.addTool({
|
|
16
|
+
name: 'memory_store',
|
|
17
|
+
description: 'Store a value in persistent memory with optional namespace and TTL',
|
|
18
|
+
parameters: z.object({
|
|
19
|
+
key: z.string().min(1).describe('Memory key'),
|
|
20
|
+
value: z.string().describe('Value to store'),
|
|
21
|
+
namespace: z.string().optional().default('default').describe('Memory namespace'),
|
|
22
|
+
ttl: z.number().positive().optional().describe('Time-to-live in seconds')
|
|
23
|
+
}),
|
|
24
|
+
execute: async ({ key, value, namespace, ttl }) => {
|
|
25
|
+
try {
|
|
26
|
+
logger.info('Storing memory', { key, namespace });
|
|
27
|
+
const cmd = [
|
|
28
|
+
'npx claude-flow@alpha memory store',
|
|
29
|
+
`"${key}"`,
|
|
30
|
+
`"${value}"`,
|
|
31
|
+
`--namespace "${namespace}"`,
|
|
32
|
+
ttl ? `--ttl ${ttl}` : ''
|
|
33
|
+
].filter(Boolean).join(' ');
|
|
34
|
+
const result = execSync(cmd, { encoding: 'utf-8', maxBuffer: 10 * 1024 * 1024 });
|
|
35
|
+
logger.info('Memory stored successfully', { key });
|
|
36
|
+
return JSON.stringify({
|
|
37
|
+
success: true,
|
|
38
|
+
key,
|
|
39
|
+
namespace,
|
|
40
|
+
size: value.length,
|
|
41
|
+
ttl,
|
|
42
|
+
timestamp: new Date().toISOString(),
|
|
43
|
+
message: 'Memory stored successfully'
|
|
44
|
+
}, null, 2);
|
|
45
|
+
}
|
|
46
|
+
catch (error) {
|
|
47
|
+
logger.error('Failed to store memory', { error: error.message });
|
|
48
|
+
throw new Error(`Failed to store memory: ${error.message}`);
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
});
|
|
52
|
+
// Tool 2: Memory Retrieve
|
|
53
|
+
server.addTool({
|
|
54
|
+
name: 'memory_retrieve',
|
|
55
|
+
description: 'Retrieve a value from persistent memory',
|
|
56
|
+
parameters: z.object({
|
|
57
|
+
key: z.string().min(1).describe('Memory key'),
|
|
58
|
+
namespace: z.string().optional().default('default').describe('Memory namespace')
|
|
59
|
+
}),
|
|
60
|
+
execute: async ({ key, namespace }) => {
|
|
61
|
+
try {
|
|
62
|
+
const cmd = `npx claude-flow@alpha memory retrieve "${key}" --namespace "${namespace}"`;
|
|
63
|
+
const result = execSync(cmd, { encoding: 'utf-8', maxBuffer: 10 * 1024 * 1024 });
|
|
64
|
+
return JSON.stringify({
|
|
65
|
+
success: true,
|
|
66
|
+
key,
|
|
67
|
+
namespace,
|
|
68
|
+
value: result.trim(),
|
|
69
|
+
timestamp: new Date().toISOString()
|
|
70
|
+
}, null, 2);
|
|
71
|
+
}
|
|
72
|
+
catch (error) {
|
|
73
|
+
throw new Error(`Failed to retrieve memory: ${error.message}`);
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
});
|
|
77
|
+
// Tool 3: Memory Search
|
|
78
|
+
server.addTool({
|
|
79
|
+
name: 'memory_search',
|
|
80
|
+
description: 'Search for keys matching a pattern in memory',
|
|
81
|
+
parameters: z.object({
|
|
82
|
+
pattern: z.string().min(1).describe('Search pattern (supports wildcards)'),
|
|
83
|
+
namespace: z.string().optional().describe('Memory namespace to search in'),
|
|
84
|
+
limit: z.number().positive().optional().default(10).describe('Maximum results to return')
|
|
85
|
+
}),
|
|
86
|
+
execute: async ({ pattern, namespace, limit }) => {
|
|
87
|
+
try {
|
|
88
|
+
const cmd = `npx claude-flow@alpha memory search "${pattern}"${namespace ? ` --namespace "${namespace}"` : ''} --limit ${limit}`;
|
|
89
|
+
const result = execSync(cmd, { encoding: 'utf-8', maxBuffer: 10 * 1024 * 1024 });
|
|
90
|
+
return JSON.stringify({
|
|
91
|
+
success: true,
|
|
92
|
+
pattern,
|
|
93
|
+
namespace: namespace || 'all',
|
|
94
|
+
results: result.trim(),
|
|
95
|
+
limit,
|
|
96
|
+
timestamp: new Date().toISOString()
|
|
97
|
+
}, null, 2);
|
|
98
|
+
}
|
|
99
|
+
catch (error) {
|
|
100
|
+
throw new Error(`Failed to search memory: ${error.message}`);
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
});
|
|
104
|
+
// Tool 4: Swarm Init
|
|
105
|
+
server.addTool({
|
|
106
|
+
name: 'swarm_init',
|
|
107
|
+
description: 'Initialize a multi-agent swarm with specified topology',
|
|
108
|
+
parameters: z.object({
|
|
109
|
+
topology: z.enum(['mesh', 'hierarchical', 'ring', 'star']).describe('Swarm topology'),
|
|
110
|
+
maxAgents: z.number().positive().optional().default(8).describe('Maximum number of agents'),
|
|
111
|
+
strategy: z.enum(['balanced', 'specialized', 'adaptive']).optional().default('balanced').describe('Agent distribution strategy')
|
|
112
|
+
}),
|
|
113
|
+
execute: async ({ topology, maxAgents, strategy }) => {
|
|
114
|
+
try {
|
|
115
|
+
const cmd = `npx claude-flow@alpha swarm init --topology ${topology} --max-agents ${maxAgents} --strategy ${strategy}`;
|
|
116
|
+
const result = execSync(cmd, { encoding: 'utf-8', maxBuffer: 10 * 1024 * 1024 });
|
|
117
|
+
return JSON.stringify({
|
|
118
|
+
success: true,
|
|
119
|
+
topology,
|
|
120
|
+
maxAgents,
|
|
121
|
+
strategy,
|
|
122
|
+
result: result.trim(),
|
|
123
|
+
timestamp: new Date().toISOString()
|
|
124
|
+
}, null, 2);
|
|
125
|
+
}
|
|
126
|
+
catch (error) {
|
|
127
|
+
throw new Error(`Failed to initialize swarm: ${error.message}`);
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
});
|
|
131
|
+
// Tool 5: Agent Spawn
|
|
132
|
+
server.addTool({
|
|
133
|
+
name: 'agent_spawn',
|
|
134
|
+
description: 'Spawn a new agent in the swarm',
|
|
135
|
+
parameters: z.object({
|
|
136
|
+
type: z.enum(['researcher', 'coder', 'analyst', 'optimizer', 'coordinator']).describe('Agent type'),
|
|
137
|
+
capabilities: z.array(z.string()).optional().describe('Agent capabilities'),
|
|
138
|
+
name: z.string().optional().describe('Custom agent name')
|
|
139
|
+
}),
|
|
140
|
+
execute: async ({ type, capabilities, name }) => {
|
|
141
|
+
try {
|
|
142
|
+
const capStr = capabilities ? ` --capabilities "${capabilities.join(',')}"` : '';
|
|
143
|
+
const nameStr = name ? ` --name "${name}"` : '';
|
|
144
|
+
const cmd = `npx claude-flow@alpha agent spawn --type ${type}${capStr}${nameStr}`;
|
|
145
|
+
const result = execSync(cmd, { encoding: 'utf-8', maxBuffer: 10 * 1024 * 1024 });
|
|
146
|
+
return JSON.stringify({
|
|
147
|
+
success: true,
|
|
148
|
+
type,
|
|
149
|
+
capabilities,
|
|
150
|
+
name,
|
|
151
|
+
result: result.trim(),
|
|
152
|
+
timestamp: new Date().toISOString()
|
|
153
|
+
}, null, 2);
|
|
154
|
+
}
|
|
155
|
+
catch (error) {
|
|
156
|
+
throw new Error(`Failed to spawn agent: ${error.message}`);
|
|
157
|
+
}
|
|
158
|
+
}
|
|
159
|
+
});
|
|
160
|
+
// Tool 6: Task Orchestrate
|
|
161
|
+
server.addTool({
|
|
162
|
+
name: 'task_orchestrate',
|
|
163
|
+
description: 'Orchestrate a complex task across the swarm',
|
|
164
|
+
parameters: z.object({
|
|
165
|
+
task: z.string().min(1).describe('Task description or instructions'),
|
|
166
|
+
strategy: z.enum(['parallel', 'sequential', 'adaptive']).optional().default('adaptive').describe('Execution strategy'),
|
|
167
|
+
priority: z.enum(['low', 'medium', 'high', 'critical']).optional().default('medium').describe('Task priority'),
|
|
168
|
+
maxAgents: z.number().positive().optional().describe('Maximum agents to use for this task')
|
|
169
|
+
}),
|
|
170
|
+
execute: async ({ task, strategy, priority, maxAgents }) => {
|
|
171
|
+
try {
|
|
172
|
+
const maxStr = maxAgents ? ` --max-agents ${maxAgents}` : '';
|
|
173
|
+
const cmd = `npx claude-flow@alpha task orchestrate "${task}" --strategy ${strategy} --priority ${priority}${maxStr}`;
|
|
174
|
+
const result = execSync(cmd, { encoding: 'utf-8', maxBuffer: 10 * 1024 * 1024 });
|
|
175
|
+
return JSON.stringify({
|
|
176
|
+
success: true,
|
|
177
|
+
task,
|
|
178
|
+
strategy,
|
|
179
|
+
priority,
|
|
180
|
+
maxAgents,
|
|
181
|
+
result: result.trim(),
|
|
182
|
+
timestamp: new Date().toISOString()
|
|
183
|
+
}, null, 2);
|
|
184
|
+
}
|
|
185
|
+
catch (error) {
|
|
186
|
+
throw new Error(`Failed to orchestrate task: ${error.message}`);
|
|
187
|
+
}
|
|
188
|
+
}
|
|
189
|
+
});
|
|
190
|
+
console.error('📦 Registered 6 tools: memory_store, memory_retrieve, memory_search, swarm_init, agent_spawn, task_orchestrate');
|
|
191
|
+
console.error('🔌 Starting stdio transport...');
|
|
192
|
+
// Start with stdio transport
|
|
193
|
+
server.start({ transportType: 'stdio' }).then(() => {
|
|
194
|
+
console.error('✅ FastMCP claude-flow-sdk server running on stdio');
|
|
195
|
+
}).catch((error) => {
|
|
196
|
+
console.error('❌ Failed to start server:', error);
|
|
197
|
+
process.exit(1);
|
|
198
|
+
});
|