@claude-flow/cli 3.0.0-alpha.2 → 3.0.0-alpha.21
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/README.md +172 -6
- package/bin/cli.js +0 -0
- package/dist/src/commands/agent.d.ts.map +1 -1
- package/dist/src/commands/agent.js +43 -27
- package/dist/src/commands/agent.js.map +1 -1
- package/dist/src/commands/analyze.d.ts +19 -0
- package/dist/src/commands/analyze.d.ts.map +1 -0
- package/dist/src/commands/analyze.js +1823 -0
- package/dist/src/commands/analyze.js.map +1 -0
- package/dist/src/commands/claims.d.ts +10 -0
- package/dist/src/commands/claims.d.ts.map +1 -0
- package/dist/src/commands/claims.js +288 -0
- package/dist/src/commands/claims.js.map +1 -0
- package/dist/src/commands/completions.d.ts +10 -0
- package/dist/src/commands/completions.d.ts.map +1 -0
- package/dist/src/commands/completions.js +539 -0
- package/dist/src/commands/completions.js.map +1 -0
- package/dist/src/commands/config.js +2 -2
- package/dist/src/commands/config.js.map +1 -1
- package/dist/src/commands/daemon.d.ts +8 -0
- package/dist/src/commands/daemon.d.ts.map +1 -0
- package/dist/src/commands/daemon.js +545 -0
- package/dist/src/commands/daemon.js.map +1 -0
- package/dist/src/commands/deployment.d.ts +10 -0
- package/dist/src/commands/deployment.d.ts.map +1 -0
- package/dist/src/commands/deployment.js +289 -0
- package/dist/src/commands/deployment.js.map +1 -0
- package/dist/src/commands/doctor.d.ts +10 -0
- package/dist/src/commands/doctor.d.ts.map +1 -0
- package/dist/src/commands/doctor.js +429 -0
- package/dist/src/commands/doctor.js.map +1 -0
- package/dist/src/commands/embeddings.d.ts +18 -0
- package/dist/src/commands/embeddings.d.ts.map +1 -0
- package/dist/src/commands/embeddings.js +616 -0
- package/dist/src/commands/embeddings.js.map +1 -0
- package/dist/src/commands/hive-mind.d.ts.map +1 -1
- package/dist/src/commands/hive-mind.js +252 -35
- package/dist/src/commands/hive-mind.js.map +1 -1
- package/dist/src/commands/hooks.d.ts.map +1 -1
- package/dist/src/commands/hooks.js +326 -2
- package/dist/src/commands/hooks.js.map +1 -1
- package/dist/src/commands/index.d.ts +13 -0
- package/dist/src/commands/index.d.ts.map +1 -1
- package/dist/src/commands/index.js +52 -1
- package/dist/src/commands/index.js.map +1 -1
- package/dist/src/commands/mcp.js +4 -4
- package/dist/src/commands/mcp.js.map +1 -1
- package/dist/src/commands/memory.d.ts.map +1 -1
- package/dist/src/commands/memory.js +236 -170
- package/dist/src/commands/memory.js.map +1 -1
- package/dist/src/commands/migrate.js +1 -1
- package/dist/src/commands/migrate.js.map +1 -1
- package/dist/src/commands/neural.d.ts +10 -0
- package/dist/src/commands/neural.d.ts.map +1 -0
- package/dist/src/commands/neural.js +224 -0
- package/dist/src/commands/neural.js.map +1 -0
- package/dist/src/commands/performance.d.ts +10 -0
- package/dist/src/commands/performance.d.ts.map +1 -0
- package/dist/src/commands/performance.js +262 -0
- package/dist/src/commands/performance.js.map +1 -0
- package/dist/src/commands/plugins.d.ts +10 -0
- package/dist/src/commands/plugins.d.ts.map +1 -0
- package/dist/src/commands/plugins.js +280 -0
- package/dist/src/commands/plugins.js.map +1 -0
- package/dist/src/commands/process.d.ts.map +1 -1
- package/dist/src/commands/process.js +95 -20
- package/dist/src/commands/process.js.map +1 -1
- package/dist/src/commands/providers.d.ts +10 -0
- package/dist/src/commands/providers.d.ts.map +1 -0
- package/dist/src/commands/providers.js +232 -0
- package/dist/src/commands/providers.js.map +1 -0
- package/dist/src/commands/route.d.ts +16 -0
- package/dist/src/commands/route.d.ts.map +1 -0
- package/dist/src/commands/route.js +603 -0
- package/dist/src/commands/route.js.map +1 -0
- package/dist/src/commands/security.d.ts +10 -0
- package/dist/src/commands/security.d.ts.map +1 -0
- package/dist/src/commands/security.js +261 -0
- package/dist/src/commands/security.js.map +1 -0
- package/dist/src/commands/start.js +2 -2
- package/dist/src/commands/start.js.map +1 -1
- package/dist/src/commands/status.d.ts.map +1 -1
- package/dist/src/commands/status.js +26 -2
- package/dist/src/commands/status.js.map +1 -1
- package/dist/src/commands/swarm.js +6 -6
- package/dist/src/commands/swarm.js.map +1 -1
- package/dist/src/index.d.ts +4 -2
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js +63 -5
- package/dist/src/index.js.map +1 -1
- package/dist/src/init/claudemd-generator.d.ts.map +1 -1
- package/dist/src/init/claudemd-generator.js +218 -362
- package/dist/src/init/claudemd-generator.js.map +1 -1
- package/dist/src/init/executor.d.ts.map +1 -1
- package/dist/src/init/executor.js +5 -0
- package/dist/src/init/executor.js.map +1 -1
- package/dist/src/init/settings-generator.d.ts.map +1 -1
- package/dist/src/init/settings-generator.js +22 -12
- package/dist/src/init/settings-generator.js.map +1 -1
- package/dist/src/mcp-client.d.ts.map +1 -1
- package/dist/src/mcp-client.js +17 -1
- package/dist/src/mcp-client.js.map +1 -1
- package/dist/src/mcp-server.d.ts.map +1 -1
- package/dist/src/mcp-server.js +5 -0
- package/dist/src/mcp-server.js.map +1 -1
- package/dist/src/mcp-tools/agent-tools.d.ts +1 -1
- package/dist/src/mcp-tools/agent-tools.d.ts.map +1 -1
- package/dist/src/mcp-tools/agent-tools.js +350 -14
- package/dist/src/mcp-tools/agent-tools.js.map +1 -1
- package/dist/src/mcp-tools/analyze-tools.d.ts +38 -0
- package/dist/src/mcp-tools/analyze-tools.d.ts.map +1 -0
- package/dist/src/mcp-tools/analyze-tools.js +317 -0
- package/dist/src/mcp-tools/analyze-tools.js.map +1 -0
- package/dist/src/mcp-tools/config-tools.d.ts +1 -1
- package/dist/src/mcp-tools/config-tools.d.ts.map +1 -1
- package/dist/src/mcp-tools/config-tools.js +262 -15
- package/dist/src/mcp-tools/config-tools.js.map +1 -1
- package/dist/src/mcp-tools/hive-mind-tools.d.ts +8 -0
- package/dist/src/mcp-tools/hive-mind-tools.d.ts.map +1 -0
- package/dist/src/mcp-tools/hive-mind-tools.js +447 -0
- package/dist/src/mcp-tools/hive-mind-tools.js.map +1 -0
- package/dist/src/mcp-tools/hooks-tools.d.ts.map +1 -1
- package/dist/src/mcp-tools/hooks-tools.js +80 -15
- package/dist/src/mcp-tools/hooks-tools.js.map +1 -1
- package/dist/src/mcp-tools/index.d.ts +6 -0
- package/dist/src/mcp-tools/index.d.ts.map +1 -1
- package/dist/src/mcp-tools/index.js +6 -0
- package/dist/src/mcp-tools/index.js.map +1 -1
- package/dist/src/mcp-tools/memory-tools.d.ts +1 -1
- package/dist/src/mcp-tools/memory-tools.d.ts.map +1 -1
- package/dist/src/mcp-tools/memory-tools.js +157 -9
- package/dist/src/mcp-tools/memory-tools.js.map +1 -1
- package/dist/src/mcp-tools/session-tools.d.ts +8 -0
- package/dist/src/mcp-tools/session-tools.d.ts.map +1 -0
- package/dist/src/mcp-tools/session-tools.js +315 -0
- package/dist/src/mcp-tools/session-tools.js.map +1 -0
- package/dist/src/mcp-tools/swarm-tools.d.ts.map +1 -1
- package/dist/src/mcp-tools/swarm-tools.js +37 -2
- package/dist/src/mcp-tools/swarm-tools.js.map +1 -1
- package/dist/src/mcp-tools/task-tools.d.ts +8 -0
- package/dist/src/mcp-tools/task-tools.d.ts.map +1 -0
- package/dist/src/mcp-tools/task-tools.js +302 -0
- package/dist/src/mcp-tools/task-tools.js.map +1 -0
- package/dist/src/mcp-tools/workflow-tools.d.ts +8 -0
- package/dist/src/mcp-tools/workflow-tools.d.ts.map +1 -0
- package/dist/src/mcp-tools/workflow-tools.js +481 -0
- package/dist/src/mcp-tools/workflow-tools.js.map +1 -0
- package/dist/src/output.d.ts +16 -0
- package/dist/src/output.d.ts.map +1 -1
- package/dist/src/output.js +42 -0
- package/dist/src/output.js.map +1 -1
- package/dist/src/ruvector/ast-analyzer.d.ts +67 -0
- package/dist/src/ruvector/ast-analyzer.d.ts.map +1 -0
- package/dist/src/ruvector/ast-analyzer.js +277 -0
- package/dist/src/ruvector/ast-analyzer.js.map +1 -0
- package/dist/src/ruvector/coverage-router.d.ts +145 -0
- package/dist/src/ruvector/coverage-router.d.ts.map +1 -0
- package/dist/src/ruvector/coverage-router.js +451 -0
- package/dist/src/ruvector/coverage-router.js.map +1 -0
- package/dist/src/ruvector/coverage-tools.d.ts +33 -0
- package/dist/src/ruvector/coverage-tools.d.ts.map +1 -0
- package/dist/src/ruvector/coverage-tools.js +157 -0
- package/dist/src/ruvector/coverage-tools.js.map +1 -0
- package/dist/src/ruvector/diff-classifier.d.ts +175 -0
- package/dist/src/ruvector/diff-classifier.d.ts.map +1 -0
- package/dist/src/ruvector/diff-classifier.js +662 -0
- package/dist/src/ruvector/diff-classifier.js.map +1 -0
- package/dist/src/ruvector/graph-analyzer.d.ts +174 -0
- package/dist/src/ruvector/graph-analyzer.d.ts.map +1 -0
- package/dist/src/ruvector/graph-analyzer.js +878 -0
- package/dist/src/ruvector/graph-analyzer.js.map +1 -0
- package/dist/src/ruvector/index.d.ts +27 -0
- package/dist/src/ruvector/index.d.ts.map +1 -0
- package/dist/src/ruvector/index.js +49 -0
- package/dist/src/ruvector/index.js.map +1 -0
- package/dist/src/ruvector/q-learning-router.d.ts +211 -0
- package/dist/src/ruvector/q-learning-router.d.ts.map +1 -0
- package/dist/src/ruvector/q-learning-router.js +681 -0
- package/dist/src/ruvector/q-learning-router.js.map +1 -0
- package/dist/src/ruvector/vector-db.d.ts +69 -0
- package/dist/src/ruvector/vector-db.d.ts.map +1 -0
- package/dist/src/ruvector/vector-db.js +243 -0
- package/dist/src/ruvector/vector-db.js.map +1 -0
- package/dist/src/services/index.d.ts +7 -0
- package/dist/src/services/index.d.ts.map +1 -0
- package/dist/src/services/index.js +6 -0
- package/dist/src/services/index.js.map +1 -0
- package/dist/src/services/worker-daemon.d.ts +153 -0
- package/dist/src/services/worker-daemon.d.ts.map +1 -0
- package/dist/src/services/worker-daemon.js +567 -0
- package/dist/src/services/worker-daemon.js.map +1 -0
- package/dist/src/suggest.d.ts +53 -0
- package/dist/src/suggest.d.ts.map +1 -0
- package/dist/src/suggest.js +200 -0
- package/dist/src/suggest.js.map +1 -0
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +28 -6
- package/.agentic-flow/intelligence.json +0 -16
- package/.claude-flow/metrics/agent-metrics.json +0 -1
- package/.claude-flow/metrics/performance.json +0 -87
- package/.claude-flow/metrics/task-metrics.json +0 -10
- package/__tests__/README.md +0 -140
- package/__tests__/TEST_SUMMARY.md +0 -144
- package/__tests__/cli.test.ts +0 -558
- package/__tests__/commands.test.ts +0 -726
- package/__tests__/config-adapter.test.ts +0 -362
- package/__tests__/config-loading.test.ts +0 -106
- package/__tests__/coverage/.tmp/coverage-0.json +0 -1
- package/__tests__/coverage/.tmp/coverage-1.json +0 -1
- package/__tests__/coverage/.tmp/coverage-2.json +0 -1
- package/__tests__/coverage/.tmp/coverage-3.json +0 -1
- package/__tests__/coverage/.tmp/coverage-4.json +0 -1
- package/__tests__/coverage/.tmp/coverage-5.json +0 -1
- package/__tests__/mcp-client.test.ts +0 -480
- package/__tests__/p1-commands.test.ts +0 -1064
- package/docs/CONFIG_LOADING.md +0 -236
- package/docs/IMPLEMENTATION_COMPLETE.md +0 -421
- package/docs/MCP_CLIENT_GUIDE.md +0 -620
- package/docs/REFACTORING_SUMMARY.md +0 -247
- package/src/commands/agent.ts +0 -941
- package/src/commands/config.ts +0 -452
- package/src/commands/hive-mind.ts +0 -762
- package/src/commands/hooks.ts +0 -2603
- package/src/commands/index.ts +0 -115
- package/src/commands/init.ts +0 -597
- package/src/commands/mcp.ts +0 -753
- package/src/commands/memory.ts +0 -1063
- package/src/commands/migrate.ts +0 -447
- package/src/commands/process.ts +0 -617
- package/src/commands/session.ts +0 -891
- package/src/commands/start.ts +0 -457
- package/src/commands/status.ts +0 -705
- package/src/commands/swarm.ts +0 -648
- package/src/commands/task.ts +0 -792
- package/src/commands/workflow.ts +0 -742
- package/src/config-adapter.ts +0 -210
- package/src/index.ts +0 -383
- package/src/infrastructure/in-memory-repositories.ts +0 -310
- package/src/init/claudemd-generator.ts +0 -631
- package/src/init/executor.ts +0 -756
- package/src/init/helpers-generator.ts +0 -628
- package/src/init/index.ts +0 -60
- package/src/init/mcp-generator.ts +0 -83
- package/src/init/settings-generator.ts +0 -274
- package/src/init/statusline-generator.ts +0 -211
- package/src/init/types.ts +0 -447
- package/src/mcp-client.ts +0 -227
- package/src/mcp-server.ts +0 -571
- package/src/mcp-tools/agent-tools.ts +0 -92
- package/src/mcp-tools/config-tools.ts +0 -88
- package/src/mcp-tools/hooks-tools.ts +0 -1819
- package/src/mcp-tools/index.ts +0 -12
- package/src/mcp-tools/memory-tools.ts +0 -89
- package/src/mcp-tools/swarm-tools.ts +0 -69
- package/src/mcp-tools/types.ts +0 -33
- package/src/output.ts +0 -593
- package/src/parser.ts +0 -417
- package/src/prompt.ts +0 -619
- package/src/types.ts +0 -287
- package/tmp.json +0 -0
- package/tsconfig.json +0 -16
- package/tsconfig.tsbuildinfo +0 -1
- package/vitest.config.ts +0 -13
|
@@ -1,762 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* V3 CLI Hive Mind Command
|
|
3
|
-
* Queen-led consensus-based multi-agent coordination
|
|
4
|
-
*/
|
|
5
|
-
|
|
6
|
-
import type { Command, CommandContext, CommandResult } from '../types.js';
|
|
7
|
-
import { output } from '../output.js';
|
|
8
|
-
import { select, confirm, input } from '../prompt.js';
|
|
9
|
-
import { callMCPTool, MCPClientError } from '../mcp-client.js';
|
|
10
|
-
|
|
11
|
-
// Hive topologies
|
|
12
|
-
const TOPOLOGIES = [
|
|
13
|
-
{ value: 'hierarchical', label: 'Hierarchical', hint: 'Queen-led with worker agents' },
|
|
14
|
-
{ value: 'mesh', label: 'Mesh', hint: 'Peer-to-peer coordination' },
|
|
15
|
-
{ value: 'hierarchical-mesh', label: 'Hierarchical Mesh', hint: 'Queen + peer communication (recommended)' },
|
|
16
|
-
{ value: 'adaptive', label: 'Adaptive', hint: 'Dynamic topology based on task' }
|
|
17
|
-
];
|
|
18
|
-
|
|
19
|
-
// Consensus strategies
|
|
20
|
-
const CONSENSUS_STRATEGIES = [
|
|
21
|
-
{ value: 'byzantine', label: 'Byzantine Fault Tolerant', hint: '2/3 majority, handles malicious actors' },
|
|
22
|
-
{ value: 'raft', label: 'Raft', hint: 'Leader-based consensus' },
|
|
23
|
-
{ value: 'gossip', label: 'Gossip', hint: 'Eventually consistent, scalable' },
|
|
24
|
-
{ value: 'crdt', label: 'CRDT', hint: 'Conflict-free replicated data' },
|
|
25
|
-
{ value: 'quorum', label: 'Quorum', hint: 'Simple majority voting' }
|
|
26
|
-
];
|
|
27
|
-
|
|
28
|
-
// Init subcommand
|
|
29
|
-
const initCommand: Command = {
|
|
30
|
-
name: 'init',
|
|
31
|
-
description: 'Initialize a hive mind',
|
|
32
|
-
options: [
|
|
33
|
-
{
|
|
34
|
-
name: 'topology',
|
|
35
|
-
short: 't',
|
|
36
|
-
description: 'Hive topology',
|
|
37
|
-
type: 'string',
|
|
38
|
-
choices: TOPOLOGIES.map(t => t.value),
|
|
39
|
-
default: 'hierarchical-mesh'
|
|
40
|
-
},
|
|
41
|
-
{
|
|
42
|
-
name: 'consensus',
|
|
43
|
-
short: 'c',
|
|
44
|
-
description: 'Consensus strategy',
|
|
45
|
-
type: 'string',
|
|
46
|
-
choices: CONSENSUS_STRATEGIES.map(s => s.value),
|
|
47
|
-
default: 'byzantine'
|
|
48
|
-
},
|
|
49
|
-
{
|
|
50
|
-
name: 'max-agents',
|
|
51
|
-
short: 'm',
|
|
52
|
-
description: 'Maximum agents',
|
|
53
|
-
type: 'number',
|
|
54
|
-
default: 15
|
|
55
|
-
},
|
|
56
|
-
{
|
|
57
|
-
name: 'persist',
|
|
58
|
-
short: 'p',
|
|
59
|
-
description: 'Enable persistent state',
|
|
60
|
-
type: 'boolean',
|
|
61
|
-
default: true
|
|
62
|
-
},
|
|
63
|
-
{
|
|
64
|
-
name: 'memory-backend',
|
|
65
|
-
description: 'Memory backend (agentdb, sqlite, hybrid)',
|
|
66
|
-
type: 'string',
|
|
67
|
-
default: 'hybrid'
|
|
68
|
-
}
|
|
69
|
-
],
|
|
70
|
-
examples: [
|
|
71
|
-
{ command: 'claude-flow hive-mind init -t hierarchical-mesh', description: 'Init hierarchical mesh' },
|
|
72
|
-
{ command: 'claude-flow hive-mind init -c byzantine -m 20', description: 'Init with Byzantine consensus' }
|
|
73
|
-
],
|
|
74
|
-
action: async (ctx: CommandContext): Promise<CommandResult> => {
|
|
75
|
-
let topology = ctx.flags.topology as string;
|
|
76
|
-
let consensus = ctx.flags.consensus as string;
|
|
77
|
-
|
|
78
|
-
if (ctx.interactive && !ctx.flags.topology) {
|
|
79
|
-
topology = await select({
|
|
80
|
-
message: 'Select hive topology:',
|
|
81
|
-
options: TOPOLOGIES,
|
|
82
|
-
default: 'hierarchical-mesh'
|
|
83
|
-
});
|
|
84
|
-
}
|
|
85
|
-
|
|
86
|
-
if (ctx.interactive && !ctx.flags.consensus) {
|
|
87
|
-
consensus = await select({
|
|
88
|
-
message: 'Select consensus strategy:',
|
|
89
|
-
options: CONSENSUS_STRATEGIES,
|
|
90
|
-
default: 'byzantine'
|
|
91
|
-
});
|
|
92
|
-
}
|
|
93
|
-
|
|
94
|
-
const config = {
|
|
95
|
-
topology: topology || 'hierarchical-mesh',
|
|
96
|
-
consensus: consensus || 'byzantine',
|
|
97
|
-
maxAgents: ctx.flags.maxAgents as number || 15,
|
|
98
|
-
persist: ctx.flags.persist as boolean,
|
|
99
|
-
memoryBackend: ctx.flags.memoryBackend as string || 'hybrid'
|
|
100
|
-
};
|
|
101
|
-
|
|
102
|
-
output.writeln();
|
|
103
|
-
output.writeln(output.bold('Initializing Hive Mind'));
|
|
104
|
-
|
|
105
|
-
const spinner = output.createSpinner({ text: 'Setting up hive infrastructure...', spinner: 'dots' });
|
|
106
|
-
spinner.start();
|
|
107
|
-
|
|
108
|
-
try {
|
|
109
|
-
const result = await callMCPTool<{
|
|
110
|
-
hiveId: string;
|
|
111
|
-
topology: string;
|
|
112
|
-
consensus: string;
|
|
113
|
-
queenId: string;
|
|
114
|
-
status: 'initialized' | 'ready';
|
|
115
|
-
config: typeof config;
|
|
116
|
-
}>('hive-mind/init', config);
|
|
117
|
-
|
|
118
|
-
spinner.succeed('Hive Mind initialized');
|
|
119
|
-
|
|
120
|
-
if (ctx.flags.format === 'json') {
|
|
121
|
-
output.printJson(result);
|
|
122
|
-
return { success: true, data: result };
|
|
123
|
-
}
|
|
124
|
-
|
|
125
|
-
output.writeln();
|
|
126
|
-
output.printBox(
|
|
127
|
-
[
|
|
128
|
-
`Hive ID: ${result.hiveId}`,
|
|
129
|
-
`Queen ID: ${result.queenId}`,
|
|
130
|
-
`Topology: ${result.topology}`,
|
|
131
|
-
`Consensus: ${result.consensus}`,
|
|
132
|
-
`Max Agents: ${config.maxAgents}`,
|
|
133
|
-
`Memory: ${config.memoryBackend}`,
|
|
134
|
-
`Status: ${output.success(result.status)}`
|
|
135
|
-
].join('\n'),
|
|
136
|
-
'Hive Mind Configuration'
|
|
137
|
-
);
|
|
138
|
-
|
|
139
|
-
output.writeln();
|
|
140
|
-
output.printInfo('Queen agent is ready to coordinate worker agents');
|
|
141
|
-
output.writeln(output.dim(' Use "claude-flow hive-mind spawn" to add workers'));
|
|
142
|
-
|
|
143
|
-
return { success: true, data: result };
|
|
144
|
-
} catch (error) {
|
|
145
|
-
spinner.fail('Failed to initialize');
|
|
146
|
-
if (error instanceof MCPClientError) {
|
|
147
|
-
output.printError(`Init error: ${error.message}`);
|
|
148
|
-
} else {
|
|
149
|
-
output.printError(`Unexpected error: ${String(error)}`);
|
|
150
|
-
}
|
|
151
|
-
return { success: false, exitCode: 1 };
|
|
152
|
-
}
|
|
153
|
-
}
|
|
154
|
-
};
|
|
155
|
-
|
|
156
|
-
// Spawn subcommand
|
|
157
|
-
const spawnCommand: Command = {
|
|
158
|
-
name: 'spawn',
|
|
159
|
-
description: 'Spawn worker agents into the hive',
|
|
160
|
-
options: [
|
|
161
|
-
{
|
|
162
|
-
name: 'count',
|
|
163
|
-
short: 'n',
|
|
164
|
-
description: 'Number of workers to spawn',
|
|
165
|
-
type: 'number',
|
|
166
|
-
default: 1
|
|
167
|
-
},
|
|
168
|
-
{
|
|
169
|
-
name: 'type',
|
|
170
|
-
short: 't',
|
|
171
|
-
description: 'Agent type',
|
|
172
|
-
type: 'string',
|
|
173
|
-
default: 'worker'
|
|
174
|
-
},
|
|
175
|
-
{
|
|
176
|
-
name: 'capabilities',
|
|
177
|
-
short: 'c',
|
|
178
|
-
description: 'Comma-separated capabilities',
|
|
179
|
-
type: 'string'
|
|
180
|
-
},
|
|
181
|
-
{
|
|
182
|
-
name: 'priority',
|
|
183
|
-
short: 'p',
|
|
184
|
-
description: 'Agent priority (low, normal, high)',
|
|
185
|
-
type: 'string',
|
|
186
|
-
default: 'normal'
|
|
187
|
-
}
|
|
188
|
-
],
|
|
189
|
-
examples: [
|
|
190
|
-
{ command: 'claude-flow hive-mind spawn -n 5', description: 'Spawn 5 workers' },
|
|
191
|
-
{ command: 'claude-flow hive-mind spawn -t coder -c "coding,testing"', description: 'Spawn coder with capabilities' }
|
|
192
|
-
],
|
|
193
|
-
action: async (ctx: CommandContext): Promise<CommandResult> => {
|
|
194
|
-
const count = ctx.flags.count as number;
|
|
195
|
-
const type = ctx.flags.type as string;
|
|
196
|
-
const capabilities = ctx.flags.capabilities ? (ctx.flags.capabilities as string).split(',') : [];
|
|
197
|
-
const priority = ctx.flags.priority as string;
|
|
198
|
-
|
|
199
|
-
output.printInfo(`Spawning ${count} ${type} agent(s)...`);
|
|
200
|
-
|
|
201
|
-
try {
|
|
202
|
-
const result = await callMCPTool<{
|
|
203
|
-
spawned: Array<{
|
|
204
|
-
id: string;
|
|
205
|
-
type: string;
|
|
206
|
-
status: string;
|
|
207
|
-
assignedQueen: string;
|
|
208
|
-
}>;
|
|
209
|
-
total: number;
|
|
210
|
-
hiveStatus: {
|
|
211
|
-
activeAgents: number;
|
|
212
|
-
maxAgents: number;
|
|
213
|
-
queenLoad: string;
|
|
214
|
-
};
|
|
215
|
-
}>('hive-mind/spawn', {
|
|
216
|
-
count,
|
|
217
|
-
agentType: type,
|
|
218
|
-
capabilities,
|
|
219
|
-
priority,
|
|
220
|
-
});
|
|
221
|
-
|
|
222
|
-
if (ctx.flags.format === 'json') {
|
|
223
|
-
output.printJson(result);
|
|
224
|
-
return { success: true, data: result };
|
|
225
|
-
}
|
|
226
|
-
|
|
227
|
-
output.writeln();
|
|
228
|
-
output.printTable({
|
|
229
|
-
columns: [
|
|
230
|
-
{ key: 'id', header: 'Agent ID', width: 20 },
|
|
231
|
-
{ key: 'type', header: 'Type', width: 12 },
|
|
232
|
-
{ key: 'status', header: 'Status', width: 12, format: formatAgentStatus },
|
|
233
|
-
{ key: 'assignedQueen', header: 'Queen', width: 15 }
|
|
234
|
-
],
|
|
235
|
-
data: result.spawned
|
|
236
|
-
});
|
|
237
|
-
|
|
238
|
-
output.writeln();
|
|
239
|
-
output.printSuccess(`Spawned ${result.spawned.length} agent(s)`);
|
|
240
|
-
output.writeln(output.dim(` Hive: ${result.hiveStatus.activeAgents}/${result.hiveStatus.maxAgents} agents, Queen load: ${result.hiveStatus.queenLoad}`));
|
|
241
|
-
|
|
242
|
-
return { success: true, data: result };
|
|
243
|
-
} catch (error) {
|
|
244
|
-
if (error instanceof MCPClientError) {
|
|
245
|
-
output.printError(`Spawn error: ${error.message}`);
|
|
246
|
-
} else {
|
|
247
|
-
output.printError(`Unexpected error: ${String(error)}`);
|
|
248
|
-
}
|
|
249
|
-
return { success: false, exitCode: 1 };
|
|
250
|
-
}
|
|
251
|
-
}
|
|
252
|
-
};
|
|
253
|
-
|
|
254
|
-
// Status subcommand
|
|
255
|
-
const statusCommand: Command = {
|
|
256
|
-
name: 'status',
|
|
257
|
-
description: 'Show hive mind status',
|
|
258
|
-
options: [
|
|
259
|
-
{
|
|
260
|
-
name: 'detailed',
|
|
261
|
-
short: 'd',
|
|
262
|
-
description: 'Show detailed metrics',
|
|
263
|
-
type: 'boolean',
|
|
264
|
-
default: false
|
|
265
|
-
},
|
|
266
|
-
{
|
|
267
|
-
name: 'watch',
|
|
268
|
-
short: 'w',
|
|
269
|
-
description: 'Watch for changes',
|
|
270
|
-
type: 'boolean',
|
|
271
|
-
default: false
|
|
272
|
-
}
|
|
273
|
-
],
|
|
274
|
-
action: async (ctx: CommandContext): Promise<CommandResult> => {
|
|
275
|
-
const detailed = ctx.flags.detailed as boolean;
|
|
276
|
-
|
|
277
|
-
try {
|
|
278
|
-
const result = await callMCPTool<{
|
|
279
|
-
hiveId: string;
|
|
280
|
-
status: 'active' | 'idle' | 'degraded' | 'offline';
|
|
281
|
-
topology: string;
|
|
282
|
-
consensus: string;
|
|
283
|
-
queen: {
|
|
284
|
-
id: string;
|
|
285
|
-
status: string;
|
|
286
|
-
load: number;
|
|
287
|
-
tasksQueued: number;
|
|
288
|
-
};
|
|
289
|
-
workers: Array<{
|
|
290
|
-
id: string;
|
|
291
|
-
type: string;
|
|
292
|
-
status: string;
|
|
293
|
-
currentTask?: string;
|
|
294
|
-
tasksCompleted: number;
|
|
295
|
-
}>;
|
|
296
|
-
metrics: {
|
|
297
|
-
totalTasks: number;
|
|
298
|
-
completedTasks: number;
|
|
299
|
-
failedTasks: number;
|
|
300
|
-
avgTaskTime: number;
|
|
301
|
-
consensusRounds: number;
|
|
302
|
-
memoryUsage: string;
|
|
303
|
-
};
|
|
304
|
-
health: {
|
|
305
|
-
overall: string;
|
|
306
|
-
queen: string;
|
|
307
|
-
workers: string;
|
|
308
|
-
consensus: string;
|
|
309
|
-
memory: string;
|
|
310
|
-
};
|
|
311
|
-
}>('hive-mind/status', {
|
|
312
|
-
includeMetrics: detailed,
|
|
313
|
-
includeWorkers: true,
|
|
314
|
-
});
|
|
315
|
-
|
|
316
|
-
if (ctx.flags.format === 'json') {
|
|
317
|
-
output.printJson(result);
|
|
318
|
-
return { success: true, data: result };
|
|
319
|
-
}
|
|
320
|
-
|
|
321
|
-
output.writeln();
|
|
322
|
-
output.printBox(
|
|
323
|
-
[
|
|
324
|
-
`Hive ID: ${result.hiveId}`,
|
|
325
|
-
`Status: ${formatHiveStatus(result.status)}`,
|
|
326
|
-
`Topology: ${result.topology}`,
|
|
327
|
-
`Consensus: ${result.consensus}`,
|
|
328
|
-
'',
|
|
329
|
-
`Queen: ${result.queen.id}`,
|
|
330
|
-
` Status: ${formatAgentStatus(result.queen.status)}`,
|
|
331
|
-
` Load: ${(result.queen.load * 100).toFixed(1)}%`,
|
|
332
|
-
` Queued Tasks: ${result.queen.tasksQueued}`
|
|
333
|
-
].join('\n'),
|
|
334
|
-
'Hive Mind Status'
|
|
335
|
-
);
|
|
336
|
-
|
|
337
|
-
output.writeln();
|
|
338
|
-
output.writeln(output.bold('Worker Agents'));
|
|
339
|
-
output.printTable({
|
|
340
|
-
columns: [
|
|
341
|
-
{ key: 'id', header: 'ID', width: 20 },
|
|
342
|
-
{ key: 'type', header: 'Type', width: 12 },
|
|
343
|
-
{ key: 'status', header: 'Status', width: 10, format: formatAgentStatus },
|
|
344
|
-
{ key: 'currentTask', header: 'Current Task', width: 20, format: (v: unknown) => String(v || '-') },
|
|
345
|
-
{ key: 'tasksCompleted', header: 'Completed', width: 10, align: 'right' }
|
|
346
|
-
],
|
|
347
|
-
data: result.workers
|
|
348
|
-
});
|
|
349
|
-
|
|
350
|
-
if (detailed) {
|
|
351
|
-
output.writeln();
|
|
352
|
-
output.writeln(output.bold('Metrics'));
|
|
353
|
-
output.printTable({
|
|
354
|
-
columns: [
|
|
355
|
-
{ key: 'metric', header: 'Metric', width: 20 },
|
|
356
|
-
{ key: 'value', header: 'Value', width: 15, align: 'right' }
|
|
357
|
-
],
|
|
358
|
-
data: [
|
|
359
|
-
{ metric: 'Total Tasks', value: result.metrics.totalTasks },
|
|
360
|
-
{ metric: 'Completed', value: result.metrics.completedTasks },
|
|
361
|
-
{ metric: 'Failed', value: result.metrics.failedTasks },
|
|
362
|
-
{ metric: 'Avg Task Time', value: `${result.metrics.avgTaskTime.toFixed(1)}ms` },
|
|
363
|
-
{ metric: 'Consensus Rounds', value: result.metrics.consensusRounds },
|
|
364
|
-
{ metric: 'Memory Usage', value: result.metrics.memoryUsage }
|
|
365
|
-
]
|
|
366
|
-
});
|
|
367
|
-
|
|
368
|
-
output.writeln();
|
|
369
|
-
output.writeln(output.bold('Health'));
|
|
370
|
-
output.printList([
|
|
371
|
-
`Overall: ${formatHealth(result.health.overall)}`,
|
|
372
|
-
`Queen: ${formatHealth(result.health.queen)}`,
|
|
373
|
-
`Workers: ${formatHealth(result.health.workers)}`,
|
|
374
|
-
`Consensus: ${formatHealth(result.health.consensus)}`,
|
|
375
|
-
`Memory: ${formatHealth(result.health.memory)}`
|
|
376
|
-
]);
|
|
377
|
-
}
|
|
378
|
-
|
|
379
|
-
return { success: true, data: result };
|
|
380
|
-
} catch (error) {
|
|
381
|
-
if (error instanceof MCPClientError) {
|
|
382
|
-
output.printError(`Status error: ${error.message}`);
|
|
383
|
-
} else {
|
|
384
|
-
output.printError(`Unexpected error: ${String(error)}`);
|
|
385
|
-
}
|
|
386
|
-
return { success: false, exitCode: 1 };
|
|
387
|
-
}
|
|
388
|
-
}
|
|
389
|
-
};
|
|
390
|
-
|
|
391
|
-
// Task subcommand
|
|
392
|
-
const taskCommand: Command = {
|
|
393
|
-
name: 'task',
|
|
394
|
-
description: 'Submit tasks to the hive',
|
|
395
|
-
options: [
|
|
396
|
-
{
|
|
397
|
-
name: 'description',
|
|
398
|
-
short: 'd',
|
|
399
|
-
description: 'Task description',
|
|
400
|
-
type: 'string'
|
|
401
|
-
},
|
|
402
|
-
{
|
|
403
|
-
name: 'priority',
|
|
404
|
-
short: 'p',
|
|
405
|
-
description: 'Task priority',
|
|
406
|
-
type: 'string',
|
|
407
|
-
choices: ['low', 'normal', 'high', 'critical'],
|
|
408
|
-
default: 'normal'
|
|
409
|
-
},
|
|
410
|
-
{
|
|
411
|
-
name: 'require-consensus',
|
|
412
|
-
short: 'c',
|
|
413
|
-
description: 'Require consensus for completion',
|
|
414
|
-
type: 'boolean',
|
|
415
|
-
default: false
|
|
416
|
-
},
|
|
417
|
-
{
|
|
418
|
-
name: 'timeout',
|
|
419
|
-
description: 'Task timeout in seconds',
|
|
420
|
-
type: 'number',
|
|
421
|
-
default: 300
|
|
422
|
-
}
|
|
423
|
-
],
|
|
424
|
-
examples: [
|
|
425
|
-
{ command: 'claude-flow hive-mind task -d "Implement auth module"', description: 'Submit task' },
|
|
426
|
-
{ command: 'claude-flow hive-mind task -d "Security review" -p critical -c', description: 'Critical task with consensus' }
|
|
427
|
-
],
|
|
428
|
-
action: async (ctx: CommandContext): Promise<CommandResult> => {
|
|
429
|
-
let description = ctx.flags.description as string || ctx.args.join(' ');
|
|
430
|
-
|
|
431
|
-
if (!description && ctx.interactive) {
|
|
432
|
-
description = await input({
|
|
433
|
-
message: 'Task description:',
|
|
434
|
-
validate: (v) => v.length > 0 || 'Description is required'
|
|
435
|
-
});
|
|
436
|
-
}
|
|
437
|
-
|
|
438
|
-
if (!description) {
|
|
439
|
-
output.printError('Task description is required');
|
|
440
|
-
return { success: false, exitCode: 1 };
|
|
441
|
-
}
|
|
442
|
-
|
|
443
|
-
const priority = ctx.flags.priority as string;
|
|
444
|
-
const requireConsensus = ctx.flags.requireConsensus as boolean;
|
|
445
|
-
const timeout = ctx.flags.timeout as number;
|
|
446
|
-
|
|
447
|
-
output.printInfo('Submitting task to hive...');
|
|
448
|
-
|
|
449
|
-
try {
|
|
450
|
-
const result = await callMCPTool<{
|
|
451
|
-
taskId: string;
|
|
452
|
-
description: string;
|
|
453
|
-
status: string;
|
|
454
|
-
assignedTo: string[];
|
|
455
|
-
priority: string;
|
|
456
|
-
requiresConsensus: boolean;
|
|
457
|
-
estimatedTime: string;
|
|
458
|
-
}>('hive-mind/task', {
|
|
459
|
-
description,
|
|
460
|
-
priority,
|
|
461
|
-
requireConsensus,
|
|
462
|
-
timeout,
|
|
463
|
-
});
|
|
464
|
-
|
|
465
|
-
if (ctx.flags.format === 'json') {
|
|
466
|
-
output.printJson(result);
|
|
467
|
-
return { success: true, data: result };
|
|
468
|
-
}
|
|
469
|
-
|
|
470
|
-
output.writeln();
|
|
471
|
-
output.printBox(
|
|
472
|
-
[
|
|
473
|
-
`Task ID: ${result.taskId}`,
|
|
474
|
-
`Status: ${formatAgentStatus(result.status)}`,
|
|
475
|
-
`Priority: ${formatPriority(priority)}`,
|
|
476
|
-
`Assigned: ${result.assignedTo.join(', ')}`,
|
|
477
|
-
`Consensus: ${result.requiresConsensus ? 'Yes' : 'No'}`,
|
|
478
|
-
`Est. Time: ${result.estimatedTime}`
|
|
479
|
-
].join('\n'),
|
|
480
|
-
'Task Submitted'
|
|
481
|
-
);
|
|
482
|
-
|
|
483
|
-
output.writeln();
|
|
484
|
-
output.printSuccess('Task submitted to hive');
|
|
485
|
-
output.writeln(output.dim(` Track with: claude-flow hive-mind task-status ${result.taskId}`));
|
|
486
|
-
|
|
487
|
-
return { success: true, data: result };
|
|
488
|
-
} catch (error) {
|
|
489
|
-
if (error instanceof MCPClientError) {
|
|
490
|
-
output.printError(`Task submission error: ${error.message}`);
|
|
491
|
-
} else {
|
|
492
|
-
output.printError(`Unexpected error: ${String(error)}`);
|
|
493
|
-
}
|
|
494
|
-
return { success: false, exitCode: 1 };
|
|
495
|
-
}
|
|
496
|
-
}
|
|
497
|
-
};
|
|
498
|
-
|
|
499
|
-
// Optimize memory subcommand
|
|
500
|
-
const optimizeMemoryCommand: Command = {
|
|
501
|
-
name: 'optimize-memory',
|
|
502
|
-
description: 'Optimize hive memory and patterns',
|
|
503
|
-
options: [
|
|
504
|
-
{
|
|
505
|
-
name: 'aggressive',
|
|
506
|
-
short: 'a',
|
|
507
|
-
description: 'Aggressive optimization',
|
|
508
|
-
type: 'boolean',
|
|
509
|
-
default: false
|
|
510
|
-
},
|
|
511
|
-
{
|
|
512
|
-
name: 'threshold',
|
|
513
|
-
description: 'Quality threshold for pattern retention',
|
|
514
|
-
type: 'number',
|
|
515
|
-
default: 0.7
|
|
516
|
-
}
|
|
517
|
-
],
|
|
518
|
-
action: async (ctx: CommandContext): Promise<CommandResult> => {
|
|
519
|
-
const aggressive = ctx.flags.aggressive as boolean;
|
|
520
|
-
const threshold = ctx.flags.threshold as number;
|
|
521
|
-
|
|
522
|
-
output.printInfo('Optimizing hive memory...');
|
|
523
|
-
|
|
524
|
-
const spinner = output.createSpinner({ text: 'Analyzing patterns...', spinner: 'dots' });
|
|
525
|
-
spinner.start();
|
|
526
|
-
|
|
527
|
-
try {
|
|
528
|
-
const result = await callMCPTool<{
|
|
529
|
-
optimized: boolean;
|
|
530
|
-
before: { patterns: number; memory: string };
|
|
531
|
-
after: { patterns: number; memory: string };
|
|
532
|
-
removed: number;
|
|
533
|
-
consolidated: number;
|
|
534
|
-
timeMs: number;
|
|
535
|
-
}>('hive-mind/optimize-memory', {
|
|
536
|
-
aggressive,
|
|
537
|
-
qualityThreshold: threshold,
|
|
538
|
-
});
|
|
539
|
-
|
|
540
|
-
spinner.succeed('Memory optimized');
|
|
541
|
-
|
|
542
|
-
if (ctx.flags.format === 'json') {
|
|
543
|
-
output.printJson(result);
|
|
544
|
-
return { success: true, data: result };
|
|
545
|
-
}
|
|
546
|
-
|
|
547
|
-
output.writeln();
|
|
548
|
-
output.printTable({
|
|
549
|
-
columns: [
|
|
550
|
-
{ key: 'metric', header: 'Metric', width: 20 },
|
|
551
|
-
{ key: 'before', header: 'Before', width: 15, align: 'right' },
|
|
552
|
-
{ key: 'after', header: 'After', width: 15, align: 'right' }
|
|
553
|
-
],
|
|
554
|
-
data: [
|
|
555
|
-
{ metric: 'Patterns', before: result.before.patterns, after: result.after.patterns },
|
|
556
|
-
{ metric: 'Memory', before: result.before.memory, after: result.after.memory }
|
|
557
|
-
]
|
|
558
|
-
});
|
|
559
|
-
|
|
560
|
-
output.writeln();
|
|
561
|
-
output.printList([
|
|
562
|
-
`Patterns removed: ${result.removed}`,
|
|
563
|
-
`Patterns consolidated: ${result.consolidated}`,
|
|
564
|
-
`Optimization time: ${result.timeMs}ms`
|
|
565
|
-
]);
|
|
566
|
-
|
|
567
|
-
return { success: true, data: result };
|
|
568
|
-
} catch (error) {
|
|
569
|
-
spinner.fail('Optimization failed');
|
|
570
|
-
if (error instanceof MCPClientError) {
|
|
571
|
-
output.printError(`Optimization error: ${error.message}`);
|
|
572
|
-
} else {
|
|
573
|
-
output.printError(`Unexpected error: ${String(error)}`);
|
|
574
|
-
}
|
|
575
|
-
return { success: false, exitCode: 1 };
|
|
576
|
-
}
|
|
577
|
-
}
|
|
578
|
-
};
|
|
579
|
-
|
|
580
|
-
// Shutdown subcommand
|
|
581
|
-
const shutdownCommand: Command = {
|
|
582
|
-
name: 'shutdown',
|
|
583
|
-
description: 'Shutdown the hive mind',
|
|
584
|
-
options: [
|
|
585
|
-
{
|
|
586
|
-
name: 'force',
|
|
587
|
-
short: 'f',
|
|
588
|
-
description: 'Force shutdown',
|
|
589
|
-
type: 'boolean',
|
|
590
|
-
default: false
|
|
591
|
-
},
|
|
592
|
-
{
|
|
593
|
-
name: 'save-state',
|
|
594
|
-
short: 's',
|
|
595
|
-
description: 'Save state before shutdown',
|
|
596
|
-
type: 'boolean',
|
|
597
|
-
default: true
|
|
598
|
-
}
|
|
599
|
-
],
|
|
600
|
-
action: async (ctx: CommandContext): Promise<CommandResult> => {
|
|
601
|
-
const force = ctx.flags.force as boolean;
|
|
602
|
-
const saveState = ctx.flags.saveState as boolean;
|
|
603
|
-
|
|
604
|
-
if (!force && ctx.interactive) {
|
|
605
|
-
const confirmed = await confirm({
|
|
606
|
-
message: 'Shutdown the hive mind? All agents will be terminated.',
|
|
607
|
-
default: false
|
|
608
|
-
});
|
|
609
|
-
|
|
610
|
-
if (!confirmed) {
|
|
611
|
-
output.printInfo('Operation cancelled');
|
|
612
|
-
return { success: true };
|
|
613
|
-
}
|
|
614
|
-
}
|
|
615
|
-
|
|
616
|
-
output.printInfo('Shutting down hive mind...');
|
|
617
|
-
|
|
618
|
-
const spinner = output.createSpinner({ text: 'Graceful shutdown in progress...', spinner: 'dots' });
|
|
619
|
-
spinner.start();
|
|
620
|
-
|
|
621
|
-
try {
|
|
622
|
-
const result = await callMCPTool<{
|
|
623
|
-
shutdown: boolean;
|
|
624
|
-
agentsTerminated: number;
|
|
625
|
-
stateSaved: boolean;
|
|
626
|
-
shutdownTime: string;
|
|
627
|
-
}>('hive-mind/shutdown', {
|
|
628
|
-
force,
|
|
629
|
-
saveState,
|
|
630
|
-
});
|
|
631
|
-
|
|
632
|
-
spinner.succeed('Hive mind shutdown complete');
|
|
633
|
-
|
|
634
|
-
output.writeln();
|
|
635
|
-
output.printList([
|
|
636
|
-
`Agents terminated: ${result.agentsTerminated}`,
|
|
637
|
-
`State saved: ${result.stateSaved ? 'Yes' : 'No'}`,
|
|
638
|
-
`Shutdown time: ${result.shutdownTime}`
|
|
639
|
-
]);
|
|
640
|
-
|
|
641
|
-
return { success: true, data: result };
|
|
642
|
-
} catch (error) {
|
|
643
|
-
spinner.fail('Shutdown failed');
|
|
644
|
-
if (error instanceof MCPClientError) {
|
|
645
|
-
output.printError(`Shutdown error: ${error.message}`);
|
|
646
|
-
} else {
|
|
647
|
-
output.printError(`Unexpected error: ${String(error)}`);
|
|
648
|
-
}
|
|
649
|
-
return { success: false, exitCode: 1 };
|
|
650
|
-
}
|
|
651
|
-
}
|
|
652
|
-
};
|
|
653
|
-
|
|
654
|
-
// Main hive-mind command
|
|
655
|
-
export const hiveMindCommand: Command = {
|
|
656
|
-
name: 'hive-mind',
|
|
657
|
-
aliases: ['hive'],
|
|
658
|
-
description: 'Queen-led consensus-based multi-agent coordination',
|
|
659
|
-
subcommands: [initCommand, spawnCommand, statusCommand, taskCommand, optimizeMemoryCommand, shutdownCommand],
|
|
660
|
-
options: [],
|
|
661
|
-
examples: [
|
|
662
|
-
{ command: 'claude-flow hive-mind init -t hierarchical-mesh', description: 'Initialize hive' },
|
|
663
|
-
{ command: 'claude-flow hive-mind spawn -n 5', description: 'Spawn workers' },
|
|
664
|
-
{ command: 'claude-flow hive-mind task -d "Build feature"', description: 'Submit task' }
|
|
665
|
-
],
|
|
666
|
-
action: async (): Promise<CommandResult> => {
|
|
667
|
-
output.writeln();
|
|
668
|
-
output.writeln(output.bold('Hive Mind - Consensus-Based Multi-Agent Coordination'));
|
|
669
|
-
output.writeln();
|
|
670
|
-
output.writeln('Usage: claude-flow hive-mind <subcommand> [options]');
|
|
671
|
-
output.writeln();
|
|
672
|
-
output.writeln('Subcommands:');
|
|
673
|
-
output.printList([
|
|
674
|
-
`${output.highlight('init')} - Initialize hive mind`,
|
|
675
|
-
`${output.highlight('spawn')} - Spawn worker agents`,
|
|
676
|
-
`${output.highlight('status')} - Show hive status`,
|
|
677
|
-
`${output.highlight('task')} - Submit task to hive`,
|
|
678
|
-
`${output.highlight('optimize-memory')} - Optimize patterns and memory`,
|
|
679
|
-
`${output.highlight('shutdown')} - Shutdown the hive`
|
|
680
|
-
]);
|
|
681
|
-
output.writeln();
|
|
682
|
-
output.writeln('Features:');
|
|
683
|
-
output.printList([
|
|
684
|
-
'Queen-led hierarchical coordination',
|
|
685
|
-
'Byzantine fault tolerant consensus',
|
|
686
|
-
'HNSW-accelerated pattern matching',
|
|
687
|
-
'Cross-session memory persistence',
|
|
688
|
-
'Automatic load balancing'
|
|
689
|
-
]);
|
|
690
|
-
|
|
691
|
-
return { success: true };
|
|
692
|
-
}
|
|
693
|
-
};
|
|
694
|
-
|
|
695
|
-
// Helper functions
|
|
696
|
-
function formatAgentStatus(status: unknown): string {
|
|
697
|
-
const statusStr = String(status);
|
|
698
|
-
switch (statusStr) {
|
|
699
|
-
case 'active':
|
|
700
|
-
case 'ready':
|
|
701
|
-
case 'running':
|
|
702
|
-
return output.success(statusStr);
|
|
703
|
-
case 'idle':
|
|
704
|
-
case 'waiting':
|
|
705
|
-
return output.dim(statusStr);
|
|
706
|
-
case 'busy':
|
|
707
|
-
return output.highlight(statusStr);
|
|
708
|
-
case 'error':
|
|
709
|
-
case 'failed':
|
|
710
|
-
return output.error(statusStr);
|
|
711
|
-
default:
|
|
712
|
-
return statusStr;
|
|
713
|
-
}
|
|
714
|
-
}
|
|
715
|
-
|
|
716
|
-
function formatHiveStatus(status: string): string {
|
|
717
|
-
switch (status) {
|
|
718
|
-
case 'active':
|
|
719
|
-
return output.success(status);
|
|
720
|
-
case 'idle':
|
|
721
|
-
return output.dim(status);
|
|
722
|
-
case 'degraded':
|
|
723
|
-
return output.warning(status);
|
|
724
|
-
case 'offline':
|
|
725
|
-
return output.error(status);
|
|
726
|
-
default:
|
|
727
|
-
return status;
|
|
728
|
-
}
|
|
729
|
-
}
|
|
730
|
-
|
|
731
|
-
function formatHealth(health: string): string {
|
|
732
|
-
switch (health) {
|
|
733
|
-
case 'healthy':
|
|
734
|
-
case 'good':
|
|
735
|
-
return output.success(health);
|
|
736
|
-
case 'warning':
|
|
737
|
-
case 'degraded':
|
|
738
|
-
return output.warning(health);
|
|
739
|
-
case 'critical':
|
|
740
|
-
case 'unhealthy':
|
|
741
|
-
return output.error(health);
|
|
742
|
-
default:
|
|
743
|
-
return health;
|
|
744
|
-
}
|
|
745
|
-
}
|
|
746
|
-
|
|
747
|
-
function formatPriority(priority: string): string {
|
|
748
|
-
switch (priority) {
|
|
749
|
-
case 'critical':
|
|
750
|
-
return output.error(priority.toUpperCase());
|
|
751
|
-
case 'high':
|
|
752
|
-
return output.warning(priority);
|
|
753
|
-
case 'normal':
|
|
754
|
-
return priority;
|
|
755
|
-
case 'low':
|
|
756
|
-
return output.dim(priority);
|
|
757
|
-
default:
|
|
758
|
-
return priority;
|
|
759
|
-
}
|
|
760
|
-
}
|
|
761
|
-
|
|
762
|
-
export default hiveMindCommand;
|