@claude-flow/cli 3.0.0-alpha.2 → 3.0.0-alpha.20
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 +154 -0
- package/dist/src/ruvector/diff-classifier.d.ts.map +1 -0
- package/dist/src/ruvector/diff-classifier.js +508 -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 +47 -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
package/src/commands/migrate.ts
DELETED
|
@@ -1,447 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* V3 CLI Migrate Command
|
|
3
|
-
* Migration tools for V2 to V3 transition
|
|
4
|
-
*/
|
|
5
|
-
|
|
6
|
-
import type { Command, CommandContext, CommandResult } from '../types.js';
|
|
7
|
-
import { output } from '../output.js';
|
|
8
|
-
import { select, confirm, multiSelect } from '../prompt.js';
|
|
9
|
-
|
|
10
|
-
// Migration targets
|
|
11
|
-
const MIGRATION_TARGETS = [
|
|
12
|
-
{ value: 'config', label: 'Configuration', hint: 'Migrate configuration files' },
|
|
13
|
-
{ value: 'memory', label: 'Memory Data', hint: 'Migrate memory/database content' },
|
|
14
|
-
{ value: 'agents', label: 'Agent Configs', hint: 'Migrate agent configurations' },
|
|
15
|
-
{ value: 'hooks', label: 'Hooks', hint: 'Migrate hook definitions' },
|
|
16
|
-
{ value: 'workflows', label: 'Workflows', hint: 'Migrate workflow definitions' },
|
|
17
|
-
{ value: 'all', label: 'All', hint: 'Full migration' }
|
|
18
|
-
];
|
|
19
|
-
|
|
20
|
-
// Status command
|
|
21
|
-
const statusCommand: Command = {
|
|
22
|
-
name: 'status',
|
|
23
|
-
description: 'Check migration status',
|
|
24
|
-
action: async (ctx: CommandContext): Promise<CommandResult> => {
|
|
25
|
-
const status = {
|
|
26
|
-
v2Version: '2.6.0',
|
|
27
|
-
v3Version: '3.0.0-alpha.1',
|
|
28
|
-
migrationState: 'partial',
|
|
29
|
-
components: [
|
|
30
|
-
{ name: 'Configuration', status: 'migrated', v2Path: './claude-flow.json', v3Path: './claude-flow.config.json' },
|
|
31
|
-
{ name: 'Memory Data', status: 'pending', v2Path: './.claude-flow/memory', v3Path: './data/memory' },
|
|
32
|
-
{ name: 'Agent Configs', status: 'pending', v2Path: './.claude-flow/agents', v3Path: './v3/agents' },
|
|
33
|
-
{ name: 'Hooks', status: 'pending', v2Path: './src/hooks', v3Path: './v3/hooks' },
|
|
34
|
-
{ name: 'Workflows', status: 'not-required', v2Path: 'N/A', v3Path: 'N/A' }
|
|
35
|
-
],
|
|
36
|
-
recommendations: [
|
|
37
|
-
'Backup v2 data before migration',
|
|
38
|
-
'Test migration in staging environment first',
|
|
39
|
-
'Review breaking changes in CHANGELOG.md'
|
|
40
|
-
]
|
|
41
|
-
};
|
|
42
|
-
|
|
43
|
-
if (ctx.flags.format === 'json') {
|
|
44
|
-
output.printJson(status);
|
|
45
|
-
return { success: true, data: status };
|
|
46
|
-
}
|
|
47
|
-
|
|
48
|
-
output.writeln();
|
|
49
|
-
output.writeln(output.bold('Migration Status'));
|
|
50
|
-
output.writeln();
|
|
51
|
-
output.writeln(`V2 Version: ${status.v2Version}`);
|
|
52
|
-
output.writeln(`V3 Version: ${status.v3Version}`);
|
|
53
|
-
output.writeln(`State: ${formatMigrationStatus(status.migrationState)}`);
|
|
54
|
-
output.writeln();
|
|
55
|
-
|
|
56
|
-
output.writeln(output.bold('Components'));
|
|
57
|
-
output.printTable({
|
|
58
|
-
columns: [
|
|
59
|
-
{ key: 'name', header: 'Component', width: 18 },
|
|
60
|
-
{ key: 'status', header: 'Status', width: 15, format: (v) => formatMigrationStatus(String(v)) },
|
|
61
|
-
{ key: 'v2Path', header: 'V2 Path', width: 25 },
|
|
62
|
-
{ key: 'v3Path', header: 'V3 Path', width: 25 }
|
|
63
|
-
],
|
|
64
|
-
data: status.components
|
|
65
|
-
});
|
|
66
|
-
|
|
67
|
-
output.writeln();
|
|
68
|
-
output.writeln(output.bold('Recommendations'));
|
|
69
|
-
output.printList(status.recommendations);
|
|
70
|
-
|
|
71
|
-
return { success: true, data: status };
|
|
72
|
-
}
|
|
73
|
-
};
|
|
74
|
-
|
|
75
|
-
// Run migration
|
|
76
|
-
const runCommand: Command = {
|
|
77
|
-
name: 'run',
|
|
78
|
-
description: 'Run migration',
|
|
79
|
-
options: [
|
|
80
|
-
{
|
|
81
|
-
name: 'target',
|
|
82
|
-
short: 't',
|
|
83
|
-
description: 'Migration target',
|
|
84
|
-
type: 'string',
|
|
85
|
-
choices: MIGRATION_TARGETS.map(t => t.value)
|
|
86
|
-
},
|
|
87
|
-
{
|
|
88
|
-
name: 'dry-run',
|
|
89
|
-
description: 'Show what would be migrated without making changes',
|
|
90
|
-
type: 'boolean',
|
|
91
|
-
default: false
|
|
92
|
-
},
|
|
93
|
-
{
|
|
94
|
-
name: 'backup',
|
|
95
|
-
description: 'Create backup before migration',
|
|
96
|
-
type: 'boolean',
|
|
97
|
-
default: true
|
|
98
|
-
},
|
|
99
|
-
{
|
|
100
|
-
name: 'force',
|
|
101
|
-
short: 'f',
|
|
102
|
-
description: 'Force migration (overwrite existing)',
|
|
103
|
-
type: 'boolean',
|
|
104
|
-
default: false
|
|
105
|
-
}
|
|
106
|
-
],
|
|
107
|
-
action: async (ctx: CommandContext): Promise<CommandResult> => {
|
|
108
|
-
let target = ctx.flags.target as string;
|
|
109
|
-
const dryRun = ctx.flags.dryRun as boolean;
|
|
110
|
-
const backup = ctx.flags.backup as boolean;
|
|
111
|
-
const force = ctx.flags.force as boolean;
|
|
112
|
-
|
|
113
|
-
if (!target && ctx.interactive) {
|
|
114
|
-
target = await select({
|
|
115
|
-
message: 'Select migration target:',
|
|
116
|
-
options: MIGRATION_TARGETS,
|
|
117
|
-
default: 'all'
|
|
118
|
-
});
|
|
119
|
-
}
|
|
120
|
-
|
|
121
|
-
target = target || 'all';
|
|
122
|
-
|
|
123
|
-
output.writeln();
|
|
124
|
-
|
|
125
|
-
if (dryRun) {
|
|
126
|
-
output.printInfo('DRY RUN - No changes will be made');
|
|
127
|
-
output.writeln();
|
|
128
|
-
}
|
|
129
|
-
|
|
130
|
-
output.printInfo(`Migrating: ${target}`);
|
|
131
|
-
output.writeln();
|
|
132
|
-
|
|
133
|
-
// Backup step
|
|
134
|
-
if (backup && !dryRun) {
|
|
135
|
-
output.writeln(output.dim('Creating backup...'));
|
|
136
|
-
output.writeln(output.dim(` Backup created: ./.claude-flow-backup-${Date.now()}`));
|
|
137
|
-
output.writeln();
|
|
138
|
-
}
|
|
139
|
-
|
|
140
|
-
// Migration steps based on target
|
|
141
|
-
const steps = getMigrationSteps(target);
|
|
142
|
-
|
|
143
|
-
for (const step of steps) {
|
|
144
|
-
output.writeln(`${output.info('>')} ${step.name}`);
|
|
145
|
-
output.writeln(output.dim(` ${step.description}`));
|
|
146
|
-
|
|
147
|
-
if (!dryRun) {
|
|
148
|
-
// Simulate migration
|
|
149
|
-
output.writeln(output.dim(` ${output.success('[OK]')} Completed`));
|
|
150
|
-
} else {
|
|
151
|
-
output.writeln(output.dim(` Would migrate: ${step.source} -> ${step.dest}`));
|
|
152
|
-
}
|
|
153
|
-
|
|
154
|
-
output.writeln();
|
|
155
|
-
}
|
|
156
|
-
|
|
157
|
-
const result = {
|
|
158
|
-
target,
|
|
159
|
-
dryRun,
|
|
160
|
-
backup,
|
|
161
|
-
stepsCompleted: steps.length,
|
|
162
|
-
success: true
|
|
163
|
-
};
|
|
164
|
-
|
|
165
|
-
if (dryRun) {
|
|
166
|
-
output.printInfo('Dry run complete. Run without --dry-run to apply changes.');
|
|
167
|
-
} else {
|
|
168
|
-
output.printSuccess('Migration completed successfully');
|
|
169
|
-
}
|
|
170
|
-
|
|
171
|
-
return { success: true, data: result };
|
|
172
|
-
}
|
|
173
|
-
};
|
|
174
|
-
|
|
175
|
-
// Verify migration
|
|
176
|
-
const verifyCommand: Command = {
|
|
177
|
-
name: 'verify',
|
|
178
|
-
description: 'Verify migration integrity',
|
|
179
|
-
options: [
|
|
180
|
-
{
|
|
181
|
-
name: 'fix',
|
|
182
|
-
description: 'Automatically fix issues',
|
|
183
|
-
type: 'boolean',
|
|
184
|
-
default: false
|
|
185
|
-
}
|
|
186
|
-
],
|
|
187
|
-
action: async (ctx: CommandContext): Promise<CommandResult> => {
|
|
188
|
-
const fix = ctx.flags.fix as boolean;
|
|
189
|
-
|
|
190
|
-
output.writeln();
|
|
191
|
-
output.printInfo('Verifying migration...');
|
|
192
|
-
output.writeln();
|
|
193
|
-
|
|
194
|
-
const checks = [
|
|
195
|
-
{ name: 'Configuration Schema', status: 'passed', details: 'V3 schema valid' },
|
|
196
|
-
{ name: 'Memory Data Integrity', status: 'passed', details: 'All entries valid' },
|
|
197
|
-
{ name: 'Agent Configurations', status: 'warning', details: '2 deprecated fields detected' },
|
|
198
|
-
{ name: 'Hook Definitions', status: 'passed', details: 'All hooks registered' },
|
|
199
|
-
{ name: 'File Permissions', status: 'passed', details: 'Correct permissions' },
|
|
200
|
-
{ name: 'Dependencies', status: 'passed', details: 'All dependencies available' }
|
|
201
|
-
];
|
|
202
|
-
|
|
203
|
-
output.printTable({
|
|
204
|
-
columns: [
|
|
205
|
-
{ key: 'name', header: 'Check', width: 25 },
|
|
206
|
-
{ key: 'status', header: 'Status', width: 12, format: (v) => {
|
|
207
|
-
if (v === 'passed') return output.success('PASSED');
|
|
208
|
-
if (v === 'warning') return output.warning('WARNING');
|
|
209
|
-
return output.error('FAILED');
|
|
210
|
-
}},
|
|
211
|
-
{ key: 'details', header: 'Details', width: 30 }
|
|
212
|
-
],
|
|
213
|
-
data: checks
|
|
214
|
-
});
|
|
215
|
-
|
|
216
|
-
const hasIssues = checks.some(c => c.status !== 'passed');
|
|
217
|
-
|
|
218
|
-
output.writeln();
|
|
219
|
-
|
|
220
|
-
if (hasIssues) {
|
|
221
|
-
if (fix) {
|
|
222
|
-
output.printInfo('Attempting to fix issues...');
|
|
223
|
-
output.printSuccess('Issues fixed');
|
|
224
|
-
} else {
|
|
225
|
-
output.printWarning('Some issues detected. Run with --fix to attempt automatic fixes.');
|
|
226
|
-
}
|
|
227
|
-
} else {
|
|
228
|
-
output.printSuccess('All verification checks passed');
|
|
229
|
-
}
|
|
230
|
-
|
|
231
|
-
return { success: true, data: { checks, hasIssues } };
|
|
232
|
-
}
|
|
233
|
-
};
|
|
234
|
-
|
|
235
|
-
// Rollback migration
|
|
236
|
-
const rollbackCommand: Command = {
|
|
237
|
-
name: 'rollback',
|
|
238
|
-
description: 'Rollback to previous version',
|
|
239
|
-
options: [
|
|
240
|
-
{
|
|
241
|
-
name: 'backup-id',
|
|
242
|
-
description: 'Backup ID to restore',
|
|
243
|
-
type: 'string'
|
|
244
|
-
},
|
|
245
|
-
{
|
|
246
|
-
name: 'force',
|
|
247
|
-
short: 'f',
|
|
248
|
-
description: 'Skip confirmation',
|
|
249
|
-
type: 'boolean',
|
|
250
|
-
default: false
|
|
251
|
-
}
|
|
252
|
-
],
|
|
253
|
-
action: async (ctx: CommandContext): Promise<CommandResult> => {
|
|
254
|
-
const backupId = ctx.flags.backupId as string;
|
|
255
|
-
const force = ctx.flags.force as boolean;
|
|
256
|
-
|
|
257
|
-
// List available backups
|
|
258
|
-
const backups = [
|
|
259
|
-
{ id: 'backup-1704369600', date: '2024-01-04 10:00:00', size: '45.2 MB' },
|
|
260
|
-
{ id: 'backup-1704283200', date: '2024-01-03 10:00:00', size: '44.8 MB' },
|
|
261
|
-
{ id: 'backup-1704196800', date: '2024-01-02 10:00:00', size: '43.5 MB' }
|
|
262
|
-
];
|
|
263
|
-
|
|
264
|
-
if (!backupId && ctx.interactive) {
|
|
265
|
-
output.writeln();
|
|
266
|
-
output.writeln(output.bold('Available Backups'));
|
|
267
|
-
output.writeln();
|
|
268
|
-
|
|
269
|
-
output.printTable({
|
|
270
|
-
columns: [
|
|
271
|
-
{ key: 'id', header: 'Backup ID', width: 20 },
|
|
272
|
-
{ key: 'date', header: 'Date', width: 22 },
|
|
273
|
-
{ key: 'size', header: 'Size', width: 12, align: 'right' }
|
|
274
|
-
],
|
|
275
|
-
data: backups
|
|
276
|
-
});
|
|
277
|
-
|
|
278
|
-
output.writeln();
|
|
279
|
-
|
|
280
|
-
const confirmed = await confirm({
|
|
281
|
-
message: `Rollback to most recent backup (${backups[0].id})?`,
|
|
282
|
-
default: false
|
|
283
|
-
});
|
|
284
|
-
|
|
285
|
-
if (!confirmed) {
|
|
286
|
-
output.printInfo('Operation cancelled');
|
|
287
|
-
return { success: true };
|
|
288
|
-
}
|
|
289
|
-
}
|
|
290
|
-
|
|
291
|
-
const targetBackup = backupId || backups[0].id;
|
|
292
|
-
|
|
293
|
-
if (!force && !ctx.interactive) {
|
|
294
|
-
output.printError('Use --force to rollback without confirmation');
|
|
295
|
-
return { success: false, exitCode: 1 };
|
|
296
|
-
}
|
|
297
|
-
|
|
298
|
-
output.writeln();
|
|
299
|
-
output.printInfo(`Rolling back to ${targetBackup}...`);
|
|
300
|
-
output.writeln();
|
|
301
|
-
|
|
302
|
-
output.writeln(output.dim(' Stopping services...'));
|
|
303
|
-
output.writeln(output.dim(' Restoring configuration...'));
|
|
304
|
-
output.writeln(output.dim(' Restoring memory data...'));
|
|
305
|
-
output.writeln(output.dim(' Restoring agent configs...'));
|
|
306
|
-
output.writeln(output.dim(' Verifying integrity...'));
|
|
307
|
-
|
|
308
|
-
output.writeln();
|
|
309
|
-
output.printSuccess(`Rolled back to ${targetBackup}`);
|
|
310
|
-
output.writeln(output.dim(' Note: Restart services to apply changes'));
|
|
311
|
-
|
|
312
|
-
return { success: true, data: { backupId: targetBackup, rolledBack: true } };
|
|
313
|
-
}
|
|
314
|
-
};
|
|
315
|
-
|
|
316
|
-
// Breaking changes info
|
|
317
|
-
const breakingCommand: Command = {
|
|
318
|
-
name: 'breaking',
|
|
319
|
-
description: 'Show V3 breaking changes',
|
|
320
|
-
action: async (ctx: CommandContext): Promise<CommandResult> => {
|
|
321
|
-
const changes = [
|
|
322
|
-
{
|
|
323
|
-
category: 'Configuration',
|
|
324
|
-
changes: [
|
|
325
|
-
{ change: 'Config file renamed', from: 'claude-flow.json', to: 'claude-flow.config.json' },
|
|
326
|
-
{ change: 'Swarm config restructured', from: 'swarm.mode', to: 'swarm.topology' },
|
|
327
|
-
{ change: 'Provider config format', from: 'provider: "anthropic"', to: 'providers: [...]' }
|
|
328
|
-
]
|
|
329
|
-
},
|
|
330
|
-
{
|
|
331
|
-
category: 'Memory',
|
|
332
|
-
changes: [
|
|
333
|
-
{ change: 'Backend option changed', from: 'memory: { type }', to: 'memory: { backend }' },
|
|
334
|
-
{ change: 'HNSW enabled by default', from: 'Manual opt-in', to: 'Auto-enabled' },
|
|
335
|
-
{ change: 'Storage path changed', from: '.claude-flow/memory', to: 'data/memory' }
|
|
336
|
-
]
|
|
337
|
-
},
|
|
338
|
-
{
|
|
339
|
-
category: 'CLI',
|
|
340
|
-
changes: [
|
|
341
|
-
{ change: 'Agent command renamed', from: 'spawn <type>', to: 'agent spawn -t <type>' },
|
|
342
|
-
{ change: 'Memory command added', from: 'N/A', to: 'memory <subcommand>' },
|
|
343
|
-
{ change: 'Hook command enhanced', from: 'hook <type>', to: 'hooks <subcommand>' }
|
|
344
|
-
]
|
|
345
|
-
},
|
|
346
|
-
{
|
|
347
|
-
category: 'API',
|
|
348
|
-
changes: [
|
|
349
|
-
{ change: 'Removed Deno support', from: 'Deno + Node.js', to: 'Node.js 20+ only' },
|
|
350
|
-
{ change: 'Event system changed', from: 'EventEmitter', to: 'Event sourcing' },
|
|
351
|
-
{ change: 'Coordination unified', from: 'Multiple coordinators', to: 'SwarmCoordinator' }
|
|
352
|
-
]
|
|
353
|
-
}
|
|
354
|
-
];
|
|
355
|
-
|
|
356
|
-
if (ctx.flags.format === 'json') {
|
|
357
|
-
output.printJson(changes);
|
|
358
|
-
return { success: true, data: changes };
|
|
359
|
-
}
|
|
360
|
-
|
|
361
|
-
output.writeln();
|
|
362
|
-
output.writeln(output.bold('V3 Breaking Changes'));
|
|
363
|
-
output.writeln();
|
|
364
|
-
|
|
365
|
-
for (const category of changes) {
|
|
366
|
-
output.writeln(output.highlight(category.category));
|
|
367
|
-
output.printTable({
|
|
368
|
-
columns: [
|
|
369
|
-
{ key: 'change', header: 'Change', width: 25 },
|
|
370
|
-
{ key: 'from', header: 'V2', width: 25 },
|
|
371
|
-
{ key: 'to', header: 'V3', width: 25 }
|
|
372
|
-
],
|
|
373
|
-
data: category.changes,
|
|
374
|
-
border: false
|
|
375
|
-
});
|
|
376
|
-
output.writeln();
|
|
377
|
-
}
|
|
378
|
-
|
|
379
|
-
output.printInfo('Run "claude-flow migrate run" to automatically handle these changes');
|
|
380
|
-
|
|
381
|
-
return { success: true, data: changes };
|
|
382
|
-
}
|
|
383
|
-
};
|
|
384
|
-
|
|
385
|
-
// Main migrate command
|
|
386
|
-
export const migrateCommand: Command = {
|
|
387
|
-
name: 'migrate',
|
|
388
|
-
description: 'V2 to V3 migration tools',
|
|
389
|
-
subcommands: [statusCommand, runCommand, verifyCommand, rollbackCommand, breakingCommand],
|
|
390
|
-
options: [],
|
|
391
|
-
examples: [
|
|
392
|
-
{ command: 'claude-flow migrate status', description: 'Check migration status' },
|
|
393
|
-
{ command: 'claude-flow migrate run --dry-run', description: 'Preview migration' },
|
|
394
|
-
{ command: 'claude-flow migrate run -t all', description: 'Run full migration' }
|
|
395
|
-
],
|
|
396
|
-
action: async (ctx: CommandContext): Promise<CommandResult> => {
|
|
397
|
-
output.writeln();
|
|
398
|
-
output.writeln(output.bold('V2 to V3 Migration Tools'));
|
|
399
|
-
output.writeln();
|
|
400
|
-
output.writeln('Usage: claude-flow migrate <subcommand> [options]');
|
|
401
|
-
output.writeln();
|
|
402
|
-
output.writeln('Subcommands:');
|
|
403
|
-
output.printList([
|
|
404
|
-
`${output.highlight('status')} - Check migration status`,
|
|
405
|
-
`${output.highlight('run')} - Run migration`,
|
|
406
|
-
`${output.highlight('verify')} - Verify migration integrity`,
|
|
407
|
-
`${output.highlight('rollback')} - Rollback to previous version`,
|
|
408
|
-
`${output.highlight('breaking')} - Show breaking changes`
|
|
409
|
-
]);
|
|
410
|
-
|
|
411
|
-
return { success: true };
|
|
412
|
-
}
|
|
413
|
-
};
|
|
414
|
-
|
|
415
|
-
// Helper functions
|
|
416
|
-
function formatMigrationStatus(status: string): string {
|
|
417
|
-
switch (status) {
|
|
418
|
-
case 'migrated':
|
|
419
|
-
case 'passed':
|
|
420
|
-
return output.success(status);
|
|
421
|
-
case 'pending':
|
|
422
|
-
case 'partial':
|
|
423
|
-
return output.warning(status);
|
|
424
|
-
case 'failed':
|
|
425
|
-
return output.error(status);
|
|
426
|
-
case 'not-required':
|
|
427
|
-
return output.dim(status);
|
|
428
|
-
default:
|
|
429
|
-
return status;
|
|
430
|
-
}
|
|
431
|
-
}
|
|
432
|
-
|
|
433
|
-
function getMigrationSteps(target: string): Array<{ name: string; description: string; source: string; dest: string }> {
|
|
434
|
-
const allSteps = [
|
|
435
|
-
{ name: 'Configuration Files', description: 'Migrate config schema to V3 format', source: './claude-flow.json', dest: './claude-flow.config.json' },
|
|
436
|
-
{ name: 'Memory Backend', description: 'Upgrade to hybrid backend with AgentDB', source: './.claude-flow/memory', dest: './data/memory' },
|
|
437
|
-
{ name: 'Agent Definitions', description: 'Convert agent configs to V3 format', source: './.claude-flow/agents', dest: './v3/agents' },
|
|
438
|
-
{ name: 'Hook Registry', description: 'Migrate hooks to V3 hook system', source: './src/hooks', dest: './v3/hooks' },
|
|
439
|
-
{ name: 'Workflow Definitions', description: 'Convert workflows to event-sourced format', source: './.claude-flow/workflows', dest: './data/workflows' }
|
|
440
|
-
];
|
|
441
|
-
|
|
442
|
-
if (target === 'all') return allSteps;
|
|
443
|
-
|
|
444
|
-
return allSteps.filter(s => s.name.toLowerCase().includes(target.toLowerCase()));
|
|
445
|
-
}
|
|
446
|
-
|
|
447
|
-
export default migrateCommand;
|