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.
Files changed (383) hide show
  1. package/.claude/agents/MIGRATION_SUMMARY.md +222 -0
  2. package/.claude/agents/README.md +89 -0
  3. package/.claude/agents/analysis/code-analyzer.md +209 -0
  4. package/.claude/agents/analysis/code-review/analyze-code-quality.md +180 -0
  5. package/.claude/agents/architecture/system-design/arch-system-design.md +156 -0
  6. package/.claude/agents/base-template-generator.md +42 -0
  7. package/.claude/agents/consensus/README.md +253 -0
  8. package/.claude/agents/consensus/byzantine-coordinator.md +63 -0
  9. package/.claude/agents/consensus/crdt-synchronizer.md +997 -0
  10. package/.claude/agents/consensus/gossip-coordinator.md +63 -0
  11. package/.claude/agents/consensus/performance-benchmarker.md +851 -0
  12. package/.claude/agents/consensus/quorum-manager.md +823 -0
  13. package/.claude/agents/consensus/raft-manager.md +63 -0
  14. package/.claude/agents/consensus/security-manager.md +622 -0
  15. package/.claude/agents/core/coder.md +211 -0
  16. package/.claude/agents/core/planner.md +116 -0
  17. package/.claude/agents/core/researcher.md +136 -0
  18. package/.claude/agents/core/reviewer.md +272 -0
  19. package/.claude/agents/core/tester.md +266 -0
  20. package/.claude/agents/data/ml/data-ml-model.md +193 -0
  21. package/.claude/agents/development/backend/dev-backend-api.md +142 -0
  22. package/.claude/agents/devops/ci-cd/ops-cicd-github.md +164 -0
  23. package/.claude/agents/documentation/api-docs/docs-api-openapi.md +174 -0
  24. package/.claude/agents/flow-nexus/app-store.md +88 -0
  25. package/.claude/agents/flow-nexus/authentication.md +69 -0
  26. package/.claude/agents/flow-nexus/challenges.md +81 -0
  27. package/.claude/agents/flow-nexus/neural-network.md +88 -0
  28. package/.claude/agents/flow-nexus/payments.md +83 -0
  29. package/.claude/agents/flow-nexus/sandbox.md +76 -0
  30. package/.claude/agents/flow-nexus/swarm.md +76 -0
  31. package/.claude/agents/flow-nexus/user-tools.md +96 -0
  32. package/.claude/agents/flow-nexus/workflow.md +84 -0
  33. package/.claude/agents/github/code-review-swarm.md +538 -0
  34. package/.claude/agents/github/github-modes.md +173 -0
  35. package/.claude/agents/github/issue-tracker.md +319 -0
  36. package/.claude/agents/github/multi-repo-swarm.md +553 -0
  37. package/.claude/agents/github/pr-manager.md +191 -0
  38. package/.claude/agents/github/project-board-sync.md +509 -0
  39. package/.claude/agents/github/release-manager.md +367 -0
  40. package/.claude/agents/github/release-swarm.md +583 -0
  41. package/.claude/agents/github/repo-architect.md +398 -0
  42. package/.claude/agents/github/swarm-issue.md +573 -0
  43. package/.claude/agents/github/swarm-pr.md +428 -0
  44. package/.claude/agents/github/sync-coordinator.md +452 -0
  45. package/.claude/agents/github/workflow-automation.md +635 -0
  46. package/.claude/agents/goal/agent.md +816 -0
  47. package/.claude/agents/goal/goal-planner.md +73 -0
  48. package/.claude/agents/optimization/README.md +250 -0
  49. package/.claude/agents/optimization/benchmark-suite.md +665 -0
  50. package/.claude/agents/optimization/load-balancer.md +431 -0
  51. package/.claude/agents/optimization/performance-monitor.md +672 -0
  52. package/.claude/agents/optimization/resource-allocator.md +674 -0
  53. package/.claude/agents/optimization/topology-optimizer.md +808 -0
  54. package/.claude/agents/payments/agentic-payments.md +126 -0
  55. package/.claude/agents/sparc/architecture.md +472 -0
  56. package/.claude/agents/sparc/pseudocode.md +318 -0
  57. package/.claude/agents/sparc/refinement.md +525 -0
  58. package/.claude/agents/sparc/specification.md +276 -0
  59. package/.claude/agents/specialized/mobile/spec-mobile-react-native.md +226 -0
  60. package/.claude/agents/sublinear/consensus-coordinator.md +338 -0
  61. package/.claude/agents/sublinear/matrix-optimizer.md +185 -0
  62. package/.claude/agents/sublinear/pagerank-analyzer.md +299 -0
  63. package/.claude/agents/sublinear/performance-optimizer.md +368 -0
  64. package/.claude/agents/sublinear/trading-predictor.md +246 -0
  65. package/.claude/agents/swarm/README.md +190 -0
  66. package/.claude/agents/swarm/adaptive-coordinator.md +396 -0
  67. package/.claude/agents/swarm/hierarchical-coordinator.md +256 -0
  68. package/.claude/agents/swarm/mesh-coordinator.md +392 -0
  69. package/.claude/agents/templates/automation-smart-agent.md +205 -0
  70. package/.claude/agents/templates/coordinator-swarm-init.md +90 -0
  71. package/.claude/agents/templates/github-pr-manager.md +177 -0
  72. package/.claude/agents/templates/implementer-sparc-coder.md +259 -0
  73. package/.claude/agents/templates/memory-coordinator.md +187 -0
  74. package/.claude/agents/templates/migration-plan.md +746 -0
  75. package/.claude/agents/templates/orchestrator-task.md +139 -0
  76. package/.claude/agents/templates/performance-analyzer.md +199 -0
  77. package/.claude/agents/templates/sparc-coordinator.md +183 -0
  78. package/.claude/agents/test-neural.md +14 -0
  79. package/.claude/agents/testing/unit/tdd-london-swarm.md +244 -0
  80. package/.claude/agents/testing/validation/production-validator.md +395 -0
  81. package/.claude/commands/agents/README.md +10 -0
  82. package/.claude/commands/agents/agent-capabilities.md +21 -0
  83. package/.claude/commands/agents/agent-coordination.md +28 -0
  84. package/.claude/commands/agents/agent-spawning.md +28 -0
  85. package/.claude/commands/agents/agent-types.md +26 -0
  86. package/.claude/commands/analysis/COMMAND_COMPLIANCE_REPORT.md +54 -0
  87. package/.claude/commands/analysis/README.md +9 -0
  88. package/.claude/commands/analysis/bottleneck-detect.md +162 -0
  89. package/.claude/commands/analysis/performance-bottlenecks.md +59 -0
  90. package/.claude/commands/analysis/performance-report.md +25 -0
  91. package/.claude/commands/analysis/token-efficiency.md +45 -0
  92. package/.claude/commands/analysis/token-usage.md +25 -0
  93. package/.claude/commands/automation/README.md +9 -0
  94. package/.claude/commands/automation/auto-agent.md +122 -0
  95. package/.claude/commands/automation/self-healing.md +106 -0
  96. package/.claude/commands/automation/session-memory.md +90 -0
  97. package/.claude/commands/automation/smart-agents.md +73 -0
  98. package/.claude/commands/automation/smart-spawn.md +25 -0
  99. package/.claude/commands/automation/workflow-select.md +25 -0
  100. package/.claude/commands/claude-flow-help.md +103 -0
  101. package/.claude/commands/claude-flow-memory.md +107 -0
  102. package/.claude/commands/claude-flow-swarm.md +205 -0
  103. package/.claude/commands/coordination/README.md +9 -0
  104. package/.claude/commands/coordination/agent-spawn.md +25 -0
  105. package/.claude/commands/coordination/init.md +44 -0
  106. package/.claude/commands/coordination/orchestrate.md +43 -0
  107. package/.claude/commands/coordination/spawn.md +45 -0
  108. package/.claude/commands/coordination/swarm-init.md +85 -0
  109. package/.claude/commands/coordination/task-orchestrate.md +25 -0
  110. package/.claude/commands/flow-nexus/app-store.md +124 -0
  111. package/.claude/commands/flow-nexus/challenges.md +120 -0
  112. package/.claude/commands/flow-nexus/login-registration.md +65 -0
  113. package/.claude/commands/flow-nexus/neural-network.md +134 -0
  114. package/.claude/commands/flow-nexus/payments.md +116 -0
  115. package/.claude/commands/flow-nexus/sandbox.md +83 -0
  116. package/.claude/commands/flow-nexus/swarm.md +87 -0
  117. package/.claude/commands/flow-nexus/user-tools.md +152 -0
  118. package/.claude/commands/flow-nexus/workflow.md +115 -0
  119. package/.claude/commands/github/README.md +11 -0
  120. package/.claude/commands/github/code-review-swarm.md +514 -0
  121. package/.claude/commands/github/code-review.md +25 -0
  122. package/.claude/commands/github/github-modes.md +147 -0
  123. package/.claude/commands/github/github-swarm.md +121 -0
  124. package/.claude/commands/github/issue-tracker.md +292 -0
  125. package/.claude/commands/github/issue-triage.md +25 -0
  126. package/.claude/commands/github/multi-repo-swarm.md +519 -0
  127. package/.claude/commands/github/pr-enhance.md +26 -0
  128. package/.claude/commands/github/pr-manager.md +170 -0
  129. package/.claude/commands/github/project-board-sync.md +471 -0
  130. package/.claude/commands/github/release-manager.md +338 -0
  131. package/.claude/commands/github/release-swarm.md +544 -0
  132. package/.claude/commands/github/repo-analyze.md +25 -0
  133. package/.claude/commands/github/repo-architect.md +367 -0
  134. package/.claude/commands/github/swarm-issue.md +482 -0
  135. package/.claude/commands/github/swarm-pr.md +285 -0
  136. package/.claude/commands/github/sync-coordinator.md +301 -0
  137. package/.claude/commands/github/workflow-automation.md +442 -0
  138. package/.claude/commands/hive-mind/README.md +17 -0
  139. package/.claude/commands/hive-mind/hive-mind-consensus.md +8 -0
  140. package/.claude/commands/hive-mind/hive-mind-init.md +18 -0
  141. package/.claude/commands/hive-mind/hive-mind-memory.md +8 -0
  142. package/.claude/commands/hive-mind/hive-mind-metrics.md +8 -0
  143. package/.claude/commands/hive-mind/hive-mind-resume.md +8 -0
  144. package/.claude/commands/hive-mind/hive-mind-sessions.md +8 -0
  145. package/.claude/commands/hive-mind/hive-mind-spawn.md +21 -0
  146. package/.claude/commands/hive-mind/hive-mind-status.md +8 -0
  147. package/.claude/commands/hive-mind/hive-mind-stop.md +8 -0
  148. package/.claude/commands/hive-mind/hive-mind-wizard.md +8 -0
  149. package/.claude/commands/hive-mind/hive-mind.md +27 -0
  150. package/.claude/commands/hooks/README.md +11 -0
  151. package/.claude/commands/hooks/overview.md +58 -0
  152. package/.claude/commands/hooks/post-edit.md +117 -0
  153. package/.claude/commands/hooks/post-task.md +112 -0
  154. package/.claude/commands/hooks/pre-edit.md +113 -0
  155. package/.claude/commands/hooks/pre-task.md +111 -0
  156. package/.claude/commands/hooks/session-end.md +118 -0
  157. package/.claude/commands/hooks/setup.md +103 -0
  158. package/.claude/commands/memory/README.md +9 -0
  159. package/.claude/commands/memory/memory-persist.md +25 -0
  160. package/.claude/commands/memory/memory-search.md +25 -0
  161. package/.claude/commands/memory/memory-usage.md +25 -0
  162. package/.claude/commands/memory/neural.md +47 -0
  163. package/.claude/commands/memory/usage.md +46 -0
  164. package/.claude/commands/monitoring/README.md +9 -0
  165. package/.claude/commands/monitoring/agent-metrics.md +25 -0
  166. package/.claude/commands/monitoring/agents.md +44 -0
  167. package/.claude/commands/monitoring/real-time-view.md +25 -0
  168. package/.claude/commands/monitoring/status.md +46 -0
  169. package/.claude/commands/monitoring/swarm-monitor.md +25 -0
  170. package/.claude/commands/optimization/README.md +9 -0
  171. package/.claude/commands/optimization/auto-topology.md +62 -0
  172. package/.claude/commands/optimization/cache-manage.md +25 -0
  173. package/.claude/commands/optimization/parallel-execute.md +25 -0
  174. package/.claude/commands/optimization/parallel-execution.md +50 -0
  175. package/.claude/commands/optimization/topology-optimize.md +25 -0
  176. package/.claude/commands/pair/README.md +261 -0
  177. package/.claude/commands/pair/commands.md +546 -0
  178. package/.claude/commands/pair/config.md +510 -0
  179. package/.claude/commands/pair/examples.md +512 -0
  180. package/.claude/commands/pair/modes.md +348 -0
  181. package/.claude/commands/pair/session.md +407 -0
  182. package/.claude/commands/pair/start.md +209 -0
  183. package/.claude/commands/sparc/analyzer.md +52 -0
  184. package/.claude/commands/sparc/architect.md +53 -0
  185. package/.claude/commands/sparc/ask.md +97 -0
  186. package/.claude/commands/sparc/batch-executor.md +54 -0
  187. package/.claude/commands/sparc/code.md +89 -0
  188. package/.claude/commands/sparc/coder.md +54 -0
  189. package/.claude/commands/sparc/debug.md +83 -0
  190. package/.claude/commands/sparc/debugger.md +54 -0
  191. package/.claude/commands/sparc/designer.md +53 -0
  192. package/.claude/commands/sparc/devops.md +109 -0
  193. package/.claude/commands/sparc/docs-writer.md +80 -0
  194. package/.claude/commands/sparc/documenter.md +54 -0
  195. package/.claude/commands/sparc/innovator.md +54 -0
  196. package/.claude/commands/sparc/integration.md +83 -0
  197. package/.claude/commands/sparc/mcp.md +117 -0
  198. package/.claude/commands/sparc/memory-manager.md +54 -0
  199. package/.claude/commands/sparc/optimizer.md +54 -0
  200. package/.claude/commands/sparc/orchestrator.md +132 -0
  201. package/.claude/commands/sparc/post-deployment-monitoring-mode.md +83 -0
  202. package/.claude/commands/sparc/refinement-optimization-mode.md +83 -0
  203. package/.claude/commands/sparc/researcher.md +54 -0
  204. package/.claude/commands/sparc/reviewer.md +54 -0
  205. package/.claude/commands/sparc/security-review.md +80 -0
  206. package/.claude/commands/sparc/sparc-modes.md +174 -0
  207. package/.claude/commands/sparc/sparc.md +111 -0
  208. package/.claude/commands/sparc/spec-pseudocode.md +80 -0
  209. package/.claude/commands/sparc/supabase-admin.md +348 -0
  210. package/.claude/commands/sparc/swarm-coordinator.md +54 -0
  211. package/.claude/commands/sparc/tdd.md +54 -0
  212. package/.claude/commands/sparc/tester.md +54 -0
  213. package/.claude/commands/sparc/tutorial.md +79 -0
  214. package/.claude/commands/sparc/workflow-manager.md +54 -0
  215. package/.claude/commands/sparc.md +166 -0
  216. package/.claude/commands/stream-chain/pipeline.md +121 -0
  217. package/.claude/commands/stream-chain/run.md +70 -0
  218. package/.claude/commands/swarm/README.md +15 -0
  219. package/.claude/commands/swarm/analysis.md +95 -0
  220. package/.claude/commands/swarm/development.md +96 -0
  221. package/.claude/commands/swarm/examples.md +168 -0
  222. package/.claude/commands/swarm/maintenance.md +102 -0
  223. package/.claude/commands/swarm/optimization.md +117 -0
  224. package/.claude/commands/swarm/research.md +136 -0
  225. package/.claude/commands/swarm/swarm-analysis.md +8 -0
  226. package/.claude/commands/swarm/swarm-background.md +8 -0
  227. package/.claude/commands/swarm/swarm-init.md +19 -0
  228. package/.claude/commands/swarm/swarm-modes.md +8 -0
  229. package/.claude/commands/swarm/swarm-monitor.md +8 -0
  230. package/.claude/commands/swarm/swarm-spawn.md +19 -0
  231. package/.claude/commands/swarm/swarm-status.md +8 -0
  232. package/.claude/commands/swarm/swarm-strategies.md +8 -0
  233. package/.claude/commands/swarm/swarm.md +27 -0
  234. package/.claude/commands/swarm/testing.md +131 -0
  235. package/.claude/commands/training/README.md +9 -0
  236. package/.claude/commands/training/model-update.md +25 -0
  237. package/.claude/commands/training/neural-patterns.md +74 -0
  238. package/.claude/commands/training/neural-train.md +25 -0
  239. package/.claude/commands/training/pattern-learn.md +25 -0
  240. package/.claude/commands/training/specialization.md +63 -0
  241. package/.claude/commands/truth/start.md +143 -0
  242. package/.claude/commands/verify/check.md +50 -0
  243. package/.claude/commands/verify/start.md +128 -0
  244. package/.claude/commands/workflows/README.md +9 -0
  245. package/.claude/commands/workflows/development.md +78 -0
  246. package/.claude/commands/workflows/research.md +63 -0
  247. package/.claude/commands/workflows/workflow-create.md +25 -0
  248. package/.claude/commands/workflows/workflow-execute.md +25 -0
  249. package/.claude/commands/workflows/workflow-export.md +25 -0
  250. package/.claude/helpers/checkpoint-manager.sh +251 -0
  251. package/.claude/helpers/github-safe.js +106 -0
  252. package/.claude/helpers/github-setup.sh +28 -0
  253. package/.claude/helpers/quick-start.sh +19 -0
  254. package/.claude/helpers/setup-mcp.sh +18 -0
  255. package/.claude/helpers/standard-checkpoint-hooks.sh +179 -0
  256. package/.claude/mcp.json +13 -0
  257. package/.claude/settings-backup.json +130 -0
  258. package/.claude/settings-optimized.json +116 -0
  259. package/.claude/settings-simple.json +78 -0
  260. package/.claude/settings.json +114 -0
  261. package/.claude/settings.local.json +14 -0
  262. package/README.md +1280 -0
  263. package/dist/agents/claudeAgent.js +73 -0
  264. package/dist/agents/claudeFlowAgent.js +115 -0
  265. package/dist/agents/codeReviewAgent.js +34 -0
  266. package/dist/agents/dataAgent.js +34 -0
  267. package/dist/agents/directApiAgent.js +260 -0
  268. package/dist/agents/webResearchAgent.js +35 -0
  269. package/dist/cli/mcp.js +135 -0
  270. package/dist/cli-proxy.js +246 -0
  271. package/dist/cli.js +158 -0
  272. package/dist/config/claudeFlow.js +67 -0
  273. package/dist/config/tools.js +33 -0
  274. package/dist/coordination/parallelSwarm.js +226 -0
  275. package/dist/examples/multi-agent-orchestration.js +45 -0
  276. package/dist/examples/parallel-swarm-deployment.js +171 -0
  277. package/dist/examples/use-goal-planner.js +52 -0
  278. package/dist/health.js +46 -0
  279. package/dist/index-with-proxy.js +101 -0
  280. package/dist/index.js +167 -0
  281. package/dist/mcp/claudeFlowSdkServer.js +202 -0
  282. package/dist/mcp/fastmcp/servers/claude-flow-sdk.js +198 -0
  283. package/dist/mcp/fastmcp/servers/http-streaming-updated.js +421 -0
  284. package/dist/mcp/fastmcp/servers/poc-stdio.js +82 -0
  285. package/dist/mcp/fastmcp/servers/stdio-full.js +421 -0
  286. package/dist/mcp/fastmcp/tools/agent/add-agent.js +107 -0
  287. package/dist/mcp/fastmcp/tools/agent/add-command.js +117 -0
  288. package/dist/mcp/fastmcp/tools/agent/execute.js +56 -0
  289. package/dist/mcp/fastmcp/tools/agent/list.js +82 -0
  290. package/dist/mcp/fastmcp/tools/agent/parallel.js +63 -0
  291. package/dist/mcp/fastmcp/tools/memory/retrieve.js +38 -0
  292. package/dist/mcp/fastmcp/tools/memory/search.js +41 -0
  293. package/dist/mcp/fastmcp/tools/memory/store.js +56 -0
  294. package/dist/mcp/fastmcp/tools/swarm/init.js +41 -0
  295. package/dist/mcp/fastmcp/tools/swarm/orchestrate.js +47 -0
  296. package/dist/mcp/fastmcp/tools/swarm/spawn.js +40 -0
  297. package/dist/mcp/fastmcp/types/index.js +2 -0
  298. package/dist/proxy/anthropic-to-openrouter.js +246 -0
  299. package/dist/router/providers/anthropic.js +89 -0
  300. package/dist/router/providers/onnx-local-optimized.js +167 -0
  301. package/dist/router/providers/onnx-local.js +294 -0
  302. package/dist/router/providers/onnx-phi4.js +190 -0
  303. package/dist/router/providers/onnx.js +242 -0
  304. package/dist/router/providers/openrouter.js +242 -0
  305. package/dist/router/router.js +283 -0
  306. package/dist/router/test-integration.js +140 -0
  307. package/dist/router/test-onnx-benchmark.js +145 -0
  308. package/dist/router/test-onnx-integration.js +128 -0
  309. package/dist/router/test-onnx-local.js +37 -0
  310. package/dist/router/test-onnx.js +148 -0
  311. package/dist/router/test-openrouter.js +121 -0
  312. package/dist/router/test-phi4.js +137 -0
  313. package/dist/router/types.js +2 -0
  314. package/dist/utils/agentLoader.js +106 -0
  315. package/dist/utils/cli.js +128 -0
  316. package/dist/utils/logger.js +41 -0
  317. package/dist/utils/mcpCommands.js +214 -0
  318. package/dist/utils/model-downloader.js +182 -0
  319. package/dist/utils/retry.js +54 -0
  320. package/docs/.claude-flow/metrics/agent-metrics.json +1 -0
  321. package/docs/.claude-flow/metrics/performance.json +9 -0
  322. package/docs/.claude-flow/metrics/task-metrics.json +10 -0
  323. package/docs/CHANGELOG.md +155 -0
  324. package/docs/CLAUDE.md +352 -0
  325. package/docs/COMPLETE_VALIDATION_SUMMARY.md +405 -0
  326. package/docs/INDEX.md +183 -0
  327. package/docs/LICENSE +21 -0
  328. package/docs/ONNX_CLI_USAGE.md +344 -0
  329. package/docs/ONNX_ENV_VARS.md +564 -0
  330. package/docs/ONNX_INTEGRATION.md +422 -0
  331. package/docs/ONNX_OPTIMIZATION_GUIDE.md +665 -0
  332. package/docs/ONNX_OPTIMIZATION_SUMMARY.md +374 -0
  333. package/docs/ONNX_VS_CLAUDE_QUALITY.md +442 -0
  334. package/docs/OPENROUTER_DEPLOYMENT.md +495 -0
  335. package/docs/architecture/EXECUTIVE_SUMMARY.md +310 -0
  336. package/docs/architecture/IMPROVEMENT_PLAN.md +11 -0
  337. package/docs/architecture/INTEGRATION-STATUS.md +290 -0
  338. package/docs/architecture/MULTI_MODEL_ROUTER_PLAN.md +620 -0
  339. package/docs/architecture/QUICK_WINS.md +333 -0
  340. package/docs/architecture/README.md +15 -0
  341. package/docs/architecture/RESEARCH_SUMMARY.md +652 -0
  342. package/docs/archived/FASTMCP_COMPLETE.md +428 -0
  343. package/docs/archived/FASTMCP_INTEGRATION_STATUS.md +288 -0
  344. package/docs/archived/FLOW-NEXUS-COMPLETE.md +269 -0
  345. package/docs/archived/INTEGRATION_CONFIRMED.md +351 -0
  346. package/docs/archived/ONNX_FINAL_REPORT.md +312 -0
  347. package/docs/archived/ONNX_IMPLEMENTATION_COMPLETE.md +215 -0
  348. package/docs/archived/ONNX_IMPLEMENTATION_SUMMARY.md +197 -0
  349. package/docs/archived/ONNX_SUCCESS_REPORT.md +271 -0
  350. package/docs/archived/OPENROUTER_PROXY_COMPLETE.md +494 -0
  351. package/docs/archived/PACKAGE-COMPLETE.md +138 -0
  352. package/docs/archived/README.md +27 -0
  353. package/docs/archived/RESEARCH_COMPLETE.txt +335 -0
  354. package/docs/archived/SDK-SETUP-COMPLETE.md +252 -0
  355. package/docs/guides/ALTERNATIVE_LLM_MODELS.md +524 -0
  356. package/docs/guides/DOCKER_AGENT_USAGE.md +352 -0
  357. package/docs/guides/IMPLEMENTATION_EXAMPLES.md +960 -0
  358. package/docs/guides/NPM-PUBLISH.md +218 -0
  359. package/docs/guides/README.md +17 -0
  360. package/docs/guides/agent-sdk.md +234 -0
  361. package/docs/integrations/CLAUDE_AGENTS_INTEGRATION.md +356 -0
  362. package/docs/integrations/CLAUDE_FLOW_INTEGRATION.md +535 -0
  363. package/docs/integrations/FASTMCP_CLI_INTEGRATION.md +503 -0
  364. package/docs/integrations/FLOW-NEXUS-INTEGRATION.md +319 -0
  365. package/docs/integrations/README.md +18 -0
  366. package/docs/integrations/fastmcp-implementation-plan.md +2516 -0
  367. package/docs/integrations/fastmcp-poc-integration.md +198 -0
  368. package/docs/router/ONNX_PHI4_RESEARCH.md +220 -0
  369. package/docs/router/ONNX_RUNTIME_INTEGRATION_PLAN.md +866 -0
  370. package/docs/router/PHI4_HYPEROPTIMIZATION_PLAN.md +2488 -0
  371. package/docs/router/README.md +552 -0
  372. package/docs/router/ROUTER_CONFIG_REFERENCE.md +577 -0
  373. package/docs/router/ROUTER_USER_GUIDE.md +865 -0
  374. package/docs/validation/DOCKER_MCP_VALIDATION.md +358 -0
  375. package/docs/validation/DOCKER_OPENROUTER_VALIDATION.md +443 -0
  376. package/docs/validation/FINAL_SYSTEM_VALIDATION.md +458 -0
  377. package/docs/validation/FINAL_VALIDATION_SUMMARY.md +409 -0
  378. package/docs/validation/MCP_CLI_TOOLS_VALIDATION.md +266 -0
  379. package/docs/validation/MODEL_VALIDATION_REPORT.md +386 -0
  380. package/docs/validation/OPENROUTER_VALIDATION_COMPLETE.md +382 -0
  381. package/docs/validation/README.md +20 -0
  382. package/docs/validation/ROUTER_VALIDATION.md +311 -0
  383. package/package.json +140 -0
@@ -0,0 +1,421 @@
1
+ #!/usr/bin/env node
2
+ // Full FastMCP server with stdio transport - All 11 claude-flow-sdk tools
3
+ import { FastMCP } from 'fastmcp';
4
+ import { z } from 'zod';
5
+ import { execSync } from 'child_process';
6
+ console.error('🚀 Starting FastMCP Full Server (stdio transport)...');
7
+ console.error('📦 Loading 11 tools: memory (3), swarm (3), agent (5)');
8
+ // Create server
9
+ const server = new FastMCP({
10
+ name: 'fastmcp-stdio-full',
11
+ version: '1.0.0'
12
+ });
13
+ // Tool 1: Memory Store
14
+ server.addTool({
15
+ name: 'memory_store',
16
+ description: 'Store a value in persistent memory with optional namespace and TTL',
17
+ parameters: z.object({
18
+ key: z.string().min(1).describe('Memory key'),
19
+ value: z.string().describe('Value to store'),
20
+ namespace: z.string().optional().default('default').describe('Memory namespace'),
21
+ ttl: z.number().positive().optional().describe('Time-to-live in seconds')
22
+ }),
23
+ execute: async ({ key, value, namespace, ttl }) => {
24
+ try {
25
+ const cmd = [
26
+ 'npx claude-flow@alpha memory store',
27
+ `"${key}"`,
28
+ `"${value}"`,
29
+ `--namespace "${namespace}"`,
30
+ ttl ? `--ttl ${ttl}` : ''
31
+ ].filter(Boolean).join(' ');
32
+ const result = execSync(cmd, { encoding: 'utf-8', maxBuffer: 10 * 1024 * 1024 });
33
+ return JSON.stringify({
34
+ success: true,
35
+ key,
36
+ namespace,
37
+ size: value.length,
38
+ ttl,
39
+ timestamp: new Date().toISOString(),
40
+ message: 'Memory stored successfully'
41
+ }, null, 2);
42
+ }
43
+ catch (error) {
44
+ throw new Error(`Failed to store memory: ${error.message}`);
45
+ }
46
+ }
47
+ });
48
+ // Tool 2: Memory Retrieve
49
+ server.addTool({
50
+ name: 'memory_retrieve',
51
+ description: 'Retrieve a value from persistent memory',
52
+ parameters: z.object({
53
+ key: z.string().min(1).describe('Memory key'),
54
+ namespace: z.string().optional().default('default').describe('Memory namespace')
55
+ }),
56
+ execute: async ({ key, namespace }) => {
57
+ try {
58
+ const cmd = `npx claude-flow@alpha memory retrieve "${key}" --namespace "${namespace}"`;
59
+ const result = execSync(cmd, { encoding: 'utf-8', maxBuffer: 10 * 1024 * 1024 });
60
+ return JSON.stringify({
61
+ success: true,
62
+ key,
63
+ namespace,
64
+ value: result.trim(),
65
+ timestamp: new Date().toISOString()
66
+ }, null, 2);
67
+ }
68
+ catch (error) {
69
+ throw new Error(`Failed to retrieve memory: ${error.message}`);
70
+ }
71
+ }
72
+ });
73
+ // Tool 3: Memory Search
74
+ server.addTool({
75
+ name: 'memory_search',
76
+ description: 'Search for keys matching a pattern in memory with wildcard support',
77
+ parameters: z.object({
78
+ pattern: z.string().min(1).describe('Search pattern (supports wildcards like * and ?)'),
79
+ namespace: z.string().optional().describe('Memory namespace to search in (searches all if not specified)'),
80
+ limit: z.number().positive().optional().default(10).describe('Maximum number of results to return (1-100)')
81
+ .refine((val) => val >= 1 && val <= 100, { message: 'Limit must be between 1 and 100' })
82
+ }),
83
+ execute: async ({ pattern, namespace, limit }) => {
84
+ try {
85
+ const cmd = [
86
+ 'npx claude-flow@alpha memory search',
87
+ `"${pattern}"`,
88
+ namespace ? `--namespace "${namespace}"` : '',
89
+ `--limit ${limit}`
90
+ ].filter(Boolean).join(' ');
91
+ const result = execSync(cmd, { encoding: 'utf-8', maxBuffer: 10 * 1024 * 1024 });
92
+ return JSON.stringify({
93
+ success: true,
94
+ pattern,
95
+ namespace: namespace || 'all',
96
+ limit,
97
+ results: result.trim(),
98
+ timestamp: new Date().toISOString()
99
+ }, null, 2);
100
+ }
101
+ catch (error) {
102
+ throw new Error(`Failed to search memory: ${error.message}`);
103
+ }
104
+ }
105
+ });
106
+ // Tool 4: Swarm Init
107
+ server.addTool({
108
+ name: 'swarm_init',
109
+ description: 'Initialize a multi-agent swarm with specified topology and strategy',
110
+ parameters: z.object({
111
+ topology: z.enum(['mesh', 'hierarchical', 'ring', 'star'])
112
+ .describe('Swarm topology: mesh (peer-to-peer), hierarchical (tree), ring (circular), star (centralized)'),
113
+ maxAgents: z.number().positive().optional().default(8).describe('Maximum number of agents in the swarm (1-100)')
114
+ .refine((val) => val >= 1 && val <= 100, { message: 'maxAgents must be between 1 and 100' }),
115
+ strategy: z.enum(['balanced', 'specialized', 'adaptive']).optional().default('balanced')
116
+ .describe('Agent distribution strategy: balanced (equal), specialized (role-based), adaptive (dynamic)')
117
+ }),
118
+ execute: async ({ topology, maxAgents, strategy }) => {
119
+ try {
120
+ const cmd = `npx claude-flow@alpha swarm init --topology ${topology} --max-agents ${maxAgents} --strategy ${strategy}`;
121
+ const result = execSync(cmd, { encoding: 'utf-8', maxBuffer: 10 * 1024 * 1024 });
122
+ return JSON.stringify({
123
+ success: true,
124
+ topology,
125
+ maxAgents,
126
+ strategy,
127
+ message: 'Swarm initialized successfully',
128
+ details: result.trim(),
129
+ timestamp: new Date().toISOString()
130
+ }, null, 2);
131
+ }
132
+ catch (error) {
133
+ throw new Error(`Failed to initialize swarm: ${error.message}`);
134
+ }
135
+ }
136
+ });
137
+ // Tool 5: Agent Spawn
138
+ server.addTool({
139
+ name: 'agent_spawn',
140
+ description: 'Spawn a new agent in the swarm with specified type and capabilities',
141
+ parameters: z.object({
142
+ type: z.enum(['researcher', 'coder', 'analyst', 'optimizer', 'coordinator'])
143
+ .describe('Agent type: researcher (data gathering), coder (implementation), analyst (analysis), optimizer (performance), coordinator (orchestration)'),
144
+ capabilities: z.array(z.string()).optional()
145
+ .describe('Specific capabilities for the agent (e.g., ["python", "testing", "documentation"])'),
146
+ name: z.string().optional().describe('Custom agent name/identifier')
147
+ }),
148
+ execute: async ({ type, capabilities, name }) => {
149
+ try {
150
+ const capStr = capabilities ? ` --capabilities "${capabilities.join(',')}"` : '';
151
+ const nameStr = name ? ` --name "${name}"` : '';
152
+ const cmd = `npx claude-flow@alpha agent spawn --type ${type}${capStr}${nameStr}`;
153
+ const result = execSync(cmd, { encoding: 'utf-8', maxBuffer: 10 * 1024 * 1024 });
154
+ return JSON.stringify({
155
+ success: true,
156
+ type,
157
+ capabilities: capabilities || [],
158
+ name: name || `${type}-${Date.now()}`,
159
+ message: 'Agent spawned successfully',
160
+ details: result.trim(),
161
+ timestamp: new Date().toISOString()
162
+ }, null, 2);
163
+ }
164
+ catch (error) {
165
+ throw new Error(`Failed to spawn agent: ${error.message}`);
166
+ }
167
+ }
168
+ });
169
+ // Tool 6: Task Orchestrate
170
+ server.addTool({
171
+ name: 'task_orchestrate',
172
+ description: 'Orchestrate a complex task across the swarm with specified strategy and priority',
173
+ parameters: z.object({
174
+ task: z.string().min(1).describe('Task description or instructions for the swarm to execute'),
175
+ strategy: z.enum(['parallel', 'sequential', 'adaptive']).optional().default('adaptive')
176
+ .describe('Execution strategy: parallel (simultaneous), sequential (ordered), adaptive (dynamic based on task)'),
177
+ priority: z.enum(['low', 'medium', 'high', 'critical']).optional().default('medium')
178
+ .describe('Task priority level: low, medium, high, or critical'),
179
+ maxAgents: z.number().positive().optional().describe('Maximum number of agents to use for this task (1-10)')
180
+ .refine((val) => !val || (val >= 1 && val <= 10), { message: 'maxAgents must be between 1 and 10' })
181
+ }),
182
+ execute: async ({ task, strategy, priority, maxAgents }) => {
183
+ try {
184
+ const maxStr = maxAgents ? ` --max-agents ${maxAgents}` : '';
185
+ const cmd = `npx claude-flow@alpha task orchestrate "${task}" --strategy ${strategy} --priority ${priority}${maxStr}`;
186
+ const result = execSync(cmd, { encoding: 'utf-8', maxBuffer: 10 * 1024 * 1024, timeout: 300000 });
187
+ return JSON.stringify({
188
+ success: true,
189
+ task,
190
+ strategy,
191
+ priority,
192
+ maxAgents: maxAgents || 'auto',
193
+ message: 'Task orchestrated successfully',
194
+ details: result.trim(),
195
+ timestamp: new Date().toISOString()
196
+ }, null, 2);
197
+ }
198
+ catch (error) {
199
+ throw new Error(`Failed to orchestrate task: ${error.message}`);
200
+ }
201
+ }
202
+ });
203
+ // Tool 7: Agent Execute
204
+ server.addTool({
205
+ name: 'agent_execute',
206
+ description: 'Execute a specific agent with a task (equivalent to --agent CLI command)',
207
+ parameters: z.object({
208
+ agent: z.string().describe('Agent name to execute'),
209
+ task: z.string().describe('Task description'),
210
+ stream: z.boolean().optional().default(false).describe('Enable streaming output')
211
+ }),
212
+ execute: async ({ agent, task, stream }) => {
213
+ try {
214
+ const streamFlag = stream ? '--stream' : '';
215
+ const cmd = `npx agentic-flow --agent "${agent}" --task "${task}" ${streamFlag}`.trim();
216
+ const result = execSync(cmd, { encoding: 'utf-8', maxBuffer: 10 * 1024 * 1024, timeout: 300000 });
217
+ return JSON.stringify({
218
+ success: true,
219
+ agent,
220
+ task: task.substring(0, 100),
221
+ output: result,
222
+ timestamp: new Date().toISOString()
223
+ }, null, 2);
224
+ }
225
+ catch (error) {
226
+ throw new Error(`Failed to execute agent: ${error.message}`);
227
+ }
228
+ }
229
+ });
230
+ // Tool 8: Agent Parallel
231
+ server.addTool({
232
+ name: 'agent_parallel',
233
+ description: 'Run parallel mode with 3 agents (research, code review, data analysis)',
234
+ parameters: z.object({
235
+ topic: z.string().optional().describe('Research topic'),
236
+ diff: z.string().optional().describe('Code diff for review'),
237
+ dataset: z.string().optional().describe('Dataset hint'),
238
+ streaming: z.boolean().optional().default(false).describe('Enable streaming')
239
+ }),
240
+ execute: async ({ topic, diff, dataset, streaming }) => {
241
+ try {
242
+ const env = {
243
+ ...process.env,
244
+ ...(topic && { TOPIC: topic }),
245
+ ...(diff && { DIFF: diff }),
246
+ ...(dataset && { DATASET: dataset }),
247
+ ...(streaming && { ENABLE_STREAMING: 'true' })
248
+ };
249
+ const result = execSync('npx agentic-flow', { encoding: 'utf-8', maxBuffer: 10 * 1024 * 1024, timeout: 300000, env });
250
+ return JSON.stringify({
251
+ success: true,
252
+ mode: 'parallel',
253
+ agents: ['research', 'code_review', 'data'],
254
+ output: result,
255
+ timestamp: new Date().toISOString()
256
+ }, null, 2);
257
+ }
258
+ catch (error) {
259
+ throw new Error(`Failed to run parallel mode: ${error.message}`);
260
+ }
261
+ }
262
+ });
263
+ // Tool 9: Agent List
264
+ server.addTool({
265
+ name: 'agent_list',
266
+ description: 'List all available agents',
267
+ parameters: z.object({
268
+ format: z.enum(['summary', 'detailed', 'json']).optional().default('summary')
269
+ }),
270
+ execute: async ({ format }) => {
271
+ try {
272
+ const result = execSync('npx agentic-flow --list', { encoding: 'utf-8', maxBuffer: 5 * 1024 * 1024, timeout: 30000 });
273
+ if (format === 'detailed') {
274
+ return result;
275
+ }
276
+ const agents = [];
277
+ const lines = result.split('\n');
278
+ let currentCategory = '';
279
+ for (const line of lines) {
280
+ if (line.includes(':') && line.trim().endsWith(':')) {
281
+ currentCategory = line.replace(':', '').trim();
282
+ }
283
+ else if (line.trim().startsWith('•') || /^\s{2,}\w/.test(line)) {
284
+ const match = line.match(/^\s*[•\s]*(\S+)\s+(.+)$/);
285
+ if (match) {
286
+ agents.push({ name: match[1], description: match[2].trim(), category: currentCategory });
287
+ }
288
+ }
289
+ }
290
+ return JSON.stringify({
291
+ success: true,
292
+ count: agents.length,
293
+ agents,
294
+ timestamp: new Date().toISOString()
295
+ }, null, 2);
296
+ }
297
+ catch (error) {
298
+ throw new Error(`Failed to list agents: ${error.message}`);
299
+ }
300
+ }
301
+ });
302
+ // Tool 10: Add Custom Agent
303
+ server.addTool({
304
+ name: 'agent_add',
305
+ description: 'Add a new custom agent defined in markdown',
306
+ parameters: z.object({
307
+ name: z.string().describe('Agent name (kebab-case)'),
308
+ description: z.string().describe('Agent description'),
309
+ systemPrompt: z.string().describe('System prompt'),
310
+ category: z.string().optional().default('custom').describe('Category'),
311
+ capabilities: z.array(z.string()).optional().describe('Capabilities')
312
+ }),
313
+ execute: async ({ name, description, systemPrompt, category, capabilities }) => {
314
+ try {
315
+ const { writeFileSync, existsSync, mkdirSync } = await import('fs');
316
+ const { join } = await import('path');
317
+ const agentsDir = join(process.cwd(), '.claude', 'agents', category || 'custom');
318
+ if (!existsSync(agentsDir))
319
+ mkdirSync(agentsDir, { recursive: true });
320
+ const markdown = `# ${name.split('-').map(w => w.charAt(0).toUpperCase() + w.slice(1)).join(' ')}
321
+
322
+ ## Description
323
+ ${description}
324
+
325
+ ## System Prompt
326
+ ${systemPrompt}
327
+
328
+ ${capabilities && capabilities.length > 0 ? `## Capabilities\n${capabilities.map(c => `- ${c}`).join('\n')}\n` : ''}
329
+
330
+ ## Usage
331
+ \`\`\`bash
332
+ npx agentic-flow --agent ${name} --task "Your task"
333
+ \`\`\`
334
+
335
+ ---
336
+ *Generated: ${new Date().toISOString()}*
337
+ `;
338
+ const filePath = join(agentsDir, `${name}.md`);
339
+ if (existsSync(filePath))
340
+ throw new Error(`Agent '${name}' already exists`);
341
+ writeFileSync(filePath, markdown, 'utf8');
342
+ return JSON.stringify({
343
+ success: true,
344
+ agent: name,
345
+ category: category || 'custom',
346
+ filePath,
347
+ message: `Agent '${name}' created successfully`,
348
+ timestamp: new Date().toISOString()
349
+ }, null, 2);
350
+ }
351
+ catch (error) {
352
+ throw new Error(`Failed to add agent: ${error.message}`);
353
+ }
354
+ }
355
+ });
356
+ // Tool 11: Add Custom Command
357
+ server.addTool({
358
+ name: 'command_add',
359
+ description: 'Add a new custom command defined in markdown',
360
+ parameters: z.object({
361
+ name: z.string().describe('Command name (kebab-case)'),
362
+ description: z.string().describe('Command description'),
363
+ usage: z.string().describe('Usage example'),
364
+ parameters: z.array(z.object({
365
+ name: z.string(),
366
+ type: z.string(),
367
+ required: z.boolean(),
368
+ description: z.string()
369
+ })).optional().describe('Parameters'),
370
+ examples: z.array(z.string()).optional().describe('Examples')
371
+ }),
372
+ execute: async ({ name, description, usage, parameters, examples }) => {
373
+ try {
374
+ const { writeFileSync, existsSync, mkdirSync } = await import('fs');
375
+ const { join } = await import('path');
376
+ const commandsDir = join(process.cwd(), '.claude', 'commands');
377
+ if (!existsSync(commandsDir))
378
+ mkdirSync(commandsDir, { recursive: true });
379
+ const markdown = `# ${name.split('-').map(w => w.charAt(0).toUpperCase() + w.slice(1)).join(' ')} Command
380
+
381
+ ## Description
382
+ ${description}
383
+
384
+ ## Usage
385
+ \`\`\`bash
386
+ ${usage}
387
+ \`\`\`
388
+
389
+ ${parameters && parameters.length > 0 ? `## Parameters\n| Name | Type | Required | Description |\n|------|------|----------|-------------|\n${parameters.map(p => `| \`${p.name}\` | ${p.type} | ${p.required ? 'Yes' : 'No'} | ${p.description} |`).join('\n')}\n` : ''}
390
+
391
+ ${examples && examples.length > 0 ? `## Examples\n\n${examples.map((ex, i) => `### Example ${i + 1}\n\`\`\`bash\n${ex}\n\`\`\`\n`).join('\n')}` : ''}
392
+
393
+ ---
394
+ *Generated: ${new Date().toISOString()}*
395
+ `;
396
+ const filePath = join(commandsDir, `${name}.md`);
397
+ if (existsSync(filePath))
398
+ throw new Error(`Command '${name}' already exists`);
399
+ writeFileSync(filePath, markdown, 'utf8');
400
+ return JSON.stringify({
401
+ success: true,
402
+ command: name,
403
+ filePath,
404
+ message: `Command '${name}' created successfully`,
405
+ timestamp: new Date().toISOString()
406
+ }, null, 2);
407
+ }
408
+ catch (error) {
409
+ throw new Error(`Failed to add command: ${error.message}`);
410
+ }
411
+ }
412
+ });
413
+ console.error('✅ Registered 11 tools successfully');
414
+ console.error('🔌 Starting stdio transport...');
415
+ // Start with stdio transport
416
+ server.start({ transportType: 'stdio' }).then(() => {
417
+ console.error('✅ FastMCP Full Server running on stdio');
418
+ }).catch((error) => {
419
+ console.error('❌ Failed to start server:', error);
420
+ process.exit(1);
421
+ });
@@ -0,0 +1,107 @@
1
+ import { z } from 'zod';
2
+ import { writeFileSync, existsSync, mkdirSync } from 'fs';
3
+ import { join } from 'path';
4
+ const addAgentSchema = z.object({
5
+ name: z.string().describe('Agent name (kebab-case, e.g., custom-researcher)'),
6
+ description: z.string().describe('Agent description'),
7
+ systemPrompt: z.string().describe('System prompt/instructions for the agent'),
8
+ category: z.string().optional().default('custom').describe('Agent category'),
9
+ capabilities: z.array(z.string()).optional().describe('Agent capabilities/features'),
10
+ outputFormat: z.string().optional().describe('Expected output format')
11
+ });
12
+ export const addAgentTool = {
13
+ name: 'agent_add',
14
+ description: 'Add a new custom agent defined in markdown format',
15
+ parameters: addAgentSchema,
16
+ async execute({ name, description, systemPrompt, category, capabilities, outputFormat }, { onProgress }) {
17
+ try {
18
+ onProgress?.({ progress: 0.2, message: `Creating custom agent: ${name}` });
19
+ // Validate name format
20
+ if (!/^[a-z0-9-]+$/.test(name)) {
21
+ throw new Error('Agent name must be kebab-case (lowercase, numbers, hyphens only)');
22
+ }
23
+ // Create agents directory if it doesn't exist
24
+ const agentsDir = join(process.cwd(), '.claude', 'agents', category);
25
+ if (!existsSync(agentsDir)) {
26
+ mkdirSync(agentsDir, { recursive: true });
27
+ }
28
+ onProgress?.({ progress: 0.4, message: 'Generating agent markdown...' });
29
+ // Generate markdown content
30
+ const markdown = `# ${name.split('-').map(w => w.charAt(0).toUpperCase() + w.slice(1)).join(' ')}
31
+
32
+ ## Description
33
+ ${description}
34
+
35
+ ## System Prompt
36
+ ${systemPrompt}
37
+
38
+ ${capabilities && capabilities.length > 0 ? `## Capabilities
39
+ ${capabilities.map(c => `- ${c}`).join('\n')}
40
+ ` : ''}
41
+
42
+ ${outputFormat ? `## Output Format
43
+ ${outputFormat}
44
+ ` : ''}
45
+
46
+ ## Usage
47
+ \`\`\`bash
48
+ npx agentic-flow --agent ${name} --task "Your task here"
49
+ \`\`\`
50
+
51
+ ## MCP Tool Usage
52
+ \`\`\`json
53
+ {
54
+ "name": "agent_execute",
55
+ "arguments": {
56
+ "agent": "${name}",
57
+ "task": "Your task here",
58
+ "stream": false
59
+ }
60
+ }
61
+ \`\`\`
62
+
63
+ ---
64
+ *Generated: ${new Date().toISOString()}*
65
+ *Category: ${category}*
66
+ `;
67
+ const filePath = join(agentsDir, `${name}.md`);
68
+ // Check if agent already exists
69
+ if (existsSync(filePath)) {
70
+ throw new Error(`Agent '${name}' already exists at ${filePath}`);
71
+ }
72
+ onProgress?.({ progress: 0.7, message: 'Writing agent file...' });
73
+ // Write the markdown file
74
+ writeFileSync(filePath, markdown, 'utf8');
75
+ onProgress?.({ progress: 1.0, message: 'Agent created successfully' });
76
+ return {
77
+ content: [{
78
+ type: 'text',
79
+ text: JSON.stringify({
80
+ success: true,
81
+ agent: name,
82
+ category,
83
+ filePath,
84
+ description,
85
+ capabilities: capabilities || [],
86
+ message: `Agent '${name}' created successfully at ${filePath}`,
87
+ timestamp: new Date().toISOString()
88
+ }, null, 2)
89
+ }]
90
+ };
91
+ }
92
+ catch (error) {
93
+ return {
94
+ content: [{
95
+ type: 'text',
96
+ text: JSON.stringify({
97
+ success: false,
98
+ agent: name,
99
+ error: error.message,
100
+ timestamp: new Date().toISOString()
101
+ }, null, 2)
102
+ }],
103
+ isError: true
104
+ };
105
+ }
106
+ }
107
+ };
@@ -0,0 +1,117 @@
1
+ import { z } from 'zod';
2
+ import { writeFileSync, existsSync, mkdirSync } from 'fs';
3
+ import { join } from 'path';
4
+ const addCommandSchema = z.object({
5
+ name: z.string().describe('Command name (kebab-case, e.g., custom-deploy)'),
6
+ description: z.string().describe('Command description'),
7
+ usage: z.string().describe('Command usage example'),
8
+ parameters: z.array(z.object({
9
+ name: z.string(),
10
+ type: z.string(),
11
+ required: z.boolean(),
12
+ description: z.string()
13
+ })).optional().describe('Command parameters'),
14
+ examples: z.array(z.string()).optional().describe('Usage examples'),
15
+ notes: z.string().optional().describe('Additional notes or warnings')
16
+ });
17
+ export const addCommandTool = {
18
+ name: 'command_add',
19
+ description: 'Add a new custom command defined in markdown format',
20
+ parameters: addCommandSchema,
21
+ async execute({ name, description, usage, parameters, examples, notes }, { onProgress }) {
22
+ try {
23
+ onProgress?.({ progress: 0.2, message: `Creating custom command: ${name}` });
24
+ // Validate name format
25
+ if (!/^[a-z0-9-]+$/.test(name)) {
26
+ throw new Error('Command name must be kebab-case (lowercase, numbers, hyphens only)');
27
+ }
28
+ // Create commands directory if it doesn't exist
29
+ const commandsDir = join(process.cwd(), '.claude', 'commands');
30
+ if (!existsSync(commandsDir)) {
31
+ mkdirSync(commandsDir, { recursive: true });
32
+ }
33
+ onProgress?.({ progress: 0.4, message: 'Generating command markdown...' });
34
+ // Generate markdown content
35
+ const markdown = `# ${name.split('-').map(w => w.charAt(0).toUpperCase() + w.slice(1)).join(' ')} Command
36
+
37
+ ## Description
38
+ ${description}
39
+
40
+ ## Usage
41
+ \`\`\`bash
42
+ ${usage}
43
+ \`\`\`
44
+
45
+ ${parameters && parameters.length > 0 ? `## Parameters
46
+ | Name | Type | Required | Description |
47
+ |------|------|----------|-------------|
48
+ ${parameters.map(p => `| \`${p.name}\` | ${p.type} | ${p.required ? 'Yes' : 'No'} | ${p.description} |`).join('\n')}
49
+ ` : ''}
50
+
51
+ ${examples && examples.length > 0 ? `## Examples
52
+
53
+ ${examples.map((ex, i) => `### Example ${i + 1}
54
+ \`\`\`bash
55
+ ${ex}
56
+ \`\`\`
57
+ `).join('\n')}` : ''}
58
+
59
+ ${notes ? `## Notes
60
+ ${notes}
61
+ ` : ''}
62
+
63
+ ## MCP Tool Usage
64
+ \`\`\`json
65
+ {
66
+ "name": "command_execute",
67
+ "arguments": {
68
+ "command": "${name}",
69
+ "args": []
70
+ }
71
+ }
72
+ \`\`\`
73
+
74
+ ---
75
+ *Generated: ${new Date().toISOString()}*
76
+ `;
77
+ const filePath = join(commandsDir, `${name}.md`);
78
+ // Check if command already exists
79
+ if (existsSync(filePath)) {
80
+ throw new Error(`Command '${name}' already exists at ${filePath}`);
81
+ }
82
+ onProgress?.({ progress: 0.7, message: 'Writing command file...' });
83
+ // Write the markdown file
84
+ writeFileSync(filePath, markdown, 'utf8');
85
+ onProgress?.({ progress: 1.0, message: 'Command created successfully' });
86
+ return {
87
+ content: [{
88
+ type: 'text',
89
+ text: JSON.stringify({
90
+ success: true,
91
+ command: name,
92
+ filePath,
93
+ description,
94
+ parameters: parameters || [],
95
+ examples: examples || [],
96
+ message: `Command '${name}' created successfully at ${filePath}`,
97
+ timestamp: new Date().toISOString()
98
+ }, null, 2)
99
+ }]
100
+ };
101
+ }
102
+ catch (error) {
103
+ return {
104
+ content: [{
105
+ type: 'text',
106
+ text: JSON.stringify({
107
+ success: false,
108
+ command: name,
109
+ error: error.message,
110
+ timestamp: new Date().toISOString()
111
+ }, null, 2)
112
+ }],
113
+ isError: true
114
+ };
115
+ }
116
+ }
117
+ };