claude-flow-novice 2.0.3 → 2.0.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/src/cli/commands/guidance.js +487 -668
- package/dist/src/cli/commands/index-validate.js +18 -29
- package/dist/src/cli/commands/mcp-troubleshoot.js +230 -282
- package/dist/src/cli/commands/neural-goal-init.js +92 -125
- package/dist/src/cli/commands/swarm-exec.js +317 -393
- package/dist/src/cli/commands/swarm.js +1 -1
- package/dist/src/cli/commands/validate-framework.js +983 -1100
- package/dist/src/cli/commands/validate.js +144 -223
- package/dist/src/cli/simple-commands/__tests__/agent.test.js +265 -277
- package/dist/src/cli/simple-commands/__tests__/memory.test.js +6 -7
- package/dist/src/cli/simple-commands/__tests__/swarm.test.js +373 -356
- package/dist/src/cli/simple-commands/__tests__/task.test.js +6 -7
- package/dist/src/cli/simple-commands/agent.js +157 -193
- package/dist/src/cli/simple-commands/analysis.js +336 -446
- package/dist/src/cli/simple-commands/automation-executor.js +1095 -1339
- package/dist/src/cli/simple-commands/automation.js +481 -469
- package/dist/src/cli/simple-commands/batch-manager.js +261 -313
- package/dist/src/cli/simple-commands/claude-telemetry.js +241 -267
- package/dist/src/cli/simple-commands/claude-track.js +68 -90
- package/dist/src/cli/simple-commands/concurrent-display.js +266 -320
- package/dist/src/cli/simple-commands/config.js +245 -290
- package/dist/src/cli/simple-commands/coordination.js +182 -234
- package/dist/src/cli/simple-commands/enhanced-ui-views.js +812 -615
- package/dist/src/cli/simple-commands/enhanced-webui-complete.js +922 -981
- package/dist/src/cli/simple-commands/fix-hook-variables.js +274 -294
- package/dist/src/cli/simple-commands/github/gh-coordinator.js +378 -457
- package/dist/src/cli/simple-commands/github/github-api.js +535 -574
- package/dist/src/cli/simple-commands/github/init.js +276 -303
- package/dist/src/cli/simple-commands/github.js +222 -247
- package/dist/src/cli/simple-commands/goal.js +51 -63
- package/dist/src/cli/simple-commands/hive-mind/auto-save-middleware.js +208 -278
- package/dist/src/cli/simple-commands/hive-mind/communication.js +601 -696
- package/dist/src/cli/simple-commands/hive-mind/core.js +907 -979
- package/dist/src/cli/simple-commands/hive-mind/db-optimizer.js +406 -655
- package/dist/src/cli/simple-commands/hive-mind/mcp-wrapper.js +1125 -1245
- package/dist/src/cli/simple-commands/hive-mind/memory.js +854 -1090
- package/dist/src/cli/simple-commands/hive-mind/performance-optimizer.js +459 -574
- package/dist/src/cli/simple-commands/hive-mind/performance-test.js +263 -347
- package/dist/src/cli/simple-commands/hive-mind/queen.js +727 -768
- package/dist/src/cli/simple-commands/hive-mind/session-manager.js +745 -1049
- package/dist/src/cli/simple-commands/hive-mind-optimize.js +227 -283
- package/dist/src/cli/simple-commands/hive-mind-wizard.js +174 -217
- package/dist/src/cli/simple-commands/hive-mind.js +1842 -2283
- package/dist/src/cli/simple-commands/hive.js +90 -79
- package/dist/src/cli/simple-commands/hook-safety.js +431 -521
- package/dist/src/cli/simple-commands/hooks/session-start-soul.js +203 -254
- package/dist/src/cli/simple-commands/hooks.js +1064 -1204
- package/dist/src/cli/simple-commands/init/agent-copier.js +294 -319
- package/dist/src/cli/simple-commands/init/batch-init.js +496 -562
- package/dist/src/cli/simple-commands/init/claude-commands/claude-flow-commands.js +13 -19
- package/dist/src/cli/simple-commands/init/claude-commands/optimized-claude-flow-commands.js +13 -19
- package/dist/src/cli/simple-commands/init/claude-commands/optimized-slash-commands.js +61 -88
- package/dist/src/cli/simple-commands/init/claude-commands/optimized-sparc-commands.js +125 -150
- package/dist/src/cli/simple-commands/init/claude-commands/slash-commands.js +42 -49
- package/dist/src/cli/simple-commands/init/claude-commands/sparc-commands.js +43 -61
- package/dist/src/cli/simple-commands/init/copy-revised-templates.js +141 -147
- package/dist/src/cli/simple-commands/init/executable-wrapper.js +31 -44
- package/dist/src/cli/simple-commands/init/gitignore-updater.js +64 -90
- package/dist/src/cli/simple-commands/init/help.js +104 -107
- package/dist/src/cli/simple-commands/init/hive-mind-init.js +509 -528
- package/dist/src/cli/simple-commands/init/index.js +1510 -1759
- package/dist/src/cli/simple-commands/init/performance-monitor.js +234 -317
- package/dist/src/cli/simple-commands/init/rollback/backup-manager.js +441 -504
- package/dist/src/cli/simple-commands/init/rollback/index.js +289 -364
- package/dist/src/cli/simple-commands/init/rollback/recovery-manager.js +652 -728
- package/dist/src/cli/simple-commands/init/rollback/rollback-executor.js +416 -481
- package/dist/src/cli/simple-commands/init/rollback/state-tracker.js +369 -448
- package/dist/src/cli/simple-commands/init/sparc/roo-readme.js +1 -2
- package/dist/src/cli/simple-commands/init/sparc/roomodes-config.js +122 -99
- package/dist/src/cli/simple-commands/init/sparc/workflows.js +32 -37
- package/dist/src/cli/simple-commands/init/sparc-structure.js +55 -62
- package/dist/src/cli/simple-commands/init/template-copier.js +421 -533
- package/dist/src/cli/simple-commands/init/templates/coordination-md.js +3 -6
- package/dist/src/cli/simple-commands/init/templates/enhanced-templates.js +344 -318
- package/dist/src/cli/simple-commands/init/templates/github-safe-enhanced.js +173 -218
- package/dist/src/cli/simple-commands/init/templates/github-safe.js +65 -75
- package/dist/src/cli/simple-commands/init/templates/memory-bank-md.js +3 -6
- package/dist/src/cli/simple-commands/init/templates/readme-files.js +2 -4
- package/dist/src/cli/simple-commands/init/templates/safe-hook-patterns.js +187 -230
- package/dist/src/cli/simple-commands/init/templates/sparc-modes.js +53 -80
- package/dist/src/cli/simple-commands/init/templates/verification-claude-md.js +101 -85
- package/dist/src/cli/simple-commands/init/validation/config-validator.js +283 -330
- package/dist/src/cli/simple-commands/init/validation/health-checker.js +495 -561
- package/dist/src/cli/simple-commands/init/validation/index.js +302 -358
- package/dist/src/cli/simple-commands/init/validation/mode-validator.js +308 -359
- package/dist/src/cli/simple-commands/init/validation/post-init-validator.js +389 -366
- package/dist/src/cli/simple-commands/init/validation/pre-init-validator.js +270 -268
- package/dist/src/cli/simple-commands/init/validation/test-runner.js +427 -447
- package/dist/src/cli/simple-commands/init.js +1 -2
- package/dist/src/cli/simple-commands/mcp-health.js +131 -158
- package/dist/src/cli/simple-commands/mcp-integration-layer.js +533 -634
- package/dist/src/cli/simple-commands/mcp.js +345 -400
- package/dist/src/cli/simple-commands/memory-consolidation.js +426 -537
- package/dist/src/cli/simple-commands/memory.js +247 -311
- package/dist/src/cli/simple-commands/migrate-hooks.js +39 -46
- package/dist/src/cli/simple-commands/monitor.js +294 -363
- package/dist/src/cli/simple-commands/neural.js +51 -65
- package/dist/src/cli/simple-commands/pair-autofix-only.js +538 -662
- package/dist/src/cli/simple-commands/pair-basic.js +528 -656
- package/dist/src/cli/simple-commands/pair-old.js +430 -543
- package/dist/src/cli/simple-commands/pair-working.js +615 -751
- package/dist/src/cli/simple-commands/pair.js +615 -751
- package/dist/src/cli/simple-commands/performance-hooks.js +83 -111
- package/dist/src/cli/simple-commands/performance-metrics.js +348 -433
- package/dist/src/cli/simple-commands/process-ui-enhanced.js +708 -787
- package/dist/src/cli/simple-commands/process-ui.js +230 -254
- package/dist/src/cli/simple-commands/realtime-update-system.js +525 -611
- package/dist/src/cli/simple-commands/sparc/architecture.js +1704 -1530
- package/dist/src/cli/simple-commands/sparc/commands.js +438 -516
- package/dist/src/cli/simple-commands/sparc/completion.js +1224 -1481
- package/dist/src/cli/simple-commands/sparc/coordinator.js +913 -978
- package/dist/src/cli/simple-commands/sparc/index.js +241 -298
- package/dist/src/cli/simple-commands/sparc/phase-base.js +314 -390
- package/dist/src/cli/simple-commands/sparc/pseudocode.js +965 -869
- package/dist/src/cli/simple-commands/sparc/refinement.js +980 -1273
- package/dist/src/cli/simple-commands/sparc/specification.js +559 -645
- package/dist/src/cli/simple-commands/sparc-modes/architect.js +1 -1
- package/dist/src/cli/simple-commands/sparc-modes/ask.js +1 -1
- package/dist/src/cli/simple-commands/sparc-modes/code.js +1 -1
- package/dist/src/cli/simple-commands/sparc-modes/debug.js +1 -1
- package/dist/src/cli/simple-commands/sparc-modes/devops.js +1 -1
- package/dist/src/cli/simple-commands/sparc-modes/docs-writer.js +1 -1
- package/dist/src/cli/simple-commands/sparc-modes/generic.js +1 -1
- package/dist/src/cli/simple-commands/sparc-modes/index.js +47 -55
- package/dist/src/cli/simple-commands/sparc-modes/integration.js +1 -1
- package/dist/src/cli/simple-commands/sparc-modes/mcp.js +1 -1
- package/dist/src/cli/simple-commands/sparc-modes/monitoring.js +1 -1
- package/dist/src/cli/simple-commands/sparc-modes/optimization.js +1 -1
- package/dist/src/cli/simple-commands/sparc-modes/security-review.js +1 -1
- package/dist/src/cli/simple-commands/sparc-modes/sparc-orchestrator.js +1 -1
- package/dist/src/cli/simple-commands/sparc-modes/spec-pseudocode.js +1 -1
- package/dist/src/cli/simple-commands/sparc-modes/supabase-admin.js +1 -1
- package/dist/src/cli/simple-commands/sparc-modes/swarm.js +101 -87
- package/dist/src/cli/simple-commands/sparc-modes/tdd.js +1 -1
- package/dist/src/cli/simple-commands/sparc-modes/tutorial.js +1 -1
- package/dist/src/cli/simple-commands/sparc.js +465 -493
- package/dist/src/cli/simple-commands/start-ui.js +108 -132
- package/dist/src/cli/simple-commands/start-wrapper.js +240 -268
- package/dist/src/cli/simple-commands/start.js +1 -1
- package/dist/src/cli/simple-commands/status.js +254 -275
- package/dist/src/cli/simple-commands/stream-chain-clean.js +128 -171
- package/dist/src/cli/simple-commands/stream-chain-fixed.js +61 -82
- package/dist/src/cli/simple-commands/stream-chain-real.js +267 -331
- package/dist/src/cli/simple-commands/stream-chain-working.js +211 -263
- package/dist/src/cli/simple-commands/stream-chain.js +260 -318
- package/dist/src/cli/simple-commands/stream-processor.js +290 -315
- package/dist/src/cli/simple-commands/swarm-executor.js +189 -222
- package/dist/src/cli/simple-commands/swarm-metrics-integration.js +208 -300
- package/dist/src/cli/simple-commands/swarm-ui.js +623 -703
- package/dist/src/cli/simple-commands/swarm-webui-integration.js +258 -286
- package/dist/src/cli/simple-commands/swarm.js +887 -1082
- package/dist/src/cli/simple-commands/task.js +161 -206
- package/dist/src/cli/simple-commands/timestamp-fix.js +59 -89
- package/dist/src/cli/simple-commands/token-tracker.js +258 -316
- package/dist/src/cli/simple-commands/tool-execution-framework.js +433 -519
- package/dist/src/cli/simple-commands/train-and-stream.js +275 -331
- package/dist/src/cli/simple-commands/training-pipeline.js +619 -725
- package/dist/src/cli/simple-commands/training.js +170 -227
- package/dist/src/cli/simple-commands/verification-hooks.js +261 -284
- package/dist/src/cli/simple-commands/verification-integration.js +389 -417
- package/dist/src/cli/simple-commands/verification-training-integration.js +486 -606
- package/dist/src/cli/simple-commands/verification.js +493 -513
- package/dist/src/cli/simple-commands/web-server.js +766 -836
- package/dist/src/cli/simple-commands/webui-validator.js +106 -124
- package/dist/src/coordination/event-bus/demo-wasm-integration.js +212 -251
- package/dist/src/coordination/event-bus/qe-event-bus.js +608 -748
- package/dist/src/coordination/event-bus/qe-event-bus.test.js +379 -454
- package/dist/src/coordination/iteration-tracker.js +363 -454
- package/dist/src/enterprise/analytics-manager.js +1135 -0
- package/dist/src/enterprise/audit-manager.js +1115 -0
- package/dist/src/enterprise/cloud-manager.js +891 -0
- package/dist/src/enterprise/deployment-manager.js +966 -0
- package/dist/src/enterprise/index.js +6 -0
- package/dist/src/enterprise/project-manager.js +584 -0
- package/dist/src/enterprise/security-manager.js +991 -0
- package/dist/src/index.js +1 -1
- package/dist/src/mcp/DEPRECATED.js +46 -60
- package/dist/src/mcp/fixes/mcp-error-fixes.js +115 -134
- package/dist/src/mcp/implementations/agent-tracker.js +114 -128
- package/dist/src/mcp/implementations/daa-tools.js +292 -350
- package/dist/src/mcp/implementations/workflow-tools.js +329 -361
- package/dist/src/mcp/mcp-config-manager.js +1183 -1331
- package/dist/src/mcp/mcp-server-novice-simplified.js +11 -17
- package/dist/src/mcp/mcp-server-novice.js +11 -17
- package/dist/src/mcp/mcp-server-sdk.js +11 -17
- package/dist/src/mcp/mcp-server.js +1620 -1484
- package/dist/src/mcp/ruv-swarm-wrapper.js +209 -239
- package/dist/src/memory/advanced-serializer.js +609 -589
- package/dist/src/memory/enhanced-examples.js +220 -305
- package/dist/src/memory/enhanced-memory.js +295 -336
- package/dist/src/memory/enhanced-session-serializer.js +408 -492
- package/dist/src/memory/fallback-memory-system.js +900 -1021
- package/dist/src/memory/fallback-store.js +93 -131
- package/dist/src/memory/high-performance-serialization.js +592 -730
- package/dist/src/memory/in-memory-store.js +161 -213
- package/dist/src/memory/index.js +123 -157
- package/dist/src/memory/lock-free-structures.js +578 -764
- package/dist/src/memory/memory-mapped-persistence.js +585 -766
- package/dist/src/memory/memory-pressure-manager.js +569 -707
- package/dist/src/memory/migration.js +358 -445
- package/dist/src/memory/shared-memory.js +641 -768
- package/dist/src/memory/sqlite-store.js +245 -325
- package/dist/src/memory/sqlite-wrapper.js +122 -151
- package/dist/src/memory/swarm-memory.js +470 -603
- package/dist/src/memory/test-example.js +126 -134
- package/dist/src/memory/ultra-fast-memory-store.js +622 -821
- package/dist/src/memory/unified-memory-manager.js +356 -437
- package/dist/src/migration/index.js +92 -0
- package/dist/src/migration/logger.js +121 -0
- package/dist/src/migration/migration-analyzer.js +268 -0
- package/dist/src/migration/migration-runner.js +522 -0
- package/dist/src/migration/migration-validator.js +285 -0
- package/dist/src/migration/progress-reporter.js +150 -0
- package/dist/src/migration/rollback-manager.js +321 -0
- package/dist/src/migration/tests/migration-system.test.js +7 -0
- package/dist/src/migration/types.js +3 -0
- package/dist/src/swarm/CodeRefactoringSwarm.js +777 -952
- package/dist/src/swarm/__tests__/integration.test.js +227 -0
- package/dist/src/swarm/__tests__/prompt-copier.test.js +344 -0
- package/dist/src/swarm/advanced-orchestrator.js +1095 -0
- package/dist/src/swarm/claude-code-interface.js +961 -0
- package/dist/src/swarm/claude-flow-executor.js +229 -0
- package/dist/src/swarm/consensus-coordinator.js +475 -0
- package/dist/src/swarm/coordinator.js +2993 -0
- package/dist/src/swarm/direct-executor.js +1180 -0
- package/dist/src/swarm/error-recovery/advanced-error-detection.js +691 -0
- package/dist/src/swarm/error-recovery/automated-recovery-workflows.js +998 -0
- package/dist/src/swarm/error-recovery/error-recovery-coordinator.js +1197 -0
- package/dist/src/swarm/error-recovery/recovery-monitoring.js +772 -0
- package/dist/src/swarm/error-recovery/resilience-architecture.js +714 -0
- package/dist/src/swarm/error-recovery/self-healing-mechanisms.js +1319 -0
- package/dist/src/swarm/error-recovery/test-error-recovery-effectiveness.js +808 -0
- package/dist/src/swarm/executor-v2.js +322 -0
- package/dist/src/swarm/executor.js +815 -0
- package/dist/src/swarm/hive-mind-integration.js +703 -0
- package/dist/src/swarm/index.js +41 -0
- package/dist/src/swarm/json-output-aggregator.js +267 -0
- package/dist/src/swarm/large-scale-coordinator.js +542 -0
- package/dist/src/swarm/mcp-integration-wrapper.js +628 -0
- package/dist/src/swarm/memory.js +1117 -0
- package/dist/src/swarm/optimizations/__tests__/optimization.test.js +348 -0
- package/dist/src/swarm/optimizations/async-file-manager.js +285 -0
- package/dist/src/swarm/optimizations/circular-buffer.js +162 -0
- package/dist/src/swarm/optimizations/connection-pool.js +244 -0
- package/dist/src/swarm/optimizations/index.js +28 -0
- package/dist/src/swarm/optimizations/optimized-executor.js +320 -0
- package/dist/src/swarm/optimizations/ttl-map.js +234 -0
- package/dist/src/swarm/prompt-cli.js +200 -0
- package/dist/src/swarm/prompt-copier-enhanced.js +202 -0
- package/dist/src/swarm/prompt-copier.js +381 -0
- package/dist/src/swarm/prompt-manager.js +295 -0
- package/dist/src/swarm/prompt-utils.js +310 -0
- package/dist/src/swarm/result-aggregator.js +718 -0
- package/dist/src/swarm/sparc-executor.js +1568 -0
- package/dist/src/swarm/strategies/auto.js +758 -0
- package/dist/src/swarm/strategies/base.js +128 -0
- package/dist/src/swarm/strategies/research.js +914 -0
- package/dist/src/swarm/strategies/strategy-metrics-patch.js +2 -0
- package/dist/src/swarm/types.js +52 -0
- package/dist/src/swarm/workers/copy-worker.js +56 -0
- package/dist/src/utils/__tests__/github-cli-safety-wrapper.test.js +332 -400
- package/dist/src/utils/github-cli-safe.js +56 -64
- package/dist/src/utils/github-cli-safety-wrapper.js +451 -546
- package/dist/src/utils/npx-isolated-cache.js +104 -119
- package/dist/src/utils/preference-manager.js +622 -652
- package/dist/src/utils/timezone-utils.js +86 -105
- package/dist/src/validators/epic-config-schema.js +214 -0
- package/dist/src/validators/index.js +10 -0
- package/dist/src/validators/swarm-init-validator.js +259 -0
- package/dist/src/validators/todowrite-batching-validator.js +215 -0
- package/dist/src/validators/todowrite-integration.js +187 -0
- package/package.json +2 -2
|
@@ -3,1552 +3,1688 @@
|
|
|
3
3
|
* ⚠️ DEPRECATED: MCP server has been removed in v2.0.0
|
|
4
4
|
* Please use: claude-flow-novice start
|
|
5
5
|
* See: MCP_DEPRECATION_NOTICE.md
|
|
6
|
-
*/
|
|
7
|
-
require('./DEPRECATED.js');
|
|
6
|
+
*/ require('./DEPRECATED.js');
|
|
8
7
|
process.exit(1);
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
* Claude-Flow MCP Server
|
|
12
|
-
* Implements the Model Context Protocol for Claude-Flow v2.0.0
|
|
13
|
-
* Compatible with ruv-swarm MCP interface
|
|
14
|
-
*/
|
|
15
|
-
|
|
16
|
-
import { promises as fs } from 'fs';
|
|
17
|
-
import path from 'path';
|
|
18
|
-
import { fileURLToPath } from 'url';
|
|
19
|
-
import { EnhancedMemory } from '../memory/enhanced-memory.js';
|
|
8
|
+
import path from "path";
|
|
9
|
+
import { fileURLToPath } from "url";
|
|
20
10
|
// Use the same memory system that npx commands use - singleton instance
|
|
21
|
-
import { memoryStore } from
|
|
22
|
-
|
|
11
|
+
import { memoryStore } from "../memory/fallback-store.js";
|
|
23
12
|
// Initialize agent tracker
|
|
24
|
-
await import(
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
13
|
+
await import("./implementations/agent-tracker.js").catch(()=>{
|
|
14
|
+
// If ES module import fails, try require
|
|
15
|
+
try {
|
|
16
|
+
require('./implementations/agent-tracker');
|
|
17
|
+
} catch (e) {
|
|
18
|
+
console.log('Agent tracker not loaded');
|
|
19
|
+
}
|
|
31
20
|
});
|
|
32
|
-
|
|
33
21
|
// Initialize DAA manager
|
|
34
|
-
await import(
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
22
|
+
await import("./implementations/daa-tools.js").catch(()=>{
|
|
23
|
+
// If ES module import fails, try require
|
|
24
|
+
try {
|
|
25
|
+
require('./implementations/daa-tools');
|
|
26
|
+
} catch (e) {
|
|
27
|
+
console.log('DAA manager not loaded');
|
|
28
|
+
}
|
|
41
29
|
});
|
|
42
|
-
|
|
43
30
|
// Initialize Workflow and Performance managers
|
|
44
|
-
await import(
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
31
|
+
await import("./implementations/workflow-tools.js").catch(()=>{
|
|
32
|
+
// If ES module import fails, try require
|
|
33
|
+
try {
|
|
34
|
+
require('./implementations/workflow-tools');
|
|
35
|
+
} catch (e) {
|
|
36
|
+
console.log('Workflow tools not loaded');
|
|
37
|
+
}
|
|
51
38
|
});
|
|
52
|
-
|
|
53
39
|
const __filename = fileURLToPath(import.meta.url);
|
|
54
40
|
const __dirname = path.dirname(__filename);
|
|
55
|
-
|
|
56
41
|
// Legacy agent type mapping for backward compatibility
|
|
57
42
|
const LEGACY_AGENT_MAPPING = {
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
43
|
+
analyst: 'code-analyzer',
|
|
44
|
+
coordinator: 'task-orchestrator',
|
|
45
|
+
optimizer: 'perf-analyzer',
|
|
46
|
+
documenter: 'api-docs',
|
|
47
|
+
monitor: 'performance-benchmarker',
|
|
48
|
+
specialist: 'system-architect',
|
|
49
|
+
architect: 'system-architect'
|
|
65
50
|
};
|
|
66
|
-
|
|
67
51
|
// Resolve legacy agent types to current equivalents
|
|
68
52
|
function resolveLegacyAgentType(legacyType) {
|
|
69
|
-
|
|
53
|
+
return LEGACY_AGENT_MAPPING[legacyType] || legacyType;
|
|
70
54
|
}
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
// Use the same memory system that already works
|
|
77
|
-
this.capabilities = {
|
|
78
|
-
tools: {
|
|
79
|
-
listChanged: true,
|
|
80
|
-
},
|
|
81
|
-
resources: {
|
|
82
|
-
subscribe: true,
|
|
83
|
-
listChanged: true,
|
|
84
|
-
},
|
|
85
|
-
};
|
|
86
|
-
this.sessionId = `session-cf-${Date.now()}-${Math.random().toString(36).substr(2, 4)}`;
|
|
87
|
-
this.tools = this.initializeTools();
|
|
88
|
-
this.resources = this.initializeResources();
|
|
89
|
-
|
|
90
|
-
// Initialize shared memory store (same as npx commands)
|
|
91
|
-
this.initializeMemory().catch((err) => {
|
|
92
|
-
console.error(
|
|
93
|
-
`[${new Date().toISOString()}] ERROR [claude-flow-mcp] Failed to initialize shared memory:`,
|
|
94
|
-
err,
|
|
95
|
-
);
|
|
96
|
-
});
|
|
97
|
-
|
|
98
|
-
// Database operations now use the same shared memory store as npx commands
|
|
99
|
-
}
|
|
100
|
-
|
|
101
|
-
async initializeMemory() {
|
|
102
|
-
await this.memoryStore.initialize();
|
|
103
|
-
console.error(
|
|
104
|
-
`[${new Date().toISOString()}] INFO [claude-flow-mcp] (${this.sessionId}) Shared memory store initialized (same as npx)`,
|
|
105
|
-
);
|
|
106
|
-
console.error(
|
|
107
|
-
`[${new Date().toISOString()}] INFO [claude-flow-mcp] (${this.sessionId}) Using ${this.memoryStore.isUsingFallback() ? 'in-memory' : 'SQLite'} storage`,
|
|
108
|
-
);
|
|
109
|
-
}
|
|
110
|
-
|
|
111
|
-
// Database operations now use the same memory store as working npx commands
|
|
112
|
-
|
|
113
|
-
initializeTools() {
|
|
114
|
-
return {
|
|
115
|
-
// Swarm Coordination Tools (12)
|
|
116
|
-
swarm_init: {
|
|
117
|
-
name: 'swarm_init',
|
|
118
|
-
description: 'Initialize swarm with topology and configuration',
|
|
119
|
-
inputSchema: {
|
|
120
|
-
type: 'object',
|
|
121
|
-
properties: {
|
|
122
|
-
topology: { type: 'string', enum: ['hierarchical', 'mesh', 'ring', 'star'] },
|
|
123
|
-
maxAgents: { type: 'number', default: 8 },
|
|
124
|
-
strategy: { type: 'string', default: 'auto' },
|
|
125
|
-
},
|
|
126
|
-
required: ['topology'],
|
|
127
|
-
},
|
|
128
|
-
},
|
|
129
|
-
agent_spawn: {
|
|
130
|
-
name: 'agent_spawn',
|
|
131
|
-
description: 'Create specialized AI agents',
|
|
132
|
-
inputSchema: {
|
|
133
|
-
type: 'object',
|
|
134
|
-
properties: {
|
|
135
|
-
type: {
|
|
136
|
-
type: 'string',
|
|
137
|
-
enum: [
|
|
138
|
-
// Legacy types (for backward compatibility)
|
|
139
|
-
'coordinator',
|
|
140
|
-
'analyst',
|
|
141
|
-
'optimizer',
|
|
142
|
-
'documenter',
|
|
143
|
-
'monitor',
|
|
144
|
-
'specialist',
|
|
145
|
-
'architect',
|
|
146
|
-
// Current types
|
|
147
|
-
'task-orchestrator',
|
|
148
|
-
'code-analyzer',
|
|
149
|
-
'perf-analyzer',
|
|
150
|
-
'api-docs',
|
|
151
|
-
'performance-benchmarker',
|
|
152
|
-
'system-architect',
|
|
153
|
-
// Core types
|
|
154
|
-
'researcher',
|
|
155
|
-
'coder',
|
|
156
|
-
'tester',
|
|
157
|
-
'reviewer',
|
|
158
|
-
],
|
|
159
|
-
},
|
|
160
|
-
name: { type: 'string' },
|
|
161
|
-
capabilities: { type: 'array' },
|
|
162
|
-
swarmId: { type: 'string' },
|
|
163
|
-
},
|
|
164
|
-
required: ['type'],
|
|
165
|
-
},
|
|
166
|
-
},
|
|
167
|
-
task_orchestrate: {
|
|
168
|
-
name: 'task_orchestrate',
|
|
169
|
-
description: 'Orchestrate complex task workflows',
|
|
170
|
-
inputSchema: {
|
|
171
|
-
type: 'object',
|
|
172
|
-
properties: {
|
|
173
|
-
task: { type: 'string' },
|
|
174
|
-
strategy: { type: 'string', enum: ['parallel', 'sequential', 'adaptive', 'balanced'] },
|
|
175
|
-
priority: { type: 'string', enum: ['low', 'medium', 'high', 'critical'] },
|
|
176
|
-
dependencies: { type: 'array' },
|
|
177
|
-
},
|
|
178
|
-
required: ['task'],
|
|
179
|
-
},
|
|
180
|
-
},
|
|
181
|
-
swarm_status: {
|
|
182
|
-
name: 'swarm_status',
|
|
183
|
-
description: 'Monitor swarm health and performance',
|
|
184
|
-
inputSchema: {
|
|
185
|
-
type: 'object',
|
|
186
|
-
properties: {
|
|
187
|
-
swarmId: { type: 'string' },
|
|
188
|
-
},
|
|
189
|
-
},
|
|
190
|
-
},
|
|
191
|
-
|
|
192
|
-
// Neural Network Tools - DEPRECATED: Advanced neural features hidden from novice users
|
|
193
|
-
// Retained: neural_status, neural_train, neural_patterns (basic functionality)
|
|
194
|
-
// Use memory_usage for pattern storage instead of neural-specific tools
|
|
195
|
-
|
|
196
|
-
// Memory & Persistence Tools (12)
|
|
197
|
-
memory_usage: {
|
|
198
|
-
name: 'memory_usage',
|
|
199
|
-
description: 'Store/retrieve persistent memory with TTL and namespacing',
|
|
200
|
-
inputSchema: {
|
|
201
|
-
type: 'object',
|
|
202
|
-
properties: {
|
|
203
|
-
action: { type: 'string', enum: ['store', 'retrieve', 'list', 'delete', 'search'] },
|
|
204
|
-
key: { type: 'string' },
|
|
205
|
-
value: { type: 'string' },
|
|
206
|
-
namespace: { type: 'string', default: 'default' },
|
|
207
|
-
ttl: { type: 'number' },
|
|
208
|
-
},
|
|
209
|
-
required: ['action'],
|
|
210
|
-
},
|
|
211
|
-
},
|
|
212
|
-
memory_search: {
|
|
213
|
-
name: 'memory_search',
|
|
214
|
-
description: 'Search memory with patterns',
|
|
215
|
-
inputSchema: {
|
|
216
|
-
type: 'object',
|
|
217
|
-
properties: {
|
|
218
|
-
pattern: { type: 'string' },
|
|
219
|
-
namespace: { type: 'string' },
|
|
220
|
-
limit: { type: 'number', default: 10 },
|
|
221
|
-
},
|
|
222
|
-
required: ['pattern'],
|
|
223
|
-
},
|
|
224
|
-
},
|
|
225
|
-
|
|
226
|
-
// Analysis & Monitoring Tools (13)
|
|
227
|
-
performance_report: {
|
|
228
|
-
name: 'performance_report',
|
|
229
|
-
description: 'Generate performance reports with real-time metrics',
|
|
230
|
-
inputSchema: {
|
|
231
|
-
type: 'object',
|
|
232
|
-
properties: {
|
|
233
|
-
timeframe: { type: 'string', enum: ['24h', '7d', '30d'], default: '24h' },
|
|
234
|
-
format: { type: 'string', enum: ['summary', 'detailed', 'json'], default: 'summary' },
|
|
235
|
-
},
|
|
236
|
-
},
|
|
237
|
-
},
|
|
238
|
-
bottleneck_analyze: {
|
|
239
|
-
name: 'bottleneck_analyze',
|
|
240
|
-
description: 'Identify performance bottlenecks',
|
|
241
|
-
inputSchema: {
|
|
242
|
-
type: 'object',
|
|
243
|
-
properties: {
|
|
244
|
-
component: { type: 'string' },
|
|
245
|
-
metrics: { type: 'array' },
|
|
246
|
-
},
|
|
247
|
-
},
|
|
248
|
-
},
|
|
249
|
-
token_usage: {
|
|
250
|
-
name: 'token_usage',
|
|
251
|
-
description: 'Analyze token consumption',
|
|
252
|
-
inputSchema: {
|
|
253
|
-
type: 'object',
|
|
254
|
-
properties: {
|
|
255
|
-
operation: { type: 'string' },
|
|
256
|
-
timeframe: { type: 'string', default: '24h' },
|
|
257
|
-
},
|
|
258
|
-
},
|
|
259
|
-
},
|
|
260
|
-
|
|
261
|
-
// GitHub Integration Tools (8)
|
|
262
|
-
github_repo_analyze: {
|
|
263
|
-
name: 'github_repo_analyze',
|
|
264
|
-
description: 'Repository analysis',
|
|
265
|
-
inputSchema: {
|
|
266
|
-
type: 'object',
|
|
267
|
-
properties: {
|
|
268
|
-
repo: { type: 'string' },
|
|
269
|
-
analysis_type: { type: 'string', enum: ['code_quality', 'performance', 'security'] },
|
|
270
|
-
},
|
|
271
|
-
required: ['repo'],
|
|
272
|
-
},
|
|
273
|
-
},
|
|
274
|
-
github_pr_manage: {
|
|
275
|
-
name: 'github_pr_manage',
|
|
276
|
-
description: 'Pull request management',
|
|
277
|
-
inputSchema: {
|
|
278
|
-
type: 'object',
|
|
279
|
-
properties: {
|
|
280
|
-
repo: { type: 'string' },
|
|
281
|
-
pr_number: { type: 'number' },
|
|
282
|
-
action: { type: 'string', enum: ['review', 'merge', 'close'] },
|
|
283
|
-
},
|
|
284
|
-
required: ['repo', 'action'],
|
|
285
|
-
},
|
|
286
|
-
},
|
|
287
|
-
|
|
288
|
-
// DAA Tools - DEPRECATED: Tools removed, functionality integrated into swarm_init and agent_spawn
|
|
289
|
-
// Legacy tools daa_agent_create and daa_capability_match have been consolidated
|
|
290
|
-
|
|
291
|
-
// Workflow Tools (11)
|
|
292
|
-
workflow_create: {
|
|
293
|
-
name: 'workflow_create',
|
|
294
|
-
description: 'Create custom workflows',
|
|
295
|
-
inputSchema: {
|
|
296
|
-
type: 'object',
|
|
297
|
-
properties: {
|
|
298
|
-
name: { type: 'string' },
|
|
299
|
-
steps: { type: 'array' },
|
|
300
|
-
triggers: { type: 'array' },
|
|
301
|
-
},
|
|
302
|
-
required: ['name', 'steps'],
|
|
303
|
-
},
|
|
304
|
-
},
|
|
305
|
-
sparc_mode: {
|
|
306
|
-
name: 'sparc_mode',
|
|
307
|
-
description: 'Run SPARC development modes',
|
|
308
|
-
inputSchema: {
|
|
309
|
-
type: 'object',
|
|
310
|
-
properties: {
|
|
311
|
-
mode: { type: 'string', enum: ['dev', 'api', 'ui', 'test', 'refactor'] },
|
|
312
|
-
task_description: { type: 'string' },
|
|
313
|
-
options: { type: 'object' },
|
|
314
|
-
},
|
|
315
|
-
required: ['mode', 'task_description'],
|
|
316
|
-
},
|
|
317
|
-
},
|
|
318
|
-
|
|
319
|
-
// Additional Swarm Tools
|
|
320
|
-
agent_list: {
|
|
321
|
-
name: 'agent_list',
|
|
322
|
-
description: 'List active agents & capabilities',
|
|
323
|
-
inputSchema: { type: 'object', properties: { swarmId: { type: 'string' } } },
|
|
324
|
-
},
|
|
325
|
-
agent_metrics: {
|
|
326
|
-
name: 'agent_metrics',
|
|
327
|
-
description: 'Agent performance metrics',
|
|
328
|
-
inputSchema: { type: 'object', properties: { agentId: { type: 'string' } } },
|
|
329
|
-
},
|
|
330
|
-
swarm_monitor: {
|
|
331
|
-
name: 'swarm_monitor',
|
|
332
|
-
description: 'Real-time swarm monitoring',
|
|
333
|
-
inputSchema: {
|
|
334
|
-
type: 'object',
|
|
335
|
-
properties: { swarmId: { type: 'string' }, interval: { type: 'number' } },
|
|
336
|
-
},
|
|
337
|
-
},
|
|
338
|
-
topology_optimize: {
|
|
339
|
-
name: 'topology_optimize',
|
|
340
|
-
description: 'Auto-optimize swarm topology',
|
|
341
|
-
inputSchema: { type: 'object', properties: { swarmId: { type: 'string' } } },
|
|
342
|
-
},
|
|
343
|
-
load_balance: {
|
|
344
|
-
name: 'load_balance',
|
|
345
|
-
description: 'Distribute tasks efficiently',
|
|
346
|
-
inputSchema: {
|
|
347
|
-
type: 'object',
|
|
348
|
-
properties: { swarmId: { type: 'string' }, tasks: { type: 'array' } },
|
|
349
|
-
},
|
|
350
|
-
},
|
|
351
|
-
coordination_sync: {
|
|
352
|
-
name: 'coordination_sync',
|
|
353
|
-
description: 'Sync agent coordination',
|
|
354
|
-
inputSchema: { type: 'object', properties: { swarmId: { type: 'string' } } },
|
|
355
|
-
},
|
|
356
|
-
swarm_scale: {
|
|
357
|
-
name: 'swarm_scale',
|
|
358
|
-
description: 'Auto-scale agent count',
|
|
359
|
-
inputSchema: {
|
|
360
|
-
type: 'object',
|
|
361
|
-
properties: { swarmId: { type: 'string' }, targetSize: { type: 'number' } },
|
|
362
|
-
},
|
|
363
|
-
},
|
|
364
|
-
swarm_destroy: {
|
|
365
|
-
name: 'swarm_destroy',
|
|
366
|
-
description: 'Gracefully shutdown swarm',
|
|
367
|
-
inputSchema: {
|
|
368
|
-
type: 'object',
|
|
369
|
-
properties: { swarmId: { type: 'string' } },
|
|
370
|
-
required: ['swarmId'],
|
|
371
|
-
},
|
|
372
|
-
},
|
|
373
|
-
|
|
374
|
-
// Additional Neural Tools - DEPRECATED: Removed 13 advanced neural tools
|
|
375
|
-
// Tools removed: neural_predict, model_load, model_save, wasm_optimize, inference_run,
|
|
376
|
-
// pattern_recognize, cognitive_analyze, learning_adapt, neural_compress, ensemble_create,
|
|
377
|
-
// transfer_learn, neural_explain
|
|
378
|
-
// Rationale: Complexity reduction for novice users, functionality available via plugins
|
|
379
|
-
|
|
380
|
-
// Additional Memory Tools - DEPRECATED: Removed 10 advanced memory management tools
|
|
381
|
-
// Tools removed: memory_persist, memory_namespace, memory_backup, memory_restore,
|
|
382
|
-
// memory_compress, memory_sync, cache_manage, state_snapshot, context_restore, memory_analytics
|
|
383
|
-
// Retained: memory_usage, memory_search (core functionality)
|
|
384
|
-
// Rationale: Simplified memory interface, basic features in memory_usage sufficient
|
|
385
|
-
|
|
386
|
-
// Additional Analysis Tools
|
|
387
|
-
task_status: {
|
|
388
|
-
name: 'task_status',
|
|
389
|
-
description: 'Check task execution status',
|
|
390
|
-
inputSchema: {
|
|
391
|
-
type: 'object',
|
|
392
|
-
properties: { taskId: { type: 'string' } },
|
|
393
|
-
required: ['taskId'],
|
|
394
|
-
},
|
|
395
|
-
},
|
|
396
|
-
task_results: {
|
|
397
|
-
name: 'task_results',
|
|
398
|
-
description: 'Get task completion results',
|
|
399
|
-
inputSchema: {
|
|
400
|
-
type: 'object',
|
|
401
|
-
properties: { taskId: { type: 'string' } },
|
|
402
|
-
required: ['taskId'],
|
|
403
|
-
},
|
|
404
|
-
},
|
|
405
|
-
benchmark_run: {
|
|
406
|
-
name: 'benchmark_run',
|
|
407
|
-
description: 'Performance benchmarks',
|
|
408
|
-
inputSchema: { type: 'object', properties: { suite: { type: 'string' } } },
|
|
409
|
-
},
|
|
410
|
-
metrics_collect: {
|
|
411
|
-
name: 'metrics_collect',
|
|
412
|
-
description: 'Collect system metrics',
|
|
413
|
-
inputSchema: { type: 'object', properties: { components: { type: 'array' } } },
|
|
414
|
-
},
|
|
415
|
-
trend_analysis: {
|
|
416
|
-
name: 'trend_analysis',
|
|
417
|
-
description: 'Analyze performance trends',
|
|
418
|
-
inputSchema: {
|
|
419
|
-
type: 'object',
|
|
420
|
-
properties: { metric: { type: 'string' }, period: { type: 'string' } },
|
|
421
|
-
required: ['metric'],
|
|
422
|
-
},
|
|
423
|
-
},
|
|
424
|
-
cost_analysis: {
|
|
425
|
-
name: 'cost_analysis',
|
|
426
|
-
description: 'Cost and resource analysis',
|
|
427
|
-
inputSchema: { type: 'object', properties: { timeframe: { type: 'string' } } },
|
|
428
|
-
},
|
|
429
|
-
quality_assess: {
|
|
430
|
-
name: 'quality_assess',
|
|
431
|
-
description: 'Quality assessment',
|
|
432
|
-
inputSchema: {
|
|
433
|
-
type: 'object',
|
|
434
|
-
properties: { target: { type: 'string' }, criteria: { type: 'array' } },
|
|
435
|
-
required: ['target'],
|
|
436
|
-
},
|
|
437
|
-
},
|
|
438
|
-
error_analysis: {
|
|
439
|
-
name: 'error_analysis',
|
|
440
|
-
description: 'Error pattern analysis',
|
|
441
|
-
inputSchema: { type: 'object', properties: { logs: { type: 'array' } } },
|
|
442
|
-
},
|
|
443
|
-
usage_stats: {
|
|
444
|
-
name: 'usage_stats',
|
|
445
|
-
description: 'Usage statistics',
|
|
446
|
-
inputSchema: { type: 'object', properties: { component: { type: 'string' } } },
|
|
447
|
-
},
|
|
448
|
-
health_check: {
|
|
449
|
-
name: 'health_check',
|
|
450
|
-
description: 'System health monitoring',
|
|
451
|
-
inputSchema: { type: 'object', properties: { components: { type: 'array' } } },
|
|
452
|
-
},
|
|
453
|
-
|
|
454
|
-
// Additional Workflow Tools - DEPRECATED: Removed 9 workflow automation tools
|
|
455
|
-
// Tools removed: workflow_execute, workflow_export, automation_setup, pipeline_create,
|
|
456
|
-
// scheduler_manage, trigger_setup, workflow_template, batch_process, parallel_execute
|
|
457
|
-
// Retained: workflow_create (basic functionality)
|
|
458
|
-
// Rationale: Workflow execution integrated into task_orchestrate, reduces tool count
|
|
459
|
-
|
|
460
|
-
// GitHub Integration Tools
|
|
461
|
-
github_issue_track: {
|
|
462
|
-
name: 'github_issue_track',
|
|
463
|
-
description: 'Issue tracking & triage',
|
|
464
|
-
inputSchema: {
|
|
465
|
-
type: 'object',
|
|
466
|
-
properties: { repo: { type: 'string' }, action: { type: 'string' } },
|
|
467
|
-
required: ['repo', 'action'],
|
|
468
|
-
},
|
|
469
|
-
},
|
|
470
|
-
github_release_coord: {
|
|
471
|
-
name: 'github_release_coord',
|
|
472
|
-
description: 'Release coordination',
|
|
473
|
-
inputSchema: {
|
|
474
|
-
type: 'object',
|
|
475
|
-
properties: { repo: { type: 'string' }, version: { type: 'string' } },
|
|
476
|
-
required: ['repo', 'version'],
|
|
477
|
-
},
|
|
478
|
-
},
|
|
479
|
-
github_workflow_auto: {
|
|
480
|
-
name: 'github_workflow_auto',
|
|
481
|
-
description: 'Workflow automation',
|
|
482
|
-
inputSchema: {
|
|
483
|
-
type: 'object',
|
|
484
|
-
properties: { repo: { type: 'string' }, workflow: { type: 'object' } },
|
|
485
|
-
required: ['repo', 'workflow'],
|
|
486
|
-
},
|
|
487
|
-
},
|
|
488
|
-
github_code_review: {
|
|
489
|
-
name: 'github_code_review',
|
|
490
|
-
description: 'Automated code review',
|
|
491
|
-
inputSchema: {
|
|
492
|
-
type: 'object',
|
|
493
|
-
properties: { repo: { type: 'string' }, pr: { type: 'number' } },
|
|
494
|
-
required: ['repo', 'pr'],
|
|
495
|
-
},
|
|
496
|
-
},
|
|
497
|
-
github_sync_coord: {
|
|
498
|
-
name: 'github_sync_coord',
|
|
499
|
-
description: 'Multi-repo sync coordination',
|
|
500
|
-
inputSchema: {
|
|
501
|
-
type: 'object',
|
|
502
|
-
properties: { repos: { type: 'array' } },
|
|
503
|
-
required: ['repos'],
|
|
504
|
-
},
|
|
505
|
-
},
|
|
506
|
-
github_metrics: {
|
|
507
|
-
name: 'github_metrics',
|
|
508
|
-
description: 'Repository metrics',
|
|
509
|
-
inputSchema: {
|
|
510
|
-
type: 'object',
|
|
511
|
-
properties: { repo: { type: 'string' } },
|
|
512
|
-
required: ['repo'],
|
|
513
|
-
},
|
|
514
|
-
},
|
|
515
|
-
|
|
516
|
-
// Additional DAA Tools - DEPRECATED: Removed 6 advanced DAA tools
|
|
517
|
-
// Tools removed: daa_resource_alloc, daa_lifecycle_manage, daa_communication,
|
|
518
|
-
// daa_consensus, daa_fault_tolerance, daa_optimization
|
|
519
|
-
// Rationale: DAA functionality consolidated into core swarm tools (swarm_init, agent_spawn, task_orchestrate)
|
|
520
|
-
|
|
521
|
-
// System & Utilities Tools - DEPRECATED: Removed 8 system utility tools
|
|
522
|
-
// Tools removed: terminal_execute, config_manage, features_detect, security_scan,
|
|
523
|
-
// backup_create, restore_system, log_analysis, diagnostic_run
|
|
524
|
-
// Rationale: Terminal execution insecure for MCP, other tools redundant with CLI commands
|
|
525
|
-
// Note: features_detect retained in limited scope for framework detection only
|
|
526
|
-
};
|
|
527
|
-
}
|
|
528
|
-
|
|
529
|
-
initializeResources() {
|
|
530
|
-
return {
|
|
531
|
-
'claude-flow://swarms': {
|
|
532
|
-
uri: 'claude-flow://swarms',
|
|
533
|
-
name: 'Active Swarms',
|
|
534
|
-
description: 'List of active swarm configurations and status',
|
|
535
|
-
mimeType: 'application/json',
|
|
536
|
-
},
|
|
537
|
-
'claude-flow://agents': {
|
|
538
|
-
uri: 'claude-flow://agents',
|
|
539
|
-
name: 'Agent Registry',
|
|
540
|
-
description: 'Registry of available agents and their capabilities',
|
|
541
|
-
mimeType: 'application/json',
|
|
542
|
-
},
|
|
543
|
-
'claude-flow://models': {
|
|
544
|
-
uri: 'claude-flow://models',
|
|
545
|
-
name: 'Neural Models',
|
|
546
|
-
description: 'Available neural network models and training status',
|
|
547
|
-
mimeType: 'application/json',
|
|
548
|
-
},
|
|
549
|
-
'claude-flow://performance': {
|
|
550
|
-
uri: 'claude-flow://performance',
|
|
551
|
-
name: 'Performance Metrics',
|
|
552
|
-
description: 'Real-time performance metrics and benchmarks',
|
|
553
|
-
mimeType: 'application/json',
|
|
554
|
-
},
|
|
555
|
-
};
|
|
556
|
-
}
|
|
557
|
-
|
|
558
|
-
async handleMessage(message) {
|
|
559
|
-
try {
|
|
560
|
-
const { id, method, params } = message;
|
|
561
|
-
|
|
562
|
-
switch (method) {
|
|
563
|
-
case 'initialize':
|
|
564
|
-
return this.handleInitialize(id, params);
|
|
565
|
-
case 'tools/list':
|
|
566
|
-
return this.handleToolsList(id);
|
|
567
|
-
case 'tools/call':
|
|
568
|
-
return this.handleToolCall(id, params);
|
|
569
|
-
case 'resources/list':
|
|
570
|
-
return this.handleResourcesList(id);
|
|
571
|
-
case 'resources/read':
|
|
572
|
-
return this.handleResourceRead(id, params);
|
|
573
|
-
default:
|
|
574
|
-
return this.createErrorResponse(id, -32601, 'Method not found');
|
|
575
|
-
}
|
|
576
|
-
} catch (error) {
|
|
577
|
-
return this.createErrorResponse(message.id, -32603, 'Internal error', error.message);
|
|
55
|
+
let ClaudeFlowMCPServer = class ClaudeFlowMCPServer {
|
|
56
|
+
async initializeMemory() {
|
|
57
|
+
await this.memoryStore.initialize();
|
|
58
|
+
console.error(`[${new Date().toISOString()}] INFO [claude-flow-mcp] (${this.sessionId}) Shared memory store initialized (same as npx)`);
|
|
59
|
+
console.error(`[${new Date().toISOString()}] INFO [claude-flow-mcp] (${this.sessionId}) Using ${this.memoryStore.isUsingFallback() ? 'in-memory' : 'SQLite'} storage`);
|
|
578
60
|
}
|
|
579
|
-
|
|
580
|
-
|
|
581
|
-
|
|
582
|
-
|
|
583
|
-
|
|
584
|
-
|
|
585
|
-
|
|
586
|
-
|
|
587
|
-
|
|
588
|
-
|
|
589
|
-
|
|
590
|
-
|
|
591
|
-
|
|
592
|
-
|
|
593
|
-
|
|
594
|
-
|
|
595
|
-
|
|
596
|
-
|
|
597
|
-
|
|
598
|
-
|
|
599
|
-
|
|
600
|
-
|
|
601
|
-
|
|
602
|
-
|
|
603
|
-
|
|
604
|
-
|
|
605
|
-
|
|
606
|
-
|
|
607
|
-
|
|
608
|
-
|
|
609
|
-
|
|
610
|
-
|
|
611
|
-
async handleToolCall(id, params) {
|
|
612
|
-
const { name, arguments: args } = params;
|
|
613
|
-
|
|
614
|
-
console.error(
|
|
615
|
-
`[${new Date().toISOString()}] INFO [claude-flow-mcp] (${this.sessionId}) 🔧 Tool called: ${name}`,
|
|
616
|
-
);
|
|
617
|
-
|
|
618
|
-
try {
|
|
619
|
-
const result = await this.executeTool(name, args);
|
|
620
|
-
return {
|
|
621
|
-
jsonrpc: '2.0',
|
|
622
|
-
id,
|
|
623
|
-
result: {
|
|
624
|
-
content: [
|
|
625
|
-
{
|
|
626
|
-
type: 'text',
|
|
627
|
-
text: JSON.stringify(result, null, 2),
|
|
61
|
+
// Database operations now use the same memory store as working npx commands
|
|
62
|
+
initializeTools() {
|
|
63
|
+
return {
|
|
64
|
+
// Swarm Coordination Tools (12)
|
|
65
|
+
swarm_init: {
|
|
66
|
+
name: 'swarm_init',
|
|
67
|
+
description: 'Initialize swarm with topology and configuration',
|
|
68
|
+
inputSchema: {
|
|
69
|
+
type: 'object',
|
|
70
|
+
properties: {
|
|
71
|
+
topology: {
|
|
72
|
+
type: 'string',
|
|
73
|
+
enum: [
|
|
74
|
+
'hierarchical',
|
|
75
|
+
'mesh',
|
|
76
|
+
'ring',
|
|
77
|
+
'star'
|
|
78
|
+
]
|
|
79
|
+
},
|
|
80
|
+
maxAgents: {
|
|
81
|
+
type: 'number',
|
|
82
|
+
default: 8
|
|
83
|
+
},
|
|
84
|
+
strategy: {
|
|
85
|
+
type: 'string',
|
|
86
|
+
default: 'auto'
|
|
87
|
+
}
|
|
88
|
+
},
|
|
89
|
+
required: [
|
|
90
|
+
'topology'
|
|
91
|
+
]
|
|
92
|
+
}
|
|
628
93
|
},
|
|
629
|
-
|
|
630
|
-
|
|
631
|
-
|
|
632
|
-
|
|
633
|
-
|
|
634
|
-
|
|
635
|
-
|
|
636
|
-
|
|
637
|
-
|
|
638
|
-
|
|
639
|
-
|
|
640
|
-
|
|
641
|
-
|
|
642
|
-
|
|
643
|
-
|
|
644
|
-
|
|
645
|
-
|
|
646
|
-
|
|
647
|
-
|
|
648
|
-
|
|
649
|
-
|
|
650
|
-
|
|
651
|
-
|
|
652
|
-
|
|
653
|
-
|
|
654
|
-
|
|
655
|
-
|
|
656
|
-
|
|
657
|
-
|
|
658
|
-
|
|
659
|
-
|
|
660
|
-
|
|
661
|
-
|
|
94
|
+
agent_spawn: {
|
|
95
|
+
name: 'agent_spawn',
|
|
96
|
+
description: 'Create specialized AI agents',
|
|
97
|
+
inputSchema: {
|
|
98
|
+
type: 'object',
|
|
99
|
+
properties: {
|
|
100
|
+
type: {
|
|
101
|
+
type: 'string',
|
|
102
|
+
enum: [
|
|
103
|
+
// Legacy types (for backward compatibility)
|
|
104
|
+
'coordinator',
|
|
105
|
+
'analyst',
|
|
106
|
+
'optimizer',
|
|
107
|
+
'documenter',
|
|
108
|
+
'monitor',
|
|
109
|
+
'specialist',
|
|
110
|
+
'architect',
|
|
111
|
+
// Current types
|
|
112
|
+
'task-orchestrator',
|
|
113
|
+
'code-analyzer',
|
|
114
|
+
'perf-analyzer',
|
|
115
|
+
'api-docs',
|
|
116
|
+
'performance-benchmarker',
|
|
117
|
+
'system-architect',
|
|
118
|
+
// Core types
|
|
119
|
+
'researcher',
|
|
120
|
+
'coder',
|
|
121
|
+
'tester',
|
|
122
|
+
'reviewer'
|
|
123
|
+
]
|
|
124
|
+
},
|
|
125
|
+
name: {
|
|
126
|
+
type: 'string'
|
|
127
|
+
},
|
|
128
|
+
capabilities: {
|
|
129
|
+
type: 'array'
|
|
130
|
+
},
|
|
131
|
+
swarmId: {
|
|
132
|
+
type: 'string'
|
|
133
|
+
}
|
|
134
|
+
},
|
|
135
|
+
required: [
|
|
136
|
+
'type'
|
|
137
|
+
]
|
|
138
|
+
}
|
|
139
|
+
},
|
|
140
|
+
task_orchestrate: {
|
|
141
|
+
name: 'task_orchestrate',
|
|
142
|
+
description: 'Orchestrate complex task workflows',
|
|
143
|
+
inputSchema: {
|
|
144
|
+
type: 'object',
|
|
145
|
+
properties: {
|
|
146
|
+
task: {
|
|
147
|
+
type: 'string'
|
|
148
|
+
},
|
|
149
|
+
strategy: {
|
|
150
|
+
type: 'string',
|
|
151
|
+
enum: [
|
|
152
|
+
'parallel',
|
|
153
|
+
'sequential',
|
|
154
|
+
'adaptive',
|
|
155
|
+
'balanced'
|
|
156
|
+
]
|
|
157
|
+
},
|
|
158
|
+
priority: {
|
|
159
|
+
type: 'string',
|
|
160
|
+
enum: [
|
|
161
|
+
'low',
|
|
162
|
+
'medium',
|
|
163
|
+
'high',
|
|
164
|
+
'critical'
|
|
165
|
+
]
|
|
166
|
+
},
|
|
167
|
+
dependencies: {
|
|
168
|
+
type: 'array'
|
|
169
|
+
}
|
|
170
|
+
},
|
|
171
|
+
required: [
|
|
172
|
+
'task'
|
|
173
|
+
]
|
|
174
|
+
}
|
|
175
|
+
},
|
|
176
|
+
swarm_status: {
|
|
177
|
+
name: 'swarm_status',
|
|
178
|
+
description: 'Monitor swarm health and performance',
|
|
179
|
+
inputSchema: {
|
|
180
|
+
type: 'object',
|
|
181
|
+
properties: {
|
|
182
|
+
swarmId: {
|
|
183
|
+
type: 'string'
|
|
184
|
+
}
|
|
185
|
+
}
|
|
186
|
+
}
|
|
187
|
+
},
|
|
188
|
+
// Neural Network Tools - DEPRECATED: Advanced neural features hidden from novice users
|
|
189
|
+
// Retained: neural_status, neural_train, neural_patterns (basic functionality)
|
|
190
|
+
// Use memory_usage for pattern storage instead of neural-specific tools
|
|
191
|
+
// Memory & Persistence Tools (12)
|
|
192
|
+
memory_usage: {
|
|
193
|
+
name: 'memory_usage',
|
|
194
|
+
description: 'Store/retrieve persistent memory with TTL and namespacing',
|
|
195
|
+
inputSchema: {
|
|
196
|
+
type: 'object',
|
|
197
|
+
properties: {
|
|
198
|
+
action: {
|
|
199
|
+
type: 'string',
|
|
200
|
+
enum: [
|
|
201
|
+
'store',
|
|
202
|
+
'retrieve',
|
|
203
|
+
'list',
|
|
204
|
+
'delete',
|
|
205
|
+
'search'
|
|
206
|
+
]
|
|
207
|
+
},
|
|
208
|
+
key: {
|
|
209
|
+
type: 'string'
|
|
210
|
+
},
|
|
211
|
+
value: {
|
|
212
|
+
type: 'string'
|
|
213
|
+
},
|
|
214
|
+
namespace: {
|
|
215
|
+
type: 'string',
|
|
216
|
+
default: 'default'
|
|
217
|
+
},
|
|
218
|
+
ttl: {
|
|
219
|
+
type: 'number'
|
|
220
|
+
}
|
|
221
|
+
},
|
|
222
|
+
required: [
|
|
223
|
+
'action'
|
|
224
|
+
]
|
|
225
|
+
}
|
|
226
|
+
},
|
|
227
|
+
memory_search: {
|
|
228
|
+
name: 'memory_search',
|
|
229
|
+
description: 'Search memory with patterns',
|
|
230
|
+
inputSchema: {
|
|
231
|
+
type: 'object',
|
|
232
|
+
properties: {
|
|
233
|
+
pattern: {
|
|
234
|
+
type: 'string'
|
|
235
|
+
},
|
|
236
|
+
namespace: {
|
|
237
|
+
type: 'string'
|
|
238
|
+
},
|
|
239
|
+
limit: {
|
|
240
|
+
type: 'number',
|
|
241
|
+
default: 10
|
|
242
|
+
}
|
|
243
|
+
},
|
|
244
|
+
required: [
|
|
245
|
+
'pattern'
|
|
246
|
+
]
|
|
247
|
+
}
|
|
248
|
+
},
|
|
249
|
+
// Analysis & Monitoring Tools (13)
|
|
250
|
+
performance_report: {
|
|
251
|
+
name: 'performance_report',
|
|
252
|
+
description: 'Generate performance reports with real-time metrics',
|
|
253
|
+
inputSchema: {
|
|
254
|
+
type: 'object',
|
|
255
|
+
properties: {
|
|
256
|
+
timeframe: {
|
|
257
|
+
type: 'string',
|
|
258
|
+
enum: [
|
|
259
|
+
'24h',
|
|
260
|
+
'7d',
|
|
261
|
+
'30d'
|
|
262
|
+
],
|
|
263
|
+
default: '24h'
|
|
264
|
+
},
|
|
265
|
+
format: {
|
|
266
|
+
type: 'string',
|
|
267
|
+
enum: [
|
|
268
|
+
'summary',
|
|
269
|
+
'detailed',
|
|
270
|
+
'json'
|
|
271
|
+
],
|
|
272
|
+
default: 'summary'
|
|
273
|
+
}
|
|
274
|
+
}
|
|
275
|
+
}
|
|
276
|
+
},
|
|
277
|
+
bottleneck_analyze: {
|
|
278
|
+
name: 'bottleneck_analyze',
|
|
279
|
+
description: 'Identify performance bottlenecks',
|
|
280
|
+
inputSchema: {
|
|
281
|
+
type: 'object',
|
|
282
|
+
properties: {
|
|
283
|
+
component: {
|
|
284
|
+
type: 'string'
|
|
285
|
+
},
|
|
286
|
+
metrics: {
|
|
287
|
+
type: 'array'
|
|
288
|
+
}
|
|
289
|
+
}
|
|
290
|
+
}
|
|
291
|
+
},
|
|
292
|
+
token_usage: {
|
|
293
|
+
name: 'token_usage',
|
|
294
|
+
description: 'Analyze token consumption',
|
|
295
|
+
inputSchema: {
|
|
296
|
+
type: 'object',
|
|
297
|
+
properties: {
|
|
298
|
+
operation: {
|
|
299
|
+
type: 'string'
|
|
300
|
+
},
|
|
301
|
+
timeframe: {
|
|
302
|
+
type: 'string',
|
|
303
|
+
default: '24h'
|
|
304
|
+
}
|
|
305
|
+
}
|
|
306
|
+
}
|
|
307
|
+
},
|
|
308
|
+
// GitHub Integration Tools (8)
|
|
309
|
+
github_repo_analyze: {
|
|
310
|
+
name: 'github_repo_analyze',
|
|
311
|
+
description: 'Repository analysis',
|
|
312
|
+
inputSchema: {
|
|
313
|
+
type: 'object',
|
|
314
|
+
properties: {
|
|
315
|
+
repo: {
|
|
316
|
+
type: 'string'
|
|
317
|
+
},
|
|
318
|
+
analysis_type: {
|
|
319
|
+
type: 'string',
|
|
320
|
+
enum: [
|
|
321
|
+
'code_quality',
|
|
322
|
+
'performance',
|
|
323
|
+
'security'
|
|
324
|
+
]
|
|
325
|
+
}
|
|
326
|
+
},
|
|
327
|
+
required: [
|
|
328
|
+
'repo'
|
|
329
|
+
]
|
|
330
|
+
}
|
|
331
|
+
},
|
|
332
|
+
github_pr_manage: {
|
|
333
|
+
name: 'github_pr_manage',
|
|
334
|
+
description: 'Pull request management',
|
|
335
|
+
inputSchema: {
|
|
336
|
+
type: 'object',
|
|
337
|
+
properties: {
|
|
338
|
+
repo: {
|
|
339
|
+
type: 'string'
|
|
340
|
+
},
|
|
341
|
+
pr_number: {
|
|
342
|
+
type: 'number'
|
|
343
|
+
},
|
|
344
|
+
action: {
|
|
345
|
+
type: 'string',
|
|
346
|
+
enum: [
|
|
347
|
+
'review',
|
|
348
|
+
'merge',
|
|
349
|
+
'close'
|
|
350
|
+
]
|
|
351
|
+
}
|
|
352
|
+
},
|
|
353
|
+
required: [
|
|
354
|
+
'repo',
|
|
355
|
+
'action'
|
|
356
|
+
]
|
|
357
|
+
}
|
|
358
|
+
},
|
|
359
|
+
// DAA Tools - DEPRECATED: Tools removed, functionality integrated into swarm_init and agent_spawn
|
|
360
|
+
// Legacy tools daa_agent_create and daa_capability_match have been consolidated
|
|
361
|
+
// Workflow Tools (11)
|
|
362
|
+
workflow_create: {
|
|
363
|
+
name: 'workflow_create',
|
|
364
|
+
description: 'Create custom workflows',
|
|
365
|
+
inputSchema: {
|
|
366
|
+
type: 'object',
|
|
367
|
+
properties: {
|
|
368
|
+
name: {
|
|
369
|
+
type: 'string'
|
|
370
|
+
},
|
|
371
|
+
steps: {
|
|
372
|
+
type: 'array'
|
|
373
|
+
},
|
|
374
|
+
triggers: {
|
|
375
|
+
type: 'array'
|
|
376
|
+
}
|
|
377
|
+
},
|
|
378
|
+
required: [
|
|
379
|
+
'name',
|
|
380
|
+
'steps'
|
|
381
|
+
]
|
|
382
|
+
}
|
|
383
|
+
},
|
|
384
|
+
sparc_mode: {
|
|
385
|
+
name: 'sparc_mode',
|
|
386
|
+
description: 'Run SPARC development modes',
|
|
387
|
+
inputSchema: {
|
|
388
|
+
type: 'object',
|
|
389
|
+
properties: {
|
|
390
|
+
mode: {
|
|
391
|
+
type: 'string',
|
|
392
|
+
enum: [
|
|
393
|
+
'dev',
|
|
394
|
+
'api',
|
|
395
|
+
'ui',
|
|
396
|
+
'test',
|
|
397
|
+
'refactor'
|
|
398
|
+
]
|
|
399
|
+
},
|
|
400
|
+
task_description: {
|
|
401
|
+
type: 'string'
|
|
402
|
+
},
|
|
403
|
+
options: {
|
|
404
|
+
type: 'object'
|
|
405
|
+
}
|
|
406
|
+
},
|
|
407
|
+
required: [
|
|
408
|
+
'mode',
|
|
409
|
+
'task_description'
|
|
410
|
+
]
|
|
411
|
+
}
|
|
412
|
+
},
|
|
413
|
+
// Additional Swarm Tools
|
|
414
|
+
agent_list: {
|
|
415
|
+
name: 'agent_list',
|
|
416
|
+
description: 'List active agents & capabilities',
|
|
417
|
+
inputSchema: {
|
|
418
|
+
type: 'object',
|
|
419
|
+
properties: {
|
|
420
|
+
swarmId: {
|
|
421
|
+
type: 'string'
|
|
422
|
+
}
|
|
423
|
+
}
|
|
424
|
+
}
|
|
425
|
+
},
|
|
426
|
+
agent_metrics: {
|
|
427
|
+
name: 'agent_metrics',
|
|
428
|
+
description: 'Agent performance metrics',
|
|
429
|
+
inputSchema: {
|
|
430
|
+
type: 'object',
|
|
431
|
+
properties: {
|
|
432
|
+
agentId: {
|
|
433
|
+
type: 'string'
|
|
434
|
+
}
|
|
435
|
+
}
|
|
436
|
+
}
|
|
437
|
+
},
|
|
438
|
+
swarm_monitor: {
|
|
439
|
+
name: 'swarm_monitor',
|
|
440
|
+
description: 'Real-time swarm monitoring',
|
|
441
|
+
inputSchema: {
|
|
442
|
+
type: 'object',
|
|
443
|
+
properties: {
|
|
444
|
+
swarmId: {
|
|
445
|
+
type: 'string'
|
|
446
|
+
},
|
|
447
|
+
interval: {
|
|
448
|
+
type: 'number'
|
|
449
|
+
}
|
|
450
|
+
}
|
|
451
|
+
}
|
|
452
|
+
},
|
|
453
|
+
topology_optimize: {
|
|
454
|
+
name: 'topology_optimize',
|
|
455
|
+
description: 'Auto-optimize swarm topology',
|
|
456
|
+
inputSchema: {
|
|
457
|
+
type: 'object',
|
|
458
|
+
properties: {
|
|
459
|
+
swarmId: {
|
|
460
|
+
type: 'string'
|
|
461
|
+
}
|
|
462
|
+
}
|
|
463
|
+
}
|
|
464
|
+
},
|
|
465
|
+
load_balance: {
|
|
466
|
+
name: 'load_balance',
|
|
467
|
+
description: 'Distribute tasks efficiently',
|
|
468
|
+
inputSchema: {
|
|
469
|
+
type: 'object',
|
|
470
|
+
properties: {
|
|
471
|
+
swarmId: {
|
|
472
|
+
type: 'string'
|
|
473
|
+
},
|
|
474
|
+
tasks: {
|
|
475
|
+
type: 'array'
|
|
476
|
+
}
|
|
477
|
+
}
|
|
478
|
+
}
|
|
479
|
+
},
|
|
480
|
+
coordination_sync: {
|
|
481
|
+
name: 'coordination_sync',
|
|
482
|
+
description: 'Sync agent coordination',
|
|
483
|
+
inputSchema: {
|
|
484
|
+
type: 'object',
|
|
485
|
+
properties: {
|
|
486
|
+
swarmId: {
|
|
487
|
+
type: 'string'
|
|
488
|
+
}
|
|
489
|
+
}
|
|
490
|
+
}
|
|
491
|
+
},
|
|
492
|
+
swarm_scale: {
|
|
493
|
+
name: 'swarm_scale',
|
|
494
|
+
description: 'Auto-scale agent count',
|
|
495
|
+
inputSchema: {
|
|
496
|
+
type: 'object',
|
|
497
|
+
properties: {
|
|
498
|
+
swarmId: {
|
|
499
|
+
type: 'string'
|
|
500
|
+
},
|
|
501
|
+
targetSize: {
|
|
502
|
+
type: 'number'
|
|
503
|
+
}
|
|
504
|
+
}
|
|
505
|
+
}
|
|
506
|
+
},
|
|
507
|
+
swarm_destroy: {
|
|
508
|
+
name: 'swarm_destroy',
|
|
509
|
+
description: 'Gracefully shutdown swarm',
|
|
510
|
+
inputSchema: {
|
|
511
|
+
type: 'object',
|
|
512
|
+
properties: {
|
|
513
|
+
swarmId: {
|
|
514
|
+
type: 'string'
|
|
515
|
+
}
|
|
516
|
+
},
|
|
517
|
+
required: [
|
|
518
|
+
'swarmId'
|
|
519
|
+
]
|
|
520
|
+
}
|
|
521
|
+
},
|
|
522
|
+
// Additional Neural Tools - DEPRECATED: Removed 13 advanced neural tools
|
|
523
|
+
// Tools removed: neural_predict, model_load, model_save, wasm_optimize, inference_run,
|
|
524
|
+
// pattern_recognize, cognitive_analyze, learning_adapt, neural_compress, ensemble_create,
|
|
525
|
+
// transfer_learn, neural_explain
|
|
526
|
+
// Rationale: Complexity reduction for novice users, functionality available via plugins
|
|
527
|
+
// Additional Memory Tools - DEPRECATED: Removed 10 advanced memory management tools
|
|
528
|
+
// Tools removed: memory_persist, memory_namespace, memory_backup, memory_restore,
|
|
529
|
+
// memory_compress, memory_sync, cache_manage, state_snapshot, context_restore, memory_analytics
|
|
530
|
+
// Retained: memory_usage, memory_search (core functionality)
|
|
531
|
+
// Rationale: Simplified memory interface, basic features in memory_usage sufficient
|
|
532
|
+
// Additional Analysis Tools
|
|
533
|
+
task_status: {
|
|
534
|
+
name: 'task_status',
|
|
535
|
+
description: 'Check task execution status',
|
|
536
|
+
inputSchema: {
|
|
537
|
+
type: 'object',
|
|
538
|
+
properties: {
|
|
539
|
+
taskId: {
|
|
540
|
+
type: 'string'
|
|
541
|
+
}
|
|
542
|
+
},
|
|
543
|
+
required: [
|
|
544
|
+
'taskId'
|
|
545
|
+
]
|
|
546
|
+
}
|
|
547
|
+
},
|
|
548
|
+
task_results: {
|
|
549
|
+
name: 'task_results',
|
|
550
|
+
description: 'Get task completion results',
|
|
551
|
+
inputSchema: {
|
|
552
|
+
type: 'object',
|
|
553
|
+
properties: {
|
|
554
|
+
taskId: {
|
|
555
|
+
type: 'string'
|
|
556
|
+
}
|
|
557
|
+
},
|
|
558
|
+
required: [
|
|
559
|
+
'taskId'
|
|
560
|
+
]
|
|
561
|
+
}
|
|
562
|
+
},
|
|
563
|
+
benchmark_run: {
|
|
564
|
+
name: 'benchmark_run',
|
|
565
|
+
description: 'Performance benchmarks',
|
|
566
|
+
inputSchema: {
|
|
567
|
+
type: 'object',
|
|
568
|
+
properties: {
|
|
569
|
+
suite: {
|
|
570
|
+
type: 'string'
|
|
571
|
+
}
|
|
572
|
+
}
|
|
573
|
+
}
|
|
574
|
+
},
|
|
575
|
+
metrics_collect: {
|
|
576
|
+
name: 'metrics_collect',
|
|
577
|
+
description: 'Collect system metrics',
|
|
578
|
+
inputSchema: {
|
|
579
|
+
type: 'object',
|
|
580
|
+
properties: {
|
|
581
|
+
components: {
|
|
582
|
+
type: 'array'
|
|
583
|
+
}
|
|
584
|
+
}
|
|
585
|
+
}
|
|
586
|
+
},
|
|
587
|
+
trend_analysis: {
|
|
588
|
+
name: 'trend_analysis',
|
|
589
|
+
description: 'Analyze performance trends',
|
|
590
|
+
inputSchema: {
|
|
591
|
+
type: 'object',
|
|
592
|
+
properties: {
|
|
593
|
+
metric: {
|
|
594
|
+
type: 'string'
|
|
595
|
+
},
|
|
596
|
+
period: {
|
|
597
|
+
type: 'string'
|
|
598
|
+
}
|
|
599
|
+
},
|
|
600
|
+
required: [
|
|
601
|
+
'metric'
|
|
602
|
+
]
|
|
603
|
+
}
|
|
662
604
|
},
|
|
663
|
-
|
|
664
|
-
|
|
665
|
-
|
|
666
|
-
|
|
667
|
-
|
|
605
|
+
cost_analysis: {
|
|
606
|
+
name: 'cost_analysis',
|
|
607
|
+
description: 'Cost and resource analysis',
|
|
608
|
+
inputSchema: {
|
|
609
|
+
type: 'object',
|
|
610
|
+
properties: {
|
|
611
|
+
timeframe: {
|
|
612
|
+
type: 'string'
|
|
613
|
+
}
|
|
614
|
+
}
|
|
615
|
+
}
|
|
616
|
+
},
|
|
617
|
+
quality_assess: {
|
|
618
|
+
name: 'quality_assess',
|
|
619
|
+
description: 'Quality assessment',
|
|
620
|
+
inputSchema: {
|
|
621
|
+
type: 'object',
|
|
622
|
+
properties: {
|
|
623
|
+
target: {
|
|
624
|
+
type: 'string'
|
|
625
|
+
},
|
|
626
|
+
criteria: {
|
|
627
|
+
type: 'array'
|
|
628
|
+
}
|
|
629
|
+
},
|
|
630
|
+
required: [
|
|
631
|
+
'target'
|
|
632
|
+
]
|
|
633
|
+
}
|
|
634
|
+
},
|
|
635
|
+
error_analysis: {
|
|
636
|
+
name: 'error_analysis',
|
|
637
|
+
description: 'Error pattern analysis',
|
|
638
|
+
inputSchema: {
|
|
639
|
+
type: 'object',
|
|
640
|
+
properties: {
|
|
641
|
+
logs: {
|
|
642
|
+
type: 'array'
|
|
643
|
+
}
|
|
644
|
+
}
|
|
645
|
+
}
|
|
646
|
+
},
|
|
647
|
+
usage_stats: {
|
|
648
|
+
name: 'usage_stats',
|
|
649
|
+
description: 'Usage statistics',
|
|
650
|
+
inputSchema: {
|
|
651
|
+
type: 'object',
|
|
652
|
+
properties: {
|
|
653
|
+
component: {
|
|
654
|
+
type: 'string'
|
|
655
|
+
}
|
|
656
|
+
}
|
|
657
|
+
}
|
|
658
|
+
},
|
|
659
|
+
health_check: {
|
|
660
|
+
name: 'health_check',
|
|
661
|
+
description: 'System health monitoring',
|
|
662
|
+
inputSchema: {
|
|
663
|
+
type: 'object',
|
|
664
|
+
properties: {
|
|
665
|
+
components: {
|
|
666
|
+
type: 'array'
|
|
667
|
+
}
|
|
668
|
+
}
|
|
669
|
+
}
|
|
670
|
+
},
|
|
671
|
+
// Additional Workflow Tools - DEPRECATED: Removed 9 workflow automation tools
|
|
672
|
+
// Tools removed: workflow_execute, workflow_export, automation_setup, pipeline_create,
|
|
673
|
+
// scheduler_manage, trigger_setup, workflow_template, batch_process, parallel_execute
|
|
674
|
+
// Retained: workflow_create (basic functionality)
|
|
675
|
+
// Rationale: Workflow execution integrated into task_orchestrate, reduces tool count
|
|
676
|
+
// GitHub Integration Tools
|
|
677
|
+
github_issue_track: {
|
|
678
|
+
name: 'github_issue_track',
|
|
679
|
+
description: 'Issue tracking & triage',
|
|
680
|
+
inputSchema: {
|
|
681
|
+
type: 'object',
|
|
682
|
+
properties: {
|
|
683
|
+
repo: {
|
|
684
|
+
type: 'string'
|
|
685
|
+
},
|
|
686
|
+
action: {
|
|
687
|
+
type: 'string'
|
|
688
|
+
}
|
|
689
|
+
},
|
|
690
|
+
required: [
|
|
691
|
+
'repo',
|
|
692
|
+
'action'
|
|
693
|
+
]
|
|
694
|
+
}
|
|
695
|
+
},
|
|
696
|
+
github_release_coord: {
|
|
697
|
+
name: 'github_release_coord',
|
|
698
|
+
description: 'Release coordination',
|
|
699
|
+
inputSchema: {
|
|
700
|
+
type: 'object',
|
|
701
|
+
properties: {
|
|
702
|
+
repo: {
|
|
703
|
+
type: 'string'
|
|
704
|
+
},
|
|
705
|
+
version: {
|
|
706
|
+
type: 'string'
|
|
707
|
+
}
|
|
708
|
+
},
|
|
709
|
+
required: [
|
|
710
|
+
'repo',
|
|
711
|
+
'version'
|
|
712
|
+
]
|
|
713
|
+
}
|
|
714
|
+
},
|
|
715
|
+
github_workflow_auto: {
|
|
716
|
+
name: 'github_workflow_auto',
|
|
717
|
+
description: 'Workflow automation',
|
|
718
|
+
inputSchema: {
|
|
719
|
+
type: 'object',
|
|
720
|
+
properties: {
|
|
721
|
+
repo: {
|
|
722
|
+
type: 'string'
|
|
723
|
+
},
|
|
724
|
+
workflow: {
|
|
725
|
+
type: 'object'
|
|
726
|
+
}
|
|
727
|
+
},
|
|
728
|
+
required: [
|
|
729
|
+
'repo',
|
|
730
|
+
'workflow'
|
|
731
|
+
]
|
|
732
|
+
}
|
|
733
|
+
},
|
|
734
|
+
github_code_review: {
|
|
735
|
+
name: 'github_code_review',
|
|
736
|
+
description: 'Automated code review',
|
|
737
|
+
inputSchema: {
|
|
738
|
+
type: 'object',
|
|
739
|
+
properties: {
|
|
740
|
+
repo: {
|
|
741
|
+
type: 'string'
|
|
742
|
+
},
|
|
743
|
+
pr: {
|
|
744
|
+
type: 'number'
|
|
745
|
+
}
|
|
746
|
+
},
|
|
747
|
+
required: [
|
|
748
|
+
'repo',
|
|
749
|
+
'pr'
|
|
750
|
+
]
|
|
751
|
+
}
|
|
752
|
+
},
|
|
753
|
+
github_sync_coord: {
|
|
754
|
+
name: 'github_sync_coord',
|
|
755
|
+
description: 'Multi-repo sync coordination',
|
|
756
|
+
inputSchema: {
|
|
757
|
+
type: 'object',
|
|
758
|
+
properties: {
|
|
759
|
+
repos: {
|
|
760
|
+
type: 'array'
|
|
761
|
+
}
|
|
762
|
+
},
|
|
763
|
+
required: [
|
|
764
|
+
'repos'
|
|
765
|
+
]
|
|
766
|
+
}
|
|
767
|
+
},
|
|
768
|
+
github_metrics: {
|
|
769
|
+
name: 'github_metrics',
|
|
770
|
+
description: 'Repository metrics',
|
|
771
|
+
inputSchema: {
|
|
772
|
+
type: 'object',
|
|
773
|
+
properties: {
|
|
774
|
+
repo: {
|
|
775
|
+
type: 'string'
|
|
776
|
+
}
|
|
777
|
+
},
|
|
778
|
+
required: [
|
|
779
|
+
'repo'
|
|
780
|
+
]
|
|
781
|
+
}
|
|
782
|
+
}
|
|
783
|
+
};
|
|
668
784
|
}
|
|
669
|
-
|
|
670
|
-
|
|
671
|
-
|
|
672
|
-
|
|
673
|
-
|
|
674
|
-
|
|
675
|
-
|
|
676
|
-
|
|
677
|
-
|
|
678
|
-
|
|
679
|
-
|
|
680
|
-
|
|
681
|
-
|
|
682
|
-
|
|
683
|
-
|
|
684
|
-
|
|
685
|
-
|
|
686
|
-
|
|
687
|
-
|
|
688
|
-
|
|
689
|
-
|
|
690
|
-
|
|
691
|
-
|
|
692
|
-
|
|
693
|
-
|
|
694
|
-
|
|
695
|
-
strategy: args.strategy || 'auto',
|
|
696
|
-
sessionId: this.sessionId,
|
|
697
|
-
createdBy: 'mcp-server',
|
|
698
|
-
}),
|
|
785
|
+
initializeResources() {
|
|
786
|
+
return {
|
|
787
|
+
'claude-flow://swarms': {
|
|
788
|
+
uri: 'claude-flow://swarms',
|
|
789
|
+
name: 'Active Swarms',
|
|
790
|
+
description: 'List of active swarm configurations and status',
|
|
791
|
+
mimeType: 'application/json'
|
|
792
|
+
},
|
|
793
|
+
'claude-flow://agents': {
|
|
794
|
+
uri: 'claude-flow://agents',
|
|
795
|
+
name: 'Agent Registry',
|
|
796
|
+
description: 'Registry of available agents and their capabilities',
|
|
797
|
+
mimeType: 'application/json'
|
|
798
|
+
},
|
|
799
|
+
'claude-flow://models': {
|
|
800
|
+
uri: 'claude-flow://models',
|
|
801
|
+
name: 'Neural Models',
|
|
802
|
+
description: 'Available neural network models and training status',
|
|
803
|
+
mimeType: 'application/json'
|
|
804
|
+
},
|
|
805
|
+
'claude-flow://performance': {
|
|
806
|
+
uri: 'claude-flow://performance',
|
|
807
|
+
name: 'Performance Metrics',
|
|
808
|
+
description: 'Real-time performance metrics and benchmarks',
|
|
809
|
+
mimeType: 'application/json'
|
|
810
|
+
}
|
|
699
811
|
};
|
|
700
|
-
|
|
701
|
-
|
|
812
|
+
}
|
|
813
|
+
async handleMessage(message) {
|
|
702
814
|
try {
|
|
703
|
-
|
|
704
|
-
|
|
705
|
-
|
|
706
|
-
|
|
707
|
-
|
|
708
|
-
|
|
709
|
-
|
|
710
|
-
|
|
711
|
-
|
|
712
|
-
|
|
713
|
-
|
|
815
|
+
const { id, method, params } = message;
|
|
816
|
+
switch(method){
|
|
817
|
+
case 'initialize':
|
|
818
|
+
return this.handleInitialize(id, params);
|
|
819
|
+
case 'tools/list':
|
|
820
|
+
return this.handleToolsList(id);
|
|
821
|
+
case 'tools/call':
|
|
822
|
+
return this.handleToolCall(id, params);
|
|
823
|
+
case 'resources/list':
|
|
824
|
+
return this.handleResourcesList(id);
|
|
825
|
+
case 'resources/read':
|
|
826
|
+
return this.handleResourceRead(id, params);
|
|
827
|
+
default:
|
|
828
|
+
return this.createErrorResponse(id, -32601, 'Method not found');
|
|
829
|
+
}
|
|
714
830
|
} catch (error) {
|
|
715
|
-
|
|
716
|
-
`[${new Date().toISOString()}] ERROR [claude-flow-mcp] Failed to persist swarm:`,
|
|
717
|
-
error,
|
|
718
|
-
);
|
|
831
|
+
return this.createErrorResponse(message.id, -32603, 'Internal error', error.message);
|
|
719
832
|
}
|
|
720
|
-
|
|
833
|
+
}
|
|
834
|
+
handleInitialize(id, params) {
|
|
835
|
+
console.error(`[${new Date().toISOString()}] INFO [claude-flow-mcp] (${this.sessionId}) 🔌 Connection established: ${this.sessionId}`);
|
|
721
836
|
return {
|
|
722
|
-
|
|
723
|
-
|
|
724
|
-
|
|
725
|
-
|
|
726
|
-
|
|
727
|
-
|
|
728
|
-
|
|
729
|
-
|
|
837
|
+
jsonrpc: '2.0',
|
|
838
|
+
id,
|
|
839
|
+
result: {
|
|
840
|
+
protocolVersion: '2024-11-05',
|
|
841
|
+
capabilities: this.capabilities,
|
|
842
|
+
serverInfo: {
|
|
843
|
+
name: 'claude-flow',
|
|
844
|
+
version: this.version
|
|
845
|
+
}
|
|
846
|
+
}
|
|
730
847
|
};
|
|
731
|
-
|
|
732
|
-
|
|
733
|
-
const
|
|
734
|
-
|
|
735
|
-
|
|
736
|
-
|
|
737
|
-
|
|
738
|
-
|
|
739
|
-
|
|
740
|
-
status: 'active',
|
|
741
|
-
capabilities: JSON.stringify(args.capabilities || []),
|
|
742
|
-
metadata: JSON.stringify({
|
|
743
|
-
sessionId: this.sessionId,
|
|
744
|
-
createdBy: 'mcp-server',
|
|
745
|
-
spawnedAt: new Date().toISOString(),
|
|
746
|
-
}),
|
|
848
|
+
}
|
|
849
|
+
handleToolsList(id) {
|
|
850
|
+
const toolsList = Object.values(this.tools);
|
|
851
|
+
return {
|
|
852
|
+
jsonrpc: '2.0',
|
|
853
|
+
id,
|
|
854
|
+
result: {
|
|
855
|
+
tools: toolsList
|
|
856
|
+
}
|
|
747
857
|
};
|
|
748
|
-
|
|
749
|
-
|
|
858
|
+
}
|
|
859
|
+
async handleToolCall(id, params) {
|
|
860
|
+
const { name, arguments: args } = params;
|
|
861
|
+
console.error(`[${new Date().toISOString()}] INFO [claude-flow-mcp] (${this.sessionId}) 🔧 Tool called: ${name}`);
|
|
750
862
|
try {
|
|
751
|
-
|
|
752
|
-
|
|
753
|
-
|
|
754
|
-
|
|
755
|
-
|
|
756
|
-
|
|
757
|
-
|
|
758
|
-
|
|
759
|
-
|
|
760
|
-
|
|
761
|
-
|
|
762
|
-
|
|
763
|
-
|
|
764
|
-
console.error(
|
|
765
|
-
`[${new Date().toISOString()}] INFO [claude-flow-mcp] Agent persisted to memory: ${agentId}`,
|
|
766
|
-
);
|
|
863
|
+
const result = await this.executeTool(name, args);
|
|
864
|
+
return {
|
|
865
|
+
jsonrpc: '2.0',
|
|
866
|
+
id,
|
|
867
|
+
result: {
|
|
868
|
+
content: [
|
|
869
|
+
{
|
|
870
|
+
type: 'text',
|
|
871
|
+
text: JSON.stringify(result, null, 2)
|
|
872
|
+
}
|
|
873
|
+
]
|
|
874
|
+
}
|
|
875
|
+
};
|
|
767
876
|
} catch (error) {
|
|
768
|
-
|
|
769
|
-
`[${new Date().toISOString()}] ERROR [claude-flow-mcp] Failed to persist agent:`,
|
|
770
|
-
error,
|
|
771
|
-
);
|
|
877
|
+
return this.createErrorResponse(id, -32000, 'Tool execution failed', error.message);
|
|
772
878
|
}
|
|
773
|
-
|
|
774
|
-
|
|
775
|
-
|
|
776
|
-
global.agentTracker.trackAgent(agentId, {
|
|
777
|
-
...agentData,
|
|
778
|
-
capabilities: args.capabilities || [],
|
|
779
|
-
});
|
|
780
|
-
}
|
|
781
|
-
|
|
782
|
-
return {
|
|
783
|
-
success: true,
|
|
784
|
-
agentId: agentId,
|
|
785
|
-
type: args.type,
|
|
786
|
-
name: agentData.name,
|
|
787
|
-
status: 'active',
|
|
788
|
-
capabilities: args.capabilities || [],
|
|
789
|
-
persisted: !!this.databaseManager,
|
|
790
|
-
timestamp: new Date().toISOString(),
|
|
791
|
-
};
|
|
792
|
-
|
|
793
|
-
case 'neural_train':
|
|
794
|
-
const epochs = args.epochs || 50;
|
|
795
|
-
const baseAccuracy = 0.65;
|
|
796
|
-
const maxAccuracy = 0.98;
|
|
797
|
-
|
|
798
|
-
// Realistic training progression: more epochs = better accuracy but with diminishing returns
|
|
799
|
-
const epochFactor = Math.min(epochs / 100, 10); // Normalize epochs
|
|
800
|
-
const accuracyGain = (maxAccuracy - baseAccuracy) * (1 - Math.exp(-epochFactor / 3));
|
|
801
|
-
const finalAccuracy = baseAccuracy + accuracyGain + (Math.random() * 0.05 - 0.025); // Add some noise
|
|
802
|
-
|
|
803
|
-
// Training time increases with epochs but not linearly (parallel processing)
|
|
804
|
-
const baseTime = 2;
|
|
805
|
-
const timePerEpoch = 0.08;
|
|
806
|
-
const trainingTime = baseTime + epochs * timePerEpoch + (Math.random() * 2 - 1);
|
|
807
|
-
|
|
808
|
-
return {
|
|
809
|
-
success: true,
|
|
810
|
-
modelId: `model_${args.pattern_type || 'general'}_${Date.now()}`,
|
|
811
|
-
pattern_type: args.pattern_type || 'coordination',
|
|
812
|
-
epochs: epochs,
|
|
813
|
-
accuracy: Math.min(finalAccuracy, maxAccuracy),
|
|
814
|
-
training_time: Math.max(trainingTime, 1),
|
|
815
|
-
status: 'completed',
|
|
816
|
-
improvement_rate: epochFactor > 1 ? 'converged' : 'improving',
|
|
817
|
-
data_source: args.training_data || 'recent',
|
|
818
|
-
timestamp: new Date().toISOString(),
|
|
819
|
-
};
|
|
820
|
-
|
|
821
|
-
case 'memory_usage':
|
|
822
|
-
return await this.handleMemoryUsage(args);
|
|
823
|
-
|
|
824
|
-
case 'performance_report':
|
|
879
|
+
}
|
|
880
|
+
handleResourcesList(id) {
|
|
881
|
+
const resourcesList = Object.values(this.resources);
|
|
825
882
|
return {
|
|
826
|
-
|
|
827
|
-
|
|
828
|
-
|
|
829
|
-
|
|
830
|
-
|
|
831
|
-
success_rate: Math.random() * 0.2 + 0.8,
|
|
832
|
-
avg_execution_time: Math.random() * 10 + 5,
|
|
833
|
-
agents_spawned: Math.floor(Math.random() * 50) + 10,
|
|
834
|
-
memory_efficiency: Math.random() * 0.3 + 0.7,
|
|
835
|
-
neural_events: Math.floor(Math.random() * 100) + 20,
|
|
836
|
-
},
|
|
837
|
-
timestamp: new Date().toISOString(),
|
|
883
|
+
jsonrpc: '2.0',
|
|
884
|
+
id,
|
|
885
|
+
result: {
|
|
886
|
+
resources: resourcesList
|
|
887
|
+
}
|
|
838
888
|
};
|
|
839
|
-
|
|
840
|
-
|
|
841
|
-
|
|
842
|
-
|
|
843
|
-
|
|
844
|
-
|
|
845
|
-
case 'agent_list':
|
|
846
|
-
// First check agent tracker for real-time data
|
|
847
|
-
if (global.agentTracker) {
|
|
848
|
-
const swarmId = args.swarmId || (await this.getActiveSwarmId());
|
|
849
|
-
const trackedAgents = global.agentTracker.getAgents(swarmId);
|
|
850
|
-
|
|
851
|
-
if (trackedAgents.length > 0) {
|
|
889
|
+
}
|
|
890
|
+
async handleResourceRead(id, params) {
|
|
891
|
+
const { uri } = params;
|
|
892
|
+
try {
|
|
893
|
+
const content = await this.readResource(uri);
|
|
852
894
|
return {
|
|
853
|
-
|
|
854
|
-
|
|
855
|
-
|
|
856
|
-
|
|
857
|
-
|
|
895
|
+
jsonrpc: '2.0',
|
|
896
|
+
id,
|
|
897
|
+
result: {
|
|
898
|
+
contents: [
|
|
899
|
+
{
|
|
900
|
+
uri,
|
|
901
|
+
mimeType: 'application/json',
|
|
902
|
+
text: JSON.stringify(content, null, 2)
|
|
903
|
+
}
|
|
904
|
+
]
|
|
905
|
+
}
|
|
858
906
|
};
|
|
859
|
-
|
|
907
|
+
} catch (error) {
|
|
908
|
+
return this.createErrorResponse(id, -32000, 'Resource read failed', error.message);
|
|
860
909
|
}
|
|
861
|
-
|
|
862
|
-
|
|
863
|
-
|
|
864
|
-
|
|
865
|
-
|
|
866
|
-
|
|
910
|
+
}
|
|
911
|
+
async executeTool(name, args) {
|
|
912
|
+
// Simulate tool execution based on the tool name
|
|
913
|
+
switch(name){
|
|
914
|
+
case 'swarm_init':
|
|
915
|
+
const swarmId = `swarm_${Date.now()}_${Math.random().toString(36).substr(2, 9)}`;
|
|
916
|
+
// Track swarm creation
|
|
917
|
+
if (global.agentTracker) {
|
|
918
|
+
global.agentTracker.trackSwarm(swarmId, {
|
|
919
|
+
topology: args.topology || 'mesh',
|
|
920
|
+
maxAgents: args.maxAgents || 5,
|
|
921
|
+
strategy: args.strategy || 'balanced'
|
|
922
|
+
});
|
|
923
|
+
}
|
|
924
|
+
const swarmData = {
|
|
925
|
+
id: swarmId,
|
|
926
|
+
name: `Swarm-${new Date().toISOString().split('T')[0]}`,
|
|
927
|
+
topology: args.topology || 'hierarchical',
|
|
928
|
+
queenMode: 'collaborative',
|
|
929
|
+
maxAgents: args.maxAgents || 8,
|
|
930
|
+
consensusThreshold: 0.7,
|
|
931
|
+
memoryTTL: 86400,
|
|
932
|
+
config: JSON.stringify({
|
|
933
|
+
strategy: args.strategy || 'auto',
|
|
934
|
+
sessionId: this.sessionId,
|
|
935
|
+
createdBy: 'mcp-server'
|
|
936
|
+
})
|
|
937
|
+
};
|
|
938
|
+
// Store swarm data in memory store (same as npx commands)
|
|
939
|
+
try {
|
|
940
|
+
await this.memoryStore.store(`swarm:${swarmId}`, JSON.stringify(swarmData), {
|
|
941
|
+
namespace: 'swarms',
|
|
942
|
+
metadata: {
|
|
943
|
+
type: 'swarm_data',
|
|
944
|
+
sessionId: this.sessionId
|
|
945
|
+
}
|
|
946
|
+
});
|
|
947
|
+
await this.memoryStore.store('active_swarm', swarmId, {
|
|
948
|
+
namespace: 'system',
|
|
949
|
+
metadata: {
|
|
950
|
+
type: 'active_swarm',
|
|
951
|
+
sessionId: this.sessionId
|
|
952
|
+
}
|
|
953
|
+
});
|
|
954
|
+
console.error(`[${new Date().toISOString()}] INFO [claude-flow-mcp] Swarm persisted to memory: ${swarmId}`);
|
|
955
|
+
} catch (error) {
|
|
956
|
+
console.error(`[${new Date().toISOString()}] ERROR [claude-flow-mcp] Failed to persist swarm:`, error);
|
|
957
|
+
}
|
|
958
|
+
return {
|
|
959
|
+
success: true,
|
|
960
|
+
swarmId: swarmId,
|
|
961
|
+
topology: swarmData.topology,
|
|
962
|
+
maxAgents: swarmData.maxAgents,
|
|
963
|
+
strategy: args.strategy || 'auto',
|
|
964
|
+
status: 'initialized',
|
|
965
|
+
persisted: !!this.databaseManager,
|
|
966
|
+
timestamp: new Date().toISOString()
|
|
967
|
+
};
|
|
968
|
+
case 'agent_spawn':
|
|
969
|
+
const agentId = `agent_${Date.now()}_${Math.random().toString(36).substr(2, 6)}`;
|
|
970
|
+
const resolvedType = resolveLegacyAgentType(args.type);
|
|
971
|
+
const agentData = {
|
|
972
|
+
id: agentId,
|
|
973
|
+
swarmId: args.swarmId || await this.getActiveSwarmId(),
|
|
974
|
+
name: args.name || `${resolvedType}-${Date.now()}`,
|
|
975
|
+
type: resolvedType,
|
|
976
|
+
status: 'active',
|
|
977
|
+
capabilities: JSON.stringify(args.capabilities || []),
|
|
978
|
+
metadata: JSON.stringify({
|
|
979
|
+
sessionId: this.sessionId,
|
|
980
|
+
createdBy: 'mcp-server',
|
|
981
|
+
spawnedAt: new Date().toISOString()
|
|
982
|
+
})
|
|
983
|
+
};
|
|
984
|
+
// Store agent data in memory store (same as npx commands)
|
|
985
|
+
try {
|
|
986
|
+
const swarmId = agentData.swarmId || await this.getActiveSwarmId();
|
|
987
|
+
if (swarmId) {
|
|
988
|
+
await this.memoryStore.store(`agent:${swarmId}:${agentId}`, JSON.stringify(agentData), {
|
|
989
|
+
namespace: 'agents',
|
|
990
|
+
metadata: {
|
|
991
|
+
type: 'agent_data',
|
|
992
|
+
swarmId: swarmId,
|
|
993
|
+
sessionId: this.sessionId
|
|
994
|
+
}
|
|
995
|
+
});
|
|
996
|
+
} else {
|
|
997
|
+
// Fallback to old format if no swarm ID
|
|
998
|
+
await this.memoryStore.store(`agent:${agentId}`, JSON.stringify(agentData), {
|
|
999
|
+
namespace: 'agents',
|
|
1000
|
+
metadata: {
|
|
1001
|
+
type: 'agent_data',
|
|
1002
|
+
sessionId: this.sessionId
|
|
1003
|
+
}
|
|
1004
|
+
});
|
|
1005
|
+
}
|
|
1006
|
+
console.error(`[${new Date().toISOString()}] INFO [claude-flow-mcp] Agent persisted to memory: ${agentId}`);
|
|
1007
|
+
} catch (error) {
|
|
1008
|
+
console.error(`[${new Date().toISOString()}] ERROR [claude-flow-mcp] Failed to persist agent:`, error);
|
|
1009
|
+
}
|
|
1010
|
+
// Track spawned agent
|
|
1011
|
+
if (global.agentTracker) {
|
|
1012
|
+
global.agentTracker.trackAgent(agentId, {
|
|
1013
|
+
...agentData,
|
|
1014
|
+
capabilities: args.capabilities || []
|
|
1015
|
+
});
|
|
1016
|
+
}
|
|
1017
|
+
return {
|
|
1018
|
+
success: true,
|
|
1019
|
+
agentId: agentId,
|
|
1020
|
+
type: args.type,
|
|
1021
|
+
name: agentData.name,
|
|
1022
|
+
status: 'active',
|
|
1023
|
+
capabilities: args.capabilities || [],
|
|
1024
|
+
persisted: !!this.databaseManager,
|
|
1025
|
+
timestamp: new Date().toISOString()
|
|
1026
|
+
};
|
|
1027
|
+
case 'neural_train':
|
|
1028
|
+
const epochs = args.epochs || 50;
|
|
1029
|
+
const baseAccuracy = 0.65;
|
|
1030
|
+
const maxAccuracy = 0.98;
|
|
1031
|
+
// Realistic training progression: more epochs = better accuracy but with diminishing returns
|
|
1032
|
+
const epochFactor = Math.min(epochs / 100, 10); // Normalize epochs
|
|
1033
|
+
const accuracyGain = (maxAccuracy - baseAccuracy) * (1 - Math.exp(-epochFactor / 3));
|
|
1034
|
+
const finalAccuracy = baseAccuracy + accuracyGain + (Math.random() * 0.05 - 0.025); // Add some noise
|
|
1035
|
+
// Training time increases with epochs but not linearly (parallel processing)
|
|
1036
|
+
const baseTime = 2;
|
|
1037
|
+
const timePerEpoch = 0.08;
|
|
1038
|
+
const trainingTime = baseTime + epochs * timePerEpoch + (Math.random() * 2 - 1);
|
|
1039
|
+
return {
|
|
1040
|
+
success: true,
|
|
1041
|
+
modelId: `model_${args.pattern_type || 'general'}_${Date.now()}`,
|
|
1042
|
+
pattern_type: args.pattern_type || 'coordination',
|
|
1043
|
+
epochs: epochs,
|
|
1044
|
+
accuracy: Math.min(finalAccuracy, maxAccuracy),
|
|
1045
|
+
training_time: Math.max(trainingTime, 1),
|
|
1046
|
+
status: 'completed',
|
|
1047
|
+
improvement_rate: epochFactor > 1 ? 'converged' : 'improving',
|
|
1048
|
+
data_source: args.training_data || 'recent',
|
|
1049
|
+
timestamp: new Date().toISOString()
|
|
1050
|
+
};
|
|
1051
|
+
case 'memory_usage':
|
|
1052
|
+
return await this.handleMemoryUsage(args);
|
|
1053
|
+
case 'performance_report':
|
|
1054
|
+
return {
|
|
1055
|
+
success: true,
|
|
1056
|
+
timeframe: args.timeframe || '24h',
|
|
1057
|
+
format: args.format || 'summary',
|
|
1058
|
+
metrics: {
|
|
1059
|
+
tasks_executed: Math.floor(Math.random() * 200) + 50,
|
|
1060
|
+
success_rate: Math.random() * 0.2 + 0.8,
|
|
1061
|
+
avg_execution_time: Math.random() * 10 + 5,
|
|
1062
|
+
agents_spawned: Math.floor(Math.random() * 50) + 10,
|
|
1063
|
+
memory_efficiency: Math.random() * 0.3 + 0.7,
|
|
1064
|
+
neural_events: Math.floor(Math.random() * 100) + 20
|
|
1065
|
+
},
|
|
1066
|
+
timestamp: new Date().toISOString()
|
|
1067
|
+
};
|
|
1068
|
+
// DEPRECATED: Enhanced Neural Tools - Handlers removed for 10 deprecated neural tools
|
|
1069
|
+
// Removed cases: model_save, model_load, neural_predict, pattern_recognize, cognitive_analyze,
|
|
1070
|
+
// learning_adapt, neural_compress, ensemble_create, transfer_learn, neural_explain
|
|
1071
|
+
// Rationale: Complexity reduction, functionality available via plugin architecture
|
|
1072
|
+
case 'agent_list':
|
|
1073
|
+
// First check agent tracker for real-time data
|
|
1074
|
+
if (global.agentTracker) {
|
|
1075
|
+
const swarmId = args.swarmId || await this.getActiveSwarmId();
|
|
1076
|
+
const trackedAgents = global.agentTracker.getAgents(swarmId);
|
|
1077
|
+
if (trackedAgents.length > 0) {
|
|
1078
|
+
return {
|
|
1079
|
+
success: true,
|
|
1080
|
+
swarmId: swarmId || 'dynamic',
|
|
1081
|
+
agents: trackedAgents,
|
|
1082
|
+
count: trackedAgents.length,
|
|
1083
|
+
timestamp: new Date().toISOString()
|
|
1084
|
+
};
|
|
1085
|
+
}
|
|
1086
|
+
}
|
|
1087
|
+
if (this.databaseManager) {
|
|
1088
|
+
try {
|
|
1089
|
+
const swarmId = args.swarmId || await this.getActiveSwarmId();
|
|
1090
|
+
if (!swarmId) {
|
|
1091
|
+
return {
|
|
1092
|
+
success: false,
|
|
1093
|
+
error: 'No active swarm found',
|
|
1094
|
+
agents: [],
|
|
1095
|
+
timestamp: new Date().toISOString()
|
|
1096
|
+
};
|
|
1097
|
+
}
|
|
1098
|
+
const agents = await this.databaseManager.getAgents(swarmId);
|
|
1099
|
+
return {
|
|
1100
|
+
success: true,
|
|
1101
|
+
swarmId: swarmId,
|
|
1102
|
+
agents: agents.map((agent)=>({
|
|
1103
|
+
id: agent.id,
|
|
1104
|
+
name: agent.name,
|
|
1105
|
+
type: agent.type,
|
|
1106
|
+
status: agent.status,
|
|
1107
|
+
capabilities: JSON.parse(agent.capabilities || '[]'),
|
|
1108
|
+
created: agent.created_at,
|
|
1109
|
+
lastActive: agent.last_active_at
|
|
1110
|
+
})),
|
|
1111
|
+
count: agents.length,
|
|
1112
|
+
timestamp: new Date().toISOString()
|
|
1113
|
+
};
|
|
1114
|
+
} catch (error) {
|
|
1115
|
+
console.error(`[${new Date().toISOString()}] ERROR [claude-flow-mcp] Failed to list agents:`, error);
|
|
1116
|
+
return {
|
|
1117
|
+
success: false,
|
|
1118
|
+
error: error.message,
|
|
1119
|
+
agents: [],
|
|
1120
|
+
timestamp: new Date().toISOString()
|
|
1121
|
+
};
|
|
1122
|
+
}
|
|
1123
|
+
}
|
|
1124
|
+
// Fallback mock response
|
|
1125
|
+
return {
|
|
1126
|
+
success: true,
|
|
1127
|
+
swarmId: args.swarmId || 'mock-swarm',
|
|
1128
|
+
agents: [
|
|
1129
|
+
{
|
|
1130
|
+
id: 'agent-1',
|
|
1131
|
+
name: 'coordinator-1',
|
|
1132
|
+
type: 'coordinator',
|
|
1133
|
+
status: 'active',
|
|
1134
|
+
capabilities: []
|
|
1135
|
+
},
|
|
1136
|
+
{
|
|
1137
|
+
id: 'agent-2',
|
|
1138
|
+
name: 'researcher-1',
|
|
1139
|
+
type: 'researcher',
|
|
1140
|
+
status: 'active',
|
|
1141
|
+
capabilities: []
|
|
1142
|
+
},
|
|
1143
|
+
{
|
|
1144
|
+
id: 'agent-3',
|
|
1145
|
+
name: 'coder-1',
|
|
1146
|
+
type: 'coder',
|
|
1147
|
+
status: 'busy',
|
|
1148
|
+
capabilities: []
|
|
1149
|
+
}
|
|
1150
|
+
],
|
|
1151
|
+
count: 3,
|
|
1152
|
+
timestamp: new Date().toISOString()
|
|
1153
|
+
};
|
|
1154
|
+
case 'swarm_status':
|
|
1155
|
+
try {
|
|
1156
|
+
// Get active swarm ID from memory store
|
|
1157
|
+
let swarmId = args.swarmId;
|
|
1158
|
+
if (!swarmId) {
|
|
1159
|
+
swarmId = await this.memoryStore.retrieve('active_swarm', {
|
|
1160
|
+
namespace: 'system'
|
|
1161
|
+
});
|
|
1162
|
+
}
|
|
1163
|
+
if (!swarmId) {
|
|
1164
|
+
return {
|
|
1165
|
+
success: false,
|
|
1166
|
+
error: 'No active swarm found',
|
|
1167
|
+
timestamp: new Date().toISOString()
|
|
1168
|
+
};
|
|
1169
|
+
}
|
|
1170
|
+
// Check agent tracker for real counts
|
|
1171
|
+
if (global.agentTracker) {
|
|
1172
|
+
const status = global.agentTracker.getSwarmStatus(swarmId);
|
|
1173
|
+
if (status.agentCount > 0) {
|
|
1174
|
+
const swarmDataRaw = await this.memoryStore.retrieve(`swarm:${swarmId}`, {
|
|
1175
|
+
namespace: 'swarms'
|
|
1176
|
+
});
|
|
1177
|
+
const swarm = swarmDataRaw ? typeof swarmDataRaw === 'string' ? JSON.parse(swarmDataRaw) : swarmDataRaw : {};
|
|
1178
|
+
return {
|
|
1179
|
+
success: true,
|
|
1180
|
+
swarmId: swarmId,
|
|
1181
|
+
topology: swarm.topology || 'mesh',
|
|
1182
|
+
agentCount: status.agentCount,
|
|
1183
|
+
activeAgents: status.activeAgents,
|
|
1184
|
+
taskCount: status.taskCount,
|
|
1185
|
+
pendingTasks: status.pendingTasks,
|
|
1186
|
+
completedTasks: status.completedTasks,
|
|
1187
|
+
timestamp: new Date().toISOString()
|
|
1188
|
+
};
|
|
1189
|
+
}
|
|
1190
|
+
}
|
|
1191
|
+
// Retrieve swarm data from memory store
|
|
1192
|
+
const swarmDataRaw = await this.memoryStore.retrieve(`swarm:${swarmId}`, {
|
|
1193
|
+
namespace: 'swarms'
|
|
1194
|
+
});
|
|
1195
|
+
if (!swarmDataRaw) {
|
|
1196
|
+
return {
|
|
1197
|
+
success: false,
|
|
1198
|
+
error: `Swarm ${swarmId} not found`,
|
|
1199
|
+
timestamp: new Date().toISOString()
|
|
1200
|
+
};
|
|
1201
|
+
}
|
|
1202
|
+
const swarm = typeof swarmDataRaw === 'string' ? JSON.parse(swarmDataRaw) : swarmDataRaw;
|
|
1203
|
+
// Retrieve agents from memory
|
|
1204
|
+
const agentsData = await this.memoryStore.list({
|
|
1205
|
+
namespace: 'agents',
|
|
1206
|
+
limit: 100
|
|
1207
|
+
});
|
|
1208
|
+
// Filter agents for this swarm
|
|
1209
|
+
const swarmAgents = agentsData.filter((entry)=>entry.key.startsWith(`agent:${swarmId}:`)).map((entry)=>{
|
|
1210
|
+
try {
|
|
1211
|
+
return JSON.parse(entry.value);
|
|
1212
|
+
} catch (e) {
|
|
1213
|
+
return null;
|
|
1214
|
+
}
|
|
1215
|
+
}).filter((agent)=>agent !== null);
|
|
1216
|
+
// Retrieve tasks from memory
|
|
1217
|
+
const tasksData = await this.memoryStore.list({
|
|
1218
|
+
namespace: 'tasks',
|
|
1219
|
+
limit: 100
|
|
1220
|
+
});
|
|
1221
|
+
// Filter tasks for this swarm
|
|
1222
|
+
const swarmTasks = tasksData.filter((entry)=>entry.key.startsWith(`task:${swarmId}:`)).map((entry)=>{
|
|
1223
|
+
try {
|
|
1224
|
+
return JSON.parse(entry.value);
|
|
1225
|
+
} catch (e) {
|
|
1226
|
+
return null;
|
|
1227
|
+
}
|
|
1228
|
+
}).filter((task)=>task !== null);
|
|
1229
|
+
// Calculate stats
|
|
1230
|
+
const activeAgents = swarmAgents.filter((a)=>a.status === 'active' || a.status === 'busy').length;
|
|
1231
|
+
const pendingTasks = swarmTasks.filter((t)=>t.status === 'pending').length;
|
|
1232
|
+
const completedTasks = swarmTasks.filter((t)=>t.status === 'completed').length;
|
|
1233
|
+
const response = {
|
|
1234
|
+
success: true,
|
|
1235
|
+
swarmId: swarmId,
|
|
1236
|
+
topology: swarm.topology || 'hierarchical',
|
|
1237
|
+
agentCount: swarmAgents.length,
|
|
1238
|
+
activeAgents: activeAgents,
|
|
1239
|
+
taskCount: swarmTasks.length,
|
|
1240
|
+
pendingTasks: pendingTasks,
|
|
1241
|
+
completedTasks: completedTasks,
|
|
1242
|
+
timestamp: new Date().toISOString()
|
|
1243
|
+
};
|
|
1244
|
+
// Add verbose details if requested
|
|
1245
|
+
if (args.verbose === true || args.verbose === 'true') {
|
|
1246
|
+
response.agents = swarmAgents;
|
|
1247
|
+
response.tasks = swarmTasks;
|
|
1248
|
+
response.swarmDetails = swarm;
|
|
1249
|
+
}
|
|
1250
|
+
return response;
|
|
1251
|
+
} catch (error) {
|
|
1252
|
+
console.error(`[${new Date().toISOString()}] ERROR [claude-flow-mcp] Failed to get swarm status:`, error);
|
|
1253
|
+
// Return a more informative fallback response
|
|
1254
|
+
return {
|
|
1255
|
+
success: false,
|
|
1256
|
+
error: error.message || 'Failed to retrieve swarm status',
|
|
1257
|
+
swarmId: args.swarmId || 'unknown',
|
|
1258
|
+
topology: 'unknown',
|
|
1259
|
+
agentCount: 0,
|
|
1260
|
+
activeAgents: 0,
|
|
1261
|
+
taskCount: 0,
|
|
1262
|
+
pendingTasks: 0,
|
|
1263
|
+
completedTasks: 0,
|
|
1264
|
+
timestamp: new Date().toISOString()
|
|
1265
|
+
};
|
|
1266
|
+
}
|
|
1267
|
+
case 'task_orchestrate':
|
|
1268
|
+
const taskId = `task_${Date.now()}_${Math.random().toString(36).substr(2, 9)}`;
|
|
1269
|
+
// Track task creation
|
|
1270
|
+
if (global.agentTracker) {
|
|
1271
|
+
global.agentTracker.trackTask(taskId, {
|
|
1272
|
+
task: args.task,
|
|
1273
|
+
strategy: args.strategy || 'parallel',
|
|
1274
|
+
priority: args.priority || 'medium',
|
|
1275
|
+
status: 'pending',
|
|
1276
|
+
swarmId: args.swarmId
|
|
1277
|
+
});
|
|
1278
|
+
}
|
|
1279
|
+
const swarmIdForTask = args.swarmId || await this.getActiveSwarmId();
|
|
1280
|
+
const taskData = {
|
|
1281
|
+
id: taskId,
|
|
1282
|
+
swarmId: swarmIdForTask,
|
|
1283
|
+
description: args.task,
|
|
1284
|
+
priority: args.priority || 'medium',
|
|
1285
|
+
strategy: args.strategy || 'auto',
|
|
1286
|
+
status: 'pending',
|
|
1287
|
+
dependencies: JSON.stringify(args.dependencies || []),
|
|
1288
|
+
assignedAgents: JSON.stringify([]),
|
|
1289
|
+
requireConsensus: false,
|
|
1290
|
+
maxAgents: 5,
|
|
1291
|
+
requiredCapabilities: JSON.stringify([]),
|
|
1292
|
+
metadata: JSON.stringify({
|
|
1293
|
+
sessionId: this.sessionId,
|
|
1294
|
+
createdBy: 'mcp-server',
|
|
1295
|
+
orchestratedAt: new Date().toISOString()
|
|
1296
|
+
})
|
|
1297
|
+
};
|
|
1298
|
+
// Store task data in memory store
|
|
1299
|
+
try {
|
|
1300
|
+
if (swarmIdForTask) {
|
|
1301
|
+
await this.memoryStore.store(`task:${swarmIdForTask}:${taskId}`, JSON.stringify(taskData), {
|
|
1302
|
+
namespace: 'tasks',
|
|
1303
|
+
metadata: {
|
|
1304
|
+
type: 'task_data',
|
|
1305
|
+
swarmId: swarmIdForTask,
|
|
1306
|
+
sessionId: this.sessionId
|
|
1307
|
+
}
|
|
1308
|
+
});
|
|
1309
|
+
console.error(`[${new Date().toISOString()}] INFO [claude-flow-mcp] Task persisted to memory: ${taskId}`);
|
|
1310
|
+
}
|
|
1311
|
+
} catch (error) {
|
|
1312
|
+
console.error(`[${new Date().toISOString()}] ERROR [claude-flow-mcp] Failed to persist task:`, error);
|
|
1313
|
+
}
|
|
1314
|
+
return {
|
|
1315
|
+
success: true,
|
|
1316
|
+
taskId: taskId,
|
|
1317
|
+
task: args.task,
|
|
1318
|
+
strategy: taskData.strategy,
|
|
1319
|
+
priority: taskData.priority,
|
|
1320
|
+
status: 'pending',
|
|
1321
|
+
persisted: true,
|
|
1322
|
+
timestamp: new Date().toISOString()
|
|
1323
|
+
};
|
|
1324
|
+
// DEPRECATED: DAA Tools Implementation - Handlers removed for 6 deprecated DAA tools
|
|
1325
|
+
// Removed cases: daa_agent_create, daa_capability_match, daa_resource_alloc,
|
|
1326
|
+
// daa_lifecycle_manage, daa_communication, daa_consensus
|
|
1327
|
+
// Rationale: DAA functionality consolidated into core swarm tools
|
|
1328
|
+
// Note: DAA implementation files (daa-tools.js) retained for backward compatibility
|
|
1329
|
+
// Workflow Tools Implementation
|
|
1330
|
+
case 'workflow_create':
|
|
1331
|
+
if (global.workflowManager) {
|
|
1332
|
+
return global.workflowManager.workflow_create(args);
|
|
1333
|
+
}
|
|
1334
|
+
return {
|
|
1335
|
+
success: false,
|
|
1336
|
+
error: 'Workflow manager not initialized',
|
|
1337
|
+
timestamp: new Date().toISOString()
|
|
1338
|
+
};
|
|
1339
|
+
// DEPRECATED: Workflow Execution Tools - Handlers removed for 5 deprecated workflow tools
|
|
1340
|
+
// Removed cases: workflow_execute, parallel_execute, batch_process, workflow_export, workflow_template
|
|
1341
|
+
// Retained: workflow_create (basic functionality)
|
|
1342
|
+
// Rationale: Workflow execution integrated into task_orchestrate
|
|
1343
|
+
// Note: Workflow implementation files (workflow-tools.js) retained for backward compatibility
|
|
1344
|
+
// Performance Tools Implementation
|
|
1345
|
+
case 'performance_report':
|
|
1346
|
+
if (global.performanceMonitor) {
|
|
1347
|
+
return global.performanceMonitor.performance_report(args);
|
|
1348
|
+
}
|
|
1349
|
+
return {
|
|
1350
|
+
success: false,
|
|
1351
|
+
error: 'Performance monitor not initialized',
|
|
1352
|
+
timestamp: new Date().toISOString()
|
|
1353
|
+
};
|
|
1354
|
+
case 'bottleneck_analyze':
|
|
1355
|
+
if (global.performanceMonitor) {
|
|
1356
|
+
return global.performanceMonitor.bottleneck_analyze(args);
|
|
1357
|
+
}
|
|
1358
|
+
return {
|
|
1359
|
+
success: false,
|
|
1360
|
+
error: 'Performance monitor not initialized',
|
|
1361
|
+
timestamp: new Date().toISOString()
|
|
1362
|
+
};
|
|
1363
|
+
case 'memory_analytics':
|
|
1364
|
+
if (global.performanceMonitor) {
|
|
1365
|
+
return global.performanceMonitor.memory_analytics(args);
|
|
1366
|
+
}
|
|
1367
|
+
return {
|
|
1368
|
+
success: false,
|
|
1369
|
+
error: 'Performance monitor not initialized',
|
|
1370
|
+
timestamp: new Date().toISOString()
|
|
1371
|
+
};
|
|
1372
|
+
default:
|
|
1373
|
+
return {
|
|
1374
|
+
success: true,
|
|
1375
|
+
tool: name,
|
|
1376
|
+
message: `Tool ${name} executed successfully`,
|
|
1377
|
+
args: args,
|
|
1378
|
+
timestamp: new Date().toISOString()
|
|
1379
|
+
};
|
|
1380
|
+
}
|
|
1381
|
+
}
|
|
1382
|
+
async readResource(uri) {
|
|
1383
|
+
switch(uri){
|
|
1384
|
+
case 'claude-flow://swarms':
|
|
1385
|
+
return {
|
|
1386
|
+
active_swarms: 3,
|
|
1387
|
+
total_agents: 15,
|
|
1388
|
+
topologies: [
|
|
1389
|
+
'hierarchical',
|
|
1390
|
+
'mesh',
|
|
1391
|
+
'ring',
|
|
1392
|
+
'star'
|
|
1393
|
+
],
|
|
1394
|
+
performance: '2.8-4.4x speedup'
|
|
1395
|
+
};
|
|
1396
|
+
case 'claude-flow://agents':
|
|
1397
|
+
return {
|
|
1398
|
+
total_agents: 8,
|
|
1399
|
+
types: [
|
|
1400
|
+
'researcher',
|
|
1401
|
+
'coder',
|
|
1402
|
+
'analyst',
|
|
1403
|
+
'architect',
|
|
1404
|
+
'tester',
|
|
1405
|
+
'coordinator',
|
|
1406
|
+
'reviewer',
|
|
1407
|
+
'optimizer'
|
|
1408
|
+
],
|
|
1409
|
+
active: 15,
|
|
1410
|
+
capabilities: 127
|
|
1411
|
+
};
|
|
1412
|
+
case 'claude-flow://models':
|
|
1413
|
+
return {
|
|
1414
|
+
total_models: 27,
|
|
1415
|
+
wasm_enabled: true,
|
|
1416
|
+
simd_support: true,
|
|
1417
|
+
training_active: true,
|
|
1418
|
+
accuracy_avg: 0.89
|
|
1419
|
+
};
|
|
1420
|
+
case 'claude-flow://performance':
|
|
1421
|
+
return {
|
|
1422
|
+
uptime: '99.9%',
|
|
1423
|
+
token_reduction: '32.3%',
|
|
1424
|
+
swe_bench_rate: '84.8%',
|
|
1425
|
+
speed_improvement: '2.8-4.4x',
|
|
1426
|
+
memory_efficiency: '78%'
|
|
1427
|
+
};
|
|
1428
|
+
default:
|
|
1429
|
+
throw new Error(`Unknown resource: ${uri}`);
|
|
1430
|
+
}
|
|
1431
|
+
}
|
|
1432
|
+
async handleMemoryUsage(args) {
|
|
1433
|
+
if (!this.memoryStore) {
|
|
1434
|
+
return {
|
|
867
1435
|
success: false,
|
|
868
|
-
error: '
|
|
869
|
-
|
|
870
|
-
|
|
871
|
-
|
|
1436
|
+
error: 'Shared memory system not initialized',
|
|
1437
|
+
timestamp: new Date().toISOString()
|
|
1438
|
+
};
|
|
1439
|
+
}
|
|
1440
|
+
try {
|
|
1441
|
+
switch(args.action){
|
|
1442
|
+
case 'store':
|
|
1443
|
+
const storeResult = await this.memoryStore.store(args.key, args.value, {
|
|
1444
|
+
namespace: args.namespace || 'default',
|
|
1445
|
+
ttl: args.ttl,
|
|
1446
|
+
metadata: {
|
|
1447
|
+
sessionId: this.sessionId,
|
|
1448
|
+
storedBy: 'mcp-server',
|
|
1449
|
+
type: 'knowledge'
|
|
1450
|
+
}
|
|
1451
|
+
});
|
|
1452
|
+
console.error(`[${new Date().toISOString()}] INFO [claude-flow-mcp] Stored in shared memory: ${args.key} (namespace: ${args.namespace || 'default'})`);
|
|
1453
|
+
return {
|
|
1454
|
+
success: true,
|
|
1455
|
+
action: 'store',
|
|
1456
|
+
key: args.key,
|
|
1457
|
+
namespace: args.namespace || 'default',
|
|
1458
|
+
stored: true,
|
|
1459
|
+
size: storeResult.size || args.value.length,
|
|
1460
|
+
id: storeResult.id,
|
|
1461
|
+
storage_type: this.memoryStore.isUsingFallback() ? 'in-memory' : 'sqlite',
|
|
1462
|
+
timestamp: new Date().toISOString()
|
|
1463
|
+
};
|
|
1464
|
+
case 'retrieve':
|
|
1465
|
+
const value = await this.memoryStore.retrieve(args.key, {
|
|
1466
|
+
namespace: args.namespace || 'default'
|
|
1467
|
+
});
|
|
1468
|
+
console.error(`[${new Date().toISOString()}] INFO [claude-flow-mcp] Retrieved from shared memory: ${args.key} (found: ${value !== null})`);
|
|
1469
|
+
return {
|
|
1470
|
+
success: true,
|
|
1471
|
+
action: 'retrieve',
|
|
1472
|
+
key: args.key,
|
|
1473
|
+
value: value,
|
|
1474
|
+
found: value !== null,
|
|
1475
|
+
namespace: args.namespace || 'default',
|
|
1476
|
+
storage_type: this.memoryStore.isUsingFallback() ? 'in-memory' : 'sqlite',
|
|
1477
|
+
timestamp: new Date().toISOString()
|
|
1478
|
+
};
|
|
1479
|
+
case 'list':
|
|
1480
|
+
const entries = await this.memoryStore.list({
|
|
1481
|
+
namespace: args.namespace || 'default',
|
|
1482
|
+
limit: 100
|
|
1483
|
+
});
|
|
1484
|
+
console.error(`[${new Date().toISOString()}] INFO [claude-flow-mcp] Listed shared memory entries: ${entries.length} (namespace: ${args.namespace || 'default'})`);
|
|
1485
|
+
return {
|
|
1486
|
+
success: true,
|
|
1487
|
+
action: 'list',
|
|
1488
|
+
namespace: args.namespace || 'default',
|
|
1489
|
+
entries: entries,
|
|
1490
|
+
count: entries.length,
|
|
1491
|
+
storage_type: this.memoryStore.isUsingFallback() ? 'in-memory' : 'sqlite',
|
|
1492
|
+
timestamp: new Date().toISOString()
|
|
1493
|
+
};
|
|
1494
|
+
case 'delete':
|
|
1495
|
+
const deleted = await this.memoryStore.delete(args.key, {
|
|
1496
|
+
namespace: args.namespace || 'default'
|
|
1497
|
+
});
|
|
1498
|
+
console.error(`[${new Date().toISOString()}] INFO [claude-flow-mcp] Deleted from shared memory: ${args.key} (success: ${deleted})`);
|
|
1499
|
+
return {
|
|
1500
|
+
success: true,
|
|
1501
|
+
action: 'delete',
|
|
1502
|
+
key: args.key,
|
|
1503
|
+
namespace: args.namespace || 'default',
|
|
1504
|
+
deleted: deleted,
|
|
1505
|
+
storage_type: this.memoryStore.isUsingFallback() ? 'in-memory' : 'sqlite',
|
|
1506
|
+
timestamp: new Date().toISOString()
|
|
1507
|
+
};
|
|
1508
|
+
case 'search':
|
|
1509
|
+
const results = await this.memoryStore.search(args.value || '', {
|
|
1510
|
+
namespace: args.namespace || 'default',
|
|
1511
|
+
limit: 50
|
|
1512
|
+
});
|
|
1513
|
+
console.error(`[${new Date().toISOString()}] INFO [claude-flow-mcp] Searched shared memory: ${results.length} results for "${args.value}"`);
|
|
1514
|
+
return {
|
|
1515
|
+
success: true,
|
|
1516
|
+
action: 'search',
|
|
1517
|
+
pattern: args.value,
|
|
1518
|
+
namespace: args.namespace || 'default',
|
|
1519
|
+
results: results,
|
|
1520
|
+
count: results.length,
|
|
1521
|
+
storage_type: this.memoryStore.isUsingFallback() ? 'in-memory' : 'sqlite',
|
|
1522
|
+
timestamp: new Date().toISOString()
|
|
1523
|
+
};
|
|
1524
|
+
default:
|
|
1525
|
+
return {
|
|
1526
|
+
success: false,
|
|
1527
|
+
error: `Unknown memory action: ${args.action}`,
|
|
1528
|
+
timestamp: new Date().toISOString()
|
|
1529
|
+
};
|
|
872
1530
|
}
|
|
873
|
-
|
|
874
|
-
|
|
1531
|
+
} catch (error) {
|
|
1532
|
+
console.error(`[${new Date().toISOString()}] ERROR [claude-flow-mcp] Shared memory operation failed:`, error);
|
|
875
1533
|
return {
|
|
876
|
-
|
|
877
|
-
|
|
878
|
-
|
|
879
|
-
|
|
880
|
-
|
|
881
|
-
type: agent.type,
|
|
882
|
-
status: agent.status,
|
|
883
|
-
capabilities: JSON.parse(agent.capabilities || '[]'),
|
|
884
|
-
created: agent.created_at,
|
|
885
|
-
lastActive: agent.last_active_at,
|
|
886
|
-
})),
|
|
887
|
-
count: agents.length,
|
|
888
|
-
timestamp: new Date().toISOString(),
|
|
1534
|
+
success: false,
|
|
1535
|
+
error: error.message,
|
|
1536
|
+
action: args.action,
|
|
1537
|
+
storage_type: this.memoryStore?.isUsingFallback() ? 'in-memory' : 'sqlite',
|
|
1538
|
+
timestamp: new Date().toISOString()
|
|
889
1539
|
};
|
|
890
|
-
|
|
891
|
-
|
|
892
|
-
|
|
893
|
-
|
|
894
|
-
);
|
|
1540
|
+
}
|
|
1541
|
+
}
|
|
1542
|
+
async handleMemorySearch(args) {
|
|
1543
|
+
if (!this.memoryStore) {
|
|
895
1544
|
return {
|
|
896
|
-
|
|
897
|
-
|
|
898
|
-
|
|
899
|
-
timestamp: new Date().toISOString(),
|
|
1545
|
+
success: false,
|
|
1546
|
+
error: 'Memory system not initialized',
|
|
1547
|
+
timestamp: new Date().toISOString()
|
|
900
1548
|
};
|
|
901
|
-
}
|
|
902
1549
|
}
|
|
903
|
-
|
|
904
|
-
// Fallback mock response
|
|
905
|
-
return {
|
|
906
|
-
success: true,
|
|
907
|
-
swarmId: args.swarmId || 'mock-swarm',
|
|
908
|
-
agents: [
|
|
909
|
-
{
|
|
910
|
-
id: 'agent-1',
|
|
911
|
-
name: 'coordinator-1',
|
|
912
|
-
type: 'coordinator',
|
|
913
|
-
status: 'active',
|
|
914
|
-
capabilities: [],
|
|
915
|
-
},
|
|
916
|
-
{
|
|
917
|
-
id: 'agent-2',
|
|
918
|
-
name: 'researcher-1',
|
|
919
|
-
type: 'researcher',
|
|
920
|
-
status: 'active',
|
|
921
|
-
capabilities: [],
|
|
922
|
-
},
|
|
923
|
-
{ id: 'agent-3', name: 'coder-1', type: 'coder', status: 'busy', capabilities: [] },
|
|
924
|
-
],
|
|
925
|
-
count: 3,
|
|
926
|
-
timestamp: new Date().toISOString(),
|
|
927
|
-
};
|
|
928
|
-
|
|
929
|
-
case 'swarm_status':
|
|
930
1550
|
try {
|
|
931
|
-
|
|
932
|
-
|
|
933
|
-
|
|
934
|
-
swarmId = await this.memoryStore.retrieve('active_swarm', {
|
|
935
|
-
namespace: 'system',
|
|
1551
|
+
const results = await this.sharedMemory.search(args.pattern, {
|
|
1552
|
+
namespace: args.namespace || 'default',
|
|
1553
|
+
limit: args.limit || 10
|
|
936
1554
|
});
|
|
937
|
-
}
|
|
938
|
-
|
|
939
|
-
if (!swarmId) {
|
|
940
1555
|
return {
|
|
941
|
-
success: false,
|
|
942
|
-
error: 'No active swarm found',
|
|
943
|
-
timestamp: new Date().toISOString(),
|
|
944
|
-
};
|
|
945
|
-
}
|
|
946
|
-
|
|
947
|
-
// Check agent tracker for real counts
|
|
948
|
-
if (global.agentTracker) {
|
|
949
|
-
const status = global.agentTracker.getSwarmStatus(swarmId);
|
|
950
|
-
if (status.agentCount > 0) {
|
|
951
|
-
const swarmDataRaw = await this.memoryStore.retrieve(`swarm:${swarmId}`, {
|
|
952
|
-
namespace: 'swarms',
|
|
953
|
-
});
|
|
954
|
-
const swarm = swarmDataRaw
|
|
955
|
-
? typeof swarmDataRaw === 'string'
|
|
956
|
-
? JSON.parse(swarmDataRaw)
|
|
957
|
-
: swarmDataRaw
|
|
958
|
-
: {};
|
|
959
|
-
|
|
960
|
-
return {
|
|
961
1556
|
success: true,
|
|
962
|
-
|
|
963
|
-
|
|
964
|
-
|
|
965
|
-
|
|
966
|
-
|
|
967
|
-
pendingTasks: status.pendingTasks,
|
|
968
|
-
completedTasks: status.completedTasks,
|
|
969
|
-
timestamp: new Date().toISOString(),
|
|
970
|
-
};
|
|
971
|
-
}
|
|
972
|
-
}
|
|
973
|
-
|
|
974
|
-
// Retrieve swarm data from memory store
|
|
975
|
-
const swarmDataRaw = await this.memoryStore.retrieve(`swarm:${swarmId}`, {
|
|
976
|
-
namespace: 'swarms',
|
|
977
|
-
});
|
|
978
|
-
|
|
979
|
-
if (!swarmDataRaw) {
|
|
980
|
-
return {
|
|
981
|
-
success: false,
|
|
982
|
-
error: `Swarm ${swarmId} not found`,
|
|
983
|
-
timestamp: new Date().toISOString(),
|
|
1557
|
+
pattern: args.pattern,
|
|
1558
|
+
namespace: args.namespace || 'default',
|
|
1559
|
+
results: results,
|
|
1560
|
+
count: results.length,
|
|
1561
|
+
timestamp: new Date().toISOString()
|
|
984
1562
|
};
|
|
985
|
-
}
|
|
986
|
-
|
|
987
|
-
const swarm = typeof swarmDataRaw === 'string' ? JSON.parse(swarmDataRaw) : swarmDataRaw;
|
|
988
|
-
|
|
989
|
-
// Retrieve agents from memory
|
|
990
|
-
const agentsData = await this.memoryStore.list({
|
|
991
|
-
namespace: 'agents',
|
|
992
|
-
limit: 100,
|
|
993
|
-
});
|
|
994
|
-
|
|
995
|
-
// Filter agents for this swarm
|
|
996
|
-
const swarmAgents = agentsData
|
|
997
|
-
.filter((entry) => entry.key.startsWith(`agent:${swarmId}:`))
|
|
998
|
-
.map((entry) => {
|
|
999
|
-
try {
|
|
1000
|
-
return JSON.parse(entry.value);
|
|
1001
|
-
} catch (e) {
|
|
1002
|
-
return null;
|
|
1003
|
-
}
|
|
1004
|
-
})
|
|
1005
|
-
.filter((agent) => agent !== null);
|
|
1006
|
-
|
|
1007
|
-
// Retrieve tasks from memory
|
|
1008
|
-
const tasksData = await this.memoryStore.list({
|
|
1009
|
-
namespace: 'tasks',
|
|
1010
|
-
limit: 100,
|
|
1011
|
-
});
|
|
1012
|
-
|
|
1013
|
-
// Filter tasks for this swarm
|
|
1014
|
-
const swarmTasks = tasksData
|
|
1015
|
-
.filter((entry) => entry.key.startsWith(`task:${swarmId}:`))
|
|
1016
|
-
.map((entry) => {
|
|
1017
|
-
try {
|
|
1018
|
-
return JSON.parse(entry.value);
|
|
1019
|
-
} catch (e) {
|
|
1020
|
-
return null;
|
|
1021
|
-
}
|
|
1022
|
-
})
|
|
1023
|
-
.filter((task) => task !== null);
|
|
1024
|
-
|
|
1025
|
-
// Calculate stats
|
|
1026
|
-
const activeAgents = swarmAgents.filter(
|
|
1027
|
-
(a) => a.status === 'active' || a.status === 'busy',
|
|
1028
|
-
).length;
|
|
1029
|
-
const pendingTasks = swarmTasks.filter((t) => t.status === 'pending').length;
|
|
1030
|
-
const completedTasks = swarmTasks.filter((t) => t.status === 'completed').length;
|
|
1031
|
-
|
|
1032
|
-
const response = {
|
|
1033
|
-
success: true,
|
|
1034
|
-
swarmId: swarmId,
|
|
1035
|
-
topology: swarm.topology || 'hierarchical',
|
|
1036
|
-
agentCount: swarmAgents.length,
|
|
1037
|
-
activeAgents: activeAgents,
|
|
1038
|
-
taskCount: swarmTasks.length,
|
|
1039
|
-
pendingTasks: pendingTasks,
|
|
1040
|
-
completedTasks: completedTasks,
|
|
1041
|
-
timestamp: new Date().toISOString(),
|
|
1042
|
-
};
|
|
1043
|
-
|
|
1044
|
-
// Add verbose details if requested
|
|
1045
|
-
if (args.verbose === true || args.verbose === 'true') {
|
|
1046
|
-
response.agents = swarmAgents;
|
|
1047
|
-
response.tasks = swarmTasks;
|
|
1048
|
-
response.swarmDetails = swarm;
|
|
1049
|
-
}
|
|
1050
|
-
|
|
1051
|
-
return response;
|
|
1052
1563
|
} catch (error) {
|
|
1053
|
-
|
|
1054
|
-
|
|
1055
|
-
|
|
1056
|
-
|
|
1057
|
-
|
|
1058
|
-
|
|
1059
|
-
return {
|
|
1060
|
-
success: false,
|
|
1061
|
-
error: error.message || 'Failed to retrieve swarm status',
|
|
1062
|
-
swarmId: args.swarmId || 'unknown',
|
|
1063
|
-
topology: 'unknown',
|
|
1064
|
-
agentCount: 0,
|
|
1065
|
-
activeAgents: 0,
|
|
1066
|
-
taskCount: 0,
|
|
1067
|
-
pendingTasks: 0,
|
|
1068
|
-
completedTasks: 0,
|
|
1069
|
-
timestamp: new Date().toISOString(),
|
|
1070
|
-
};
|
|
1071
|
-
}
|
|
1072
|
-
|
|
1073
|
-
case 'task_orchestrate':
|
|
1074
|
-
const taskId = `task_${Date.now()}_${Math.random().toString(36).substr(2, 9)}`;
|
|
1075
|
-
|
|
1076
|
-
// Track task creation
|
|
1077
|
-
if (global.agentTracker) {
|
|
1078
|
-
global.agentTracker.trackTask(taskId, {
|
|
1079
|
-
task: args.task,
|
|
1080
|
-
strategy: args.strategy || 'parallel',
|
|
1081
|
-
priority: args.priority || 'medium',
|
|
1082
|
-
status: 'pending',
|
|
1083
|
-
swarmId: args.swarmId,
|
|
1084
|
-
});
|
|
1564
|
+
console.error(`[${new Date().toISOString()}] ERROR [claude-flow-mcp] Memory search failed:`, error);
|
|
1565
|
+
return {
|
|
1566
|
+
success: false,
|
|
1567
|
+
error: error.message,
|
|
1568
|
+
timestamp: new Date().toISOString()
|
|
1569
|
+
};
|
|
1085
1570
|
}
|
|
1086
|
-
|
|
1087
|
-
|
|
1088
|
-
id: taskId,
|
|
1089
|
-
swarmId: swarmIdForTask,
|
|
1090
|
-
description: args.task,
|
|
1091
|
-
priority: args.priority || 'medium',
|
|
1092
|
-
strategy: args.strategy || 'auto',
|
|
1093
|
-
status: 'pending',
|
|
1094
|
-
dependencies: JSON.stringify(args.dependencies || []),
|
|
1095
|
-
assignedAgents: JSON.stringify([]),
|
|
1096
|
-
requireConsensus: false,
|
|
1097
|
-
maxAgents: 5,
|
|
1098
|
-
requiredCapabilities: JSON.stringify([]),
|
|
1099
|
-
metadata: JSON.stringify({
|
|
1100
|
-
sessionId: this.sessionId,
|
|
1101
|
-
createdBy: 'mcp-server',
|
|
1102
|
-
orchestratedAt: new Date().toISOString(),
|
|
1103
|
-
}),
|
|
1104
|
-
};
|
|
1105
|
-
|
|
1106
|
-
// Store task data in memory store
|
|
1571
|
+
}
|
|
1572
|
+
async getActiveSwarmId() {
|
|
1107
1573
|
try {
|
|
1108
|
-
|
|
1109
|
-
|
|
1110
|
-
|
|
1111
|
-
|
|
1112
|
-
{
|
|
1113
|
-
namespace: 'tasks',
|
|
1114
|
-
metadata: { type: 'task_data', swarmId: swarmIdForTask, sessionId: this.sessionId },
|
|
1115
|
-
},
|
|
1116
|
-
);
|
|
1117
|
-
console.error(
|
|
1118
|
-
`[${new Date().toISOString()}] INFO [claude-flow-mcp] Task persisted to memory: ${taskId}`,
|
|
1119
|
-
);
|
|
1120
|
-
}
|
|
1574
|
+
const activeSwarmId = await this.memoryStore.retrieve('active_swarm', {
|
|
1575
|
+
namespace: 'system'
|
|
1576
|
+
});
|
|
1577
|
+
return activeSwarmId || null;
|
|
1121
1578
|
} catch (error) {
|
|
1122
|
-
|
|
1123
|
-
|
|
1124
|
-
error,
|
|
1125
|
-
);
|
|
1126
|
-
}
|
|
1127
|
-
|
|
1128
|
-
return {
|
|
1129
|
-
success: true,
|
|
1130
|
-
taskId: taskId,
|
|
1131
|
-
task: args.task,
|
|
1132
|
-
strategy: taskData.strategy,
|
|
1133
|
-
priority: taskData.priority,
|
|
1134
|
-
status: 'pending',
|
|
1135
|
-
persisted: true,
|
|
1136
|
-
timestamp: new Date().toISOString(),
|
|
1137
|
-
};
|
|
1138
|
-
|
|
1139
|
-
// DEPRECATED: DAA Tools Implementation - Handlers removed for 6 deprecated DAA tools
|
|
1140
|
-
// Removed cases: daa_agent_create, daa_capability_match, daa_resource_alloc,
|
|
1141
|
-
// daa_lifecycle_manage, daa_communication, daa_consensus
|
|
1142
|
-
// Rationale: DAA functionality consolidated into core swarm tools
|
|
1143
|
-
// Note: DAA implementation files (daa-tools.js) retained for backward compatibility
|
|
1144
|
-
|
|
1145
|
-
// Workflow Tools Implementation
|
|
1146
|
-
case 'workflow_create':
|
|
1147
|
-
if (global.workflowManager) {
|
|
1148
|
-
return global.workflowManager.workflow_create(args);
|
|
1149
|
-
}
|
|
1150
|
-
return {
|
|
1151
|
-
success: false,
|
|
1152
|
-
error: 'Workflow manager not initialized',
|
|
1153
|
-
timestamp: new Date().toISOString(),
|
|
1154
|
-
};
|
|
1155
|
-
|
|
1156
|
-
// DEPRECATED: Workflow Execution Tools - Handlers removed for 5 deprecated workflow tools
|
|
1157
|
-
// Removed cases: workflow_execute, parallel_execute, batch_process, workflow_export, workflow_template
|
|
1158
|
-
// Retained: workflow_create (basic functionality)
|
|
1159
|
-
// Rationale: Workflow execution integrated into task_orchestrate
|
|
1160
|
-
// Note: Workflow implementation files (workflow-tools.js) retained for backward compatibility
|
|
1161
|
-
|
|
1162
|
-
// Performance Tools Implementation
|
|
1163
|
-
case 'performance_report':
|
|
1164
|
-
if (global.performanceMonitor) {
|
|
1165
|
-
return global.performanceMonitor.performance_report(args);
|
|
1166
|
-
}
|
|
1167
|
-
return {
|
|
1168
|
-
success: false,
|
|
1169
|
-
error: 'Performance monitor not initialized',
|
|
1170
|
-
timestamp: new Date().toISOString(),
|
|
1171
|
-
};
|
|
1172
|
-
|
|
1173
|
-
case 'bottleneck_analyze':
|
|
1174
|
-
if (global.performanceMonitor) {
|
|
1175
|
-
return global.performanceMonitor.bottleneck_analyze(args);
|
|
1176
|
-
}
|
|
1177
|
-
return {
|
|
1178
|
-
success: false,
|
|
1179
|
-
error: 'Performance monitor not initialized',
|
|
1180
|
-
timestamp: new Date().toISOString(),
|
|
1181
|
-
};
|
|
1182
|
-
|
|
1183
|
-
case 'memory_analytics':
|
|
1184
|
-
if (global.performanceMonitor) {
|
|
1185
|
-
return global.performanceMonitor.memory_analytics(args);
|
|
1579
|
+
console.error(`[${new Date().toISOString()}] ERROR [claude-flow-mcp] Failed to get active swarm:`, error);
|
|
1580
|
+
return null;
|
|
1186
1581
|
}
|
|
1187
|
-
return {
|
|
1188
|
-
success: false,
|
|
1189
|
-
error: 'Performance monitor not initialized',
|
|
1190
|
-
timestamp: new Date().toISOString(),
|
|
1191
|
-
};
|
|
1192
|
-
|
|
1193
|
-
default:
|
|
1194
|
-
return {
|
|
1195
|
-
success: true,
|
|
1196
|
-
tool: name,
|
|
1197
|
-
message: `Tool ${name} executed successfully`,
|
|
1198
|
-
args: args,
|
|
1199
|
-
timestamp: new Date().toISOString(),
|
|
1200
|
-
};
|
|
1201
1582
|
}
|
|
1202
|
-
|
|
1203
|
-
|
|
1204
|
-
|
|
1205
|
-
|
|
1206
|
-
|
|
1207
|
-
|
|
1208
|
-
|
|
1209
|
-
|
|
1210
|
-
topologies: ['hierarchical', 'mesh', 'ring', 'star'],
|
|
1211
|
-
performance: '2.8-4.4x speedup',
|
|
1212
|
-
};
|
|
1213
|
-
|
|
1214
|
-
case 'claude-flow://agents':
|
|
1215
|
-
return {
|
|
1216
|
-
total_agents: 8,
|
|
1217
|
-
types: [
|
|
1218
|
-
'researcher',
|
|
1219
|
-
'coder',
|
|
1220
|
-
'analyst',
|
|
1221
|
-
'architect',
|
|
1222
|
-
'tester',
|
|
1223
|
-
'coordinator',
|
|
1224
|
-
'reviewer',
|
|
1225
|
-
'optimizer',
|
|
1226
|
-
],
|
|
1227
|
-
active: 15,
|
|
1228
|
-
capabilities: 127,
|
|
1229
|
-
};
|
|
1230
|
-
|
|
1231
|
-
case 'claude-flow://models':
|
|
1232
|
-
return {
|
|
1233
|
-
total_models: 27,
|
|
1234
|
-
wasm_enabled: true,
|
|
1235
|
-
simd_support: true,
|
|
1236
|
-
training_active: true,
|
|
1237
|
-
accuracy_avg: 0.89,
|
|
1238
|
-
};
|
|
1239
|
-
|
|
1240
|
-
case 'claude-flow://performance':
|
|
1241
|
-
return {
|
|
1242
|
-
uptime: '99.9%',
|
|
1243
|
-
token_reduction: '32.3%',
|
|
1244
|
-
swe_bench_rate: '84.8%',
|
|
1245
|
-
speed_improvement: '2.8-4.4x',
|
|
1246
|
-
memory_efficiency: '78%',
|
|
1583
|
+
createErrorResponse(id, code, message, data = null) {
|
|
1584
|
+
const response = {
|
|
1585
|
+
jsonrpc: '2.0',
|
|
1586
|
+
id,
|
|
1587
|
+
error: {
|
|
1588
|
+
code,
|
|
1589
|
+
message
|
|
1590
|
+
}
|
|
1247
1591
|
};
|
|
1248
|
-
|
|
1249
|
-
|
|
1250
|
-
throw new Error(`Unknown resource: ${uri}`);
|
|
1251
|
-
}
|
|
1252
|
-
}
|
|
1253
|
-
|
|
1254
|
-
async handleMemoryUsage(args) {
|
|
1255
|
-
if (!this.memoryStore) {
|
|
1256
|
-
return {
|
|
1257
|
-
success: false,
|
|
1258
|
-
error: 'Shared memory system not initialized',
|
|
1259
|
-
timestamp: new Date().toISOString(),
|
|
1260
|
-
};
|
|
1592
|
+
if (data) response.error.data = data;
|
|
1593
|
+
return response;
|
|
1261
1594
|
}
|
|
1262
|
-
|
|
1263
|
-
|
|
1264
|
-
|
|
1265
|
-
|
|
1266
|
-
|
|
1267
|
-
|
|
1268
|
-
|
|
1269
|
-
metadata: {
|
|
1270
|
-
sessionId: this.sessionId,
|
|
1271
|
-
storedBy: 'mcp-server',
|
|
1272
|
-
type: 'knowledge',
|
|
1595
|
+
constructor(){
|
|
1596
|
+
this.version = '2.0.0-alpha.59';
|
|
1597
|
+
this.memoryStore = memoryStore; // Use shared singleton instance
|
|
1598
|
+
// Use the same memory system that already works
|
|
1599
|
+
this.capabilities = {
|
|
1600
|
+
tools: {
|
|
1601
|
+
listChanged: true
|
|
1273
1602
|
},
|
|
1274
|
-
|
|
1275
|
-
|
|
1276
|
-
|
|
1277
|
-
|
|
1278
|
-
|
|
1279
|
-
|
|
1280
|
-
|
|
1281
|
-
|
|
1282
|
-
|
|
1283
|
-
|
|
1284
|
-
|
|
1285
|
-
|
|
1286
|
-
|
|
1287
|
-
id: storeResult.id,
|
|
1288
|
-
storage_type: this.memoryStore.isUsingFallback() ? 'in-memory' : 'sqlite',
|
|
1289
|
-
timestamp: new Date().toISOString(),
|
|
1290
|
-
};
|
|
1291
|
-
|
|
1292
|
-
case 'retrieve':
|
|
1293
|
-
const value = await this.memoryStore.retrieve(args.key, {
|
|
1294
|
-
namespace: args.namespace || 'default',
|
|
1295
|
-
});
|
|
1296
|
-
|
|
1297
|
-
console.error(
|
|
1298
|
-
`[${new Date().toISOString()}] INFO [claude-flow-mcp] Retrieved from shared memory: ${args.key} (found: ${value !== null})`,
|
|
1299
|
-
);
|
|
1300
|
-
|
|
1301
|
-
return {
|
|
1302
|
-
success: true,
|
|
1303
|
-
action: 'retrieve',
|
|
1304
|
-
key: args.key,
|
|
1305
|
-
value: value,
|
|
1306
|
-
found: value !== null,
|
|
1307
|
-
namespace: args.namespace || 'default',
|
|
1308
|
-
storage_type: this.memoryStore.isUsingFallback() ? 'in-memory' : 'sqlite',
|
|
1309
|
-
timestamp: new Date().toISOString(),
|
|
1310
|
-
};
|
|
1311
|
-
|
|
1312
|
-
case 'list':
|
|
1313
|
-
const entries = await this.memoryStore.list({
|
|
1314
|
-
namespace: args.namespace || 'default',
|
|
1315
|
-
limit: 100,
|
|
1316
|
-
});
|
|
1317
|
-
|
|
1318
|
-
console.error(
|
|
1319
|
-
`[${new Date().toISOString()}] INFO [claude-flow-mcp] Listed shared memory entries: ${entries.length} (namespace: ${args.namespace || 'default'})`,
|
|
1320
|
-
);
|
|
1321
|
-
|
|
1322
|
-
return {
|
|
1323
|
-
success: true,
|
|
1324
|
-
action: 'list',
|
|
1325
|
-
namespace: args.namespace || 'default',
|
|
1326
|
-
entries: entries,
|
|
1327
|
-
count: entries.length,
|
|
1328
|
-
storage_type: this.memoryStore.isUsingFallback() ? 'in-memory' : 'sqlite',
|
|
1329
|
-
timestamp: new Date().toISOString(),
|
|
1330
|
-
};
|
|
1331
|
-
|
|
1332
|
-
case 'delete':
|
|
1333
|
-
const deleted = await this.memoryStore.delete(args.key, {
|
|
1334
|
-
namespace: args.namespace || 'default',
|
|
1335
|
-
});
|
|
1336
|
-
|
|
1337
|
-
console.error(
|
|
1338
|
-
`[${new Date().toISOString()}] INFO [claude-flow-mcp] Deleted from shared memory: ${args.key} (success: ${deleted})`,
|
|
1339
|
-
);
|
|
1340
|
-
|
|
1341
|
-
return {
|
|
1342
|
-
success: true,
|
|
1343
|
-
action: 'delete',
|
|
1344
|
-
key: args.key,
|
|
1345
|
-
namespace: args.namespace || 'default',
|
|
1346
|
-
deleted: deleted,
|
|
1347
|
-
storage_type: this.memoryStore.isUsingFallback() ? 'in-memory' : 'sqlite',
|
|
1348
|
-
timestamp: new Date().toISOString(),
|
|
1349
|
-
};
|
|
1350
|
-
|
|
1351
|
-
case 'search':
|
|
1352
|
-
const results = await this.memoryStore.search(args.value || '', {
|
|
1353
|
-
namespace: args.namespace || 'default',
|
|
1354
|
-
limit: 50,
|
|
1355
|
-
});
|
|
1356
|
-
|
|
1357
|
-
console.error(
|
|
1358
|
-
`[${new Date().toISOString()}] INFO [claude-flow-mcp] Searched shared memory: ${results.length} results for "${args.value}"`,
|
|
1359
|
-
);
|
|
1360
|
-
|
|
1361
|
-
return {
|
|
1362
|
-
success: true,
|
|
1363
|
-
action: 'search',
|
|
1364
|
-
pattern: args.value,
|
|
1365
|
-
namespace: args.namespace || 'default',
|
|
1366
|
-
results: results,
|
|
1367
|
-
count: results.length,
|
|
1368
|
-
storage_type: this.memoryStore.isUsingFallback() ? 'in-memory' : 'sqlite',
|
|
1369
|
-
timestamp: new Date().toISOString(),
|
|
1370
|
-
};
|
|
1371
|
-
|
|
1372
|
-
default:
|
|
1373
|
-
return {
|
|
1374
|
-
success: false,
|
|
1375
|
-
error: `Unknown memory action: ${args.action}`,
|
|
1376
|
-
timestamp: new Date().toISOString(),
|
|
1377
|
-
};
|
|
1378
|
-
}
|
|
1379
|
-
} catch (error) {
|
|
1380
|
-
console.error(
|
|
1381
|
-
`[${new Date().toISOString()}] ERROR [claude-flow-mcp] Shared memory operation failed:`,
|
|
1382
|
-
error,
|
|
1383
|
-
);
|
|
1384
|
-
return {
|
|
1385
|
-
success: false,
|
|
1386
|
-
error: error.message,
|
|
1387
|
-
action: args.action,
|
|
1388
|
-
storage_type: this.memoryStore?.isUsingFallback() ? 'in-memory' : 'sqlite',
|
|
1389
|
-
timestamp: new Date().toISOString(),
|
|
1390
|
-
};
|
|
1391
|
-
}
|
|
1392
|
-
}
|
|
1393
|
-
|
|
1394
|
-
async handleMemorySearch(args) {
|
|
1395
|
-
if (!this.memoryStore) {
|
|
1396
|
-
return {
|
|
1397
|
-
success: false,
|
|
1398
|
-
error: 'Memory system not initialized',
|
|
1399
|
-
timestamp: new Date().toISOString(),
|
|
1400
|
-
};
|
|
1401
|
-
}
|
|
1402
|
-
|
|
1403
|
-
try {
|
|
1404
|
-
const results = await this.sharedMemory.search(args.pattern, {
|
|
1405
|
-
namespace: args.namespace || 'default',
|
|
1406
|
-
limit: args.limit || 10,
|
|
1407
|
-
});
|
|
1408
|
-
|
|
1409
|
-
return {
|
|
1410
|
-
success: true,
|
|
1411
|
-
pattern: args.pattern,
|
|
1412
|
-
namespace: args.namespace || 'default',
|
|
1413
|
-
results: results,
|
|
1414
|
-
count: results.length,
|
|
1415
|
-
timestamp: new Date().toISOString(),
|
|
1416
|
-
};
|
|
1417
|
-
} catch (error) {
|
|
1418
|
-
console.error(
|
|
1419
|
-
`[${new Date().toISOString()}] ERROR [claude-flow-mcp] Memory search failed:`,
|
|
1420
|
-
error,
|
|
1421
|
-
);
|
|
1422
|
-
return {
|
|
1423
|
-
success: false,
|
|
1424
|
-
error: error.message,
|
|
1425
|
-
timestamp: new Date().toISOString(),
|
|
1426
|
-
};
|
|
1427
|
-
}
|
|
1428
|
-
}
|
|
1429
|
-
|
|
1430
|
-
async getActiveSwarmId() {
|
|
1431
|
-
try {
|
|
1432
|
-
const activeSwarmId = await this.memoryStore.retrieve('active_swarm', {
|
|
1433
|
-
namespace: 'system',
|
|
1434
|
-
});
|
|
1435
|
-
return activeSwarmId || null;
|
|
1436
|
-
} catch (error) {
|
|
1437
|
-
console.error(
|
|
1438
|
-
`[${new Date().toISOString()}] ERROR [claude-flow-mcp] Failed to get active swarm:`,
|
|
1439
|
-
error,
|
|
1440
|
-
);
|
|
1441
|
-
return null;
|
|
1603
|
+
resources: {
|
|
1604
|
+
subscribe: true,
|
|
1605
|
+
listChanged: true
|
|
1606
|
+
}
|
|
1607
|
+
};
|
|
1608
|
+
this.sessionId = `session-cf-${Date.now()}-${Math.random().toString(36).substr(2, 4)}`;
|
|
1609
|
+
this.tools = this.initializeTools();
|
|
1610
|
+
this.resources = this.initializeResources();
|
|
1611
|
+
// Initialize shared memory store (same as npx commands)
|
|
1612
|
+
this.initializeMemory().catch((err)=>{
|
|
1613
|
+
console.error(`[${new Date().toISOString()}] ERROR [claude-flow-mcp] Failed to initialize shared memory:`, err);
|
|
1614
|
+
});
|
|
1615
|
+
// Database operations now use the same shared memory store as npx commands
|
|
1442
1616
|
}
|
|
1443
|
-
|
|
1444
|
-
|
|
1445
|
-
createErrorResponse(id, code, message, data = null) {
|
|
1446
|
-
const response = {
|
|
1447
|
-
jsonrpc: '2.0',
|
|
1448
|
-
id,
|
|
1449
|
-
error: { code, message },
|
|
1450
|
-
};
|
|
1451
|
-
if (data) response.error.data = data;
|
|
1452
|
-
return response;
|
|
1453
|
-
}
|
|
1454
|
-
}
|
|
1455
|
-
|
|
1617
|
+
};
|
|
1456
1618
|
// Main server execution
|
|
1457
1619
|
async function startMCPServer() {
|
|
1458
|
-
|
|
1459
|
-
|
|
1460
|
-
|
|
1461
|
-
|
|
1462
|
-
|
|
1463
|
-
|
|
1464
|
-
|
|
1465
|
-
|
|
1466
|
-
|
|
1467
|
-
|
|
1468
|
-
|
|
1469
|
-
|
|
1470
|
-
|
|
1471
|
-
|
|
1472
|
-
|
|
1473
|
-
|
|
1474
|
-
|
|
1475
|
-
|
|
1476
|
-
|
|
1477
|
-
|
|
1478
|
-
|
|
1479
|
-
|
|
1480
|
-
serverInfo: {
|
|
1481
|
-
name: 'claude-flow',
|
|
1482
|
-
version: server.version,
|
|
1483
|
-
capabilities: server.capabilities,
|
|
1484
|
-
},
|
|
1485
|
-
},
|
|
1486
|
-
}),
|
|
1487
|
-
);
|
|
1488
|
-
|
|
1489
|
-
// Handle stdin messages
|
|
1490
|
-
let buffer = '';
|
|
1491
|
-
|
|
1492
|
-
process.stdin.on('data', async (chunk) => {
|
|
1493
|
-
buffer += chunk.toString();
|
|
1494
|
-
|
|
1495
|
-
// Process complete JSON messages
|
|
1496
|
-
let lines = buffer.split('\n');
|
|
1497
|
-
buffer = lines.pop() || ''; // Keep incomplete line in buffer
|
|
1498
|
-
|
|
1499
|
-
for (const line of lines) {
|
|
1500
|
-
if (line.trim()) {
|
|
1501
|
-
try {
|
|
1502
|
-
const message = JSON.parse(line);
|
|
1503
|
-
const response = await server.handleMessage(message);
|
|
1504
|
-
if (response) {
|
|
1505
|
-
console.log(JSON.stringify(response));
|
|
1506
|
-
}
|
|
1507
|
-
} catch (error) {
|
|
1508
|
-
console.error(
|
|
1509
|
-
`[${new Date().toISOString()}] ERROR [claude-flow-mcp] Failed to parse message:`,
|
|
1510
|
-
error.message,
|
|
1511
|
-
);
|
|
1620
|
+
const server = new ClaudeFlowMCPServer();
|
|
1621
|
+
console.error(`[${new Date().toISOString()}] INFO [claude-flow-mcp] (${server.sessionId}) Claude-Flow MCP server starting in stdio mode`);
|
|
1622
|
+
console.error({
|
|
1623
|
+
arch: process.arch,
|
|
1624
|
+
mode: 'mcp-stdio',
|
|
1625
|
+
nodeVersion: process.version,
|
|
1626
|
+
pid: process.pid,
|
|
1627
|
+
platform: process.platform,
|
|
1628
|
+
protocol: 'stdio',
|
|
1629
|
+
sessionId: server.sessionId,
|
|
1630
|
+
version: server.version
|
|
1631
|
+
});
|
|
1632
|
+
// Send server capabilities
|
|
1633
|
+
console.log(JSON.stringify({
|
|
1634
|
+
jsonrpc: '2.0',
|
|
1635
|
+
method: 'server.initialized',
|
|
1636
|
+
params: {
|
|
1637
|
+
serverInfo: {
|
|
1638
|
+
name: 'claude-flow',
|
|
1639
|
+
version: server.version,
|
|
1640
|
+
capabilities: server.capabilities
|
|
1641
|
+
}
|
|
1512
1642
|
}
|
|
1513
|
-
|
|
1514
|
-
|
|
1515
|
-
|
|
1516
|
-
|
|
1517
|
-
|
|
1518
|
-
|
|
1519
|
-
|
|
1520
|
-
|
|
1521
|
-
|
|
1522
|
-
|
|
1523
|
-
|
|
1524
|
-
|
|
1525
|
-
|
|
1526
|
-
|
|
1527
|
-
|
|
1528
|
-
|
|
1529
|
-
|
|
1530
|
-
|
|
1531
|
-
|
|
1532
|
-
|
|
1533
|
-
|
|
1534
|
-
}
|
|
1535
|
-
process.
|
|
1536
|
-
|
|
1537
|
-
|
|
1538
|
-
|
|
1539
|
-
|
|
1540
|
-
|
|
1541
|
-
)
|
|
1542
|
-
|
|
1543
|
-
|
|
1544
|
-
|
|
1545
|
-
|
|
1546
|
-
|
|
1643
|
+
}));
|
|
1644
|
+
// Handle stdin messages
|
|
1645
|
+
let buffer = '';
|
|
1646
|
+
process.stdin.on('data', async (chunk)=>{
|
|
1647
|
+
buffer += chunk.toString();
|
|
1648
|
+
// Process complete JSON messages
|
|
1649
|
+
let lines = buffer.split('\n');
|
|
1650
|
+
buffer = lines.pop() || ''; // Keep incomplete line in buffer
|
|
1651
|
+
for (const line of lines){
|
|
1652
|
+
if (line.trim()) {
|
|
1653
|
+
try {
|
|
1654
|
+
const message = JSON.parse(line);
|
|
1655
|
+
const response = await server.handleMessage(message);
|
|
1656
|
+
if (response) {
|
|
1657
|
+
console.log(JSON.stringify(response));
|
|
1658
|
+
}
|
|
1659
|
+
} catch (error) {
|
|
1660
|
+
console.error(`[${new Date().toISOString()}] ERROR [claude-flow-mcp] Failed to parse message:`, error.message);
|
|
1661
|
+
}
|
|
1662
|
+
}
|
|
1663
|
+
}
|
|
1664
|
+
});
|
|
1665
|
+
process.stdin.on('end', ()=>{
|
|
1666
|
+
console.error(`[${new Date().toISOString()}] INFO [claude-flow-mcp] (${server.sessionId}) 🔌 Connection closed: ${server.sessionId}`);
|
|
1667
|
+
console.error(`[${new Date().toISOString()}] INFO [claude-flow-mcp] (${server.sessionId}) MCP: stdin closed, shutting down...`);
|
|
1668
|
+
process.exit(0);
|
|
1669
|
+
});
|
|
1670
|
+
// Handle process termination
|
|
1671
|
+
process.on('SIGINT', async ()=>{
|
|
1672
|
+
console.error(`[${new Date().toISOString()}] INFO [claude-flow-mcp] (${server.sessionId}) Received SIGINT, shutting down gracefully...`);
|
|
1673
|
+
if (server.sharedMemory) {
|
|
1674
|
+
await server.sharedMemory.close();
|
|
1675
|
+
}
|
|
1676
|
+
process.exit(0);
|
|
1677
|
+
});
|
|
1678
|
+
process.on('SIGTERM', async ()=>{
|
|
1679
|
+
console.error(`[${new Date().toISOString()}] INFO [claude-flow-mcp] (${server.sessionId}) Received SIGTERM, shutting down gracefully...`);
|
|
1680
|
+
if (server.sharedMemory) {
|
|
1681
|
+
await server.sharedMemory.close();
|
|
1682
|
+
}
|
|
1683
|
+
process.exit(0);
|
|
1684
|
+
});
|
|
1547
1685
|
}
|
|
1548
|
-
|
|
1549
1686
|
// Start the server if this file is run directly
|
|
1550
1687
|
if (import.meta.url === `file://${process.argv[1]}`) {
|
|
1551
|
-
|
|
1688
|
+
startMCPServer().catch(console.error);
|
|
1552
1689
|
}
|
|
1553
|
-
|
|
1554
1690
|
export { ClaudeFlowMCPServer };
|