claude-flow 2.5.0-alpha.137 → 2.5.0-alpha.139

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (59) hide show
  1. package/bin/claude-flow +1 -1
  2. package/dist/src/cli/commands/checkpoint.js +156 -0
  3. package/dist/src/cli/commands/checkpoint.js.map +1 -0
  4. package/dist/src/cli/commands/hive-mind/pause.js +9 -2
  5. package/dist/src/cli/commands/hive-mind/pause.js.map +1 -1
  6. package/dist/src/cli/commands/index.js +114 -1
  7. package/dist/src/cli/commands/index.js.map +1 -1
  8. package/dist/src/cli/commands/swarm-spawn.js +33 -5
  9. package/dist/src/cli/commands/swarm-spawn.js.map +1 -1
  10. package/dist/src/cli/help-formatter.js +3 -5
  11. package/dist/src/cli/help-formatter.js.map +1 -1
  12. package/dist/src/cli/help-text.js +2 -16
  13. package/dist/src/cli/help-text.js.map +1 -1
  14. package/dist/src/cli/simple-cli.js +166 -61
  15. package/dist/src/cli/simple-cli.js.map +1 -1
  16. package/dist/src/cli/simple-commands/init/templates/enhanced-templates.js +1 -1
  17. package/dist/src/cli/simple-commands/init/templates/enhanced-templates.js.map +1 -1
  18. package/dist/src/cli/validation-helper.js.map +1 -1
  19. package/dist/src/hooks/index.js +3 -0
  20. package/dist/src/hooks/index.js.map +1 -1
  21. package/dist/src/mcp/claude-flow-tools.js +150 -205
  22. package/dist/src/mcp/claude-flow-tools.js.map +1 -1
  23. package/dist/src/mcp/mcp-server.js +0 -125
  24. package/dist/src/mcp/mcp-server.js.map +1 -1
  25. package/dist/src/memory/swarm-memory.js +340 -421
  26. package/dist/src/memory/swarm-memory.js.map +1 -1
  27. package/dist/src/sdk/checkpoint-manager.js +237 -0
  28. package/dist/src/sdk/checkpoint-manager.js.map +1 -0
  29. package/dist/src/sdk/claude-flow-mcp-integration.js +221 -0
  30. package/dist/src/sdk/claude-flow-mcp-integration.js.map +1 -0
  31. package/dist/src/sdk/in-process-mcp.js +374 -0
  32. package/dist/src/sdk/in-process-mcp.js.map +1 -0
  33. package/dist/src/sdk/query-control.js +139 -293
  34. package/dist/src/sdk/query-control.js.map +1 -1
  35. package/dist/src/sdk/session-forking.js +129 -206
  36. package/dist/src/sdk/session-forking.js.map +1 -1
  37. package/dist/src/sdk/validation-demo.js +369 -0
  38. package/dist/src/sdk/validation-demo.js.map +1 -0
  39. package/dist/src/utils/metrics-reader.js +39 -37
  40. package/dist/src/utils/metrics-reader.js.map +1 -1
  41. package/package.json +1 -1
  42. package/scripts/validate-sdk-integration.ts +188 -0
  43. package/src/cli/commands/checkpoint.ts +220 -0
  44. package/src/cli/commands/hive-mind/pause.ts +15 -2
  45. package/src/cli/commands/index.ts +84 -1
  46. package/src/cli/commands/swarm-spawn.ts +47 -3
  47. package/src/cli/help-text.js +2 -16
  48. package/src/cli/simple-cli.ts +1 -0
  49. package/src/cli/simple-commands/init/templates/enhanced-templates.js +1 -1
  50. package/src/cli/simple-commands/init/templates/settings.json +1 -1
  51. package/src/hooks/index.ts +5 -0
  52. package/src/mcp/claude-flow-tools.ts +120 -203
  53. package/src/mcp/mcp-server.js +0 -86
  54. package/src/sdk/checkpoint-manager.ts +403 -0
  55. package/src/sdk/claude-flow-mcp-integration.ts +387 -0
  56. package/src/sdk/in-process-mcp.ts +489 -0
  57. package/src/sdk/query-control.ts +223 -377
  58. package/src/sdk/session-forking.ts +207 -312
  59. package/src/sdk/validation-demo.ts +544 -0
package/bin/claude-flow CHANGED
@@ -1,7 +1,7 @@
1
1
  #!/bin/sh
2
2
  # Claude-Flow Smart Dispatcher - Detects and uses the best available runtime
3
3
 
4
- VERSION="2.5.0-alpha.137"
4
+ VERSION="2.5.0-alpha.139"
5
5
 
6
6
  # Determine the correct path based on how the script is invoked
7
7
  if [ -L "$0" ]; then
@@ -0,0 +1,156 @@
1
+ #!/usr/bin/env node
2
+ import { Command } from './commander-fix.js';
3
+ import chalk from 'chalk';
4
+ import { checkpointManager } from '../../sdk/checkpoint-manager.js';
5
+ import Table from 'cli-table3';
6
+ import inquirer from 'inquirer';
7
+ export const checkpointCommand = new Command().name('checkpoint').description('Manage session checkpoints (Git-like time travel for AI sessions)').action(()=>{
8
+ checkpointCommand.help();
9
+ });
10
+ checkpointCommand.command('create').description('Create a checkpoint for a session').argument('<session-id>', 'Session ID to checkpoint').argument("[description]", "Checkpoint description").action(async (sessionId, description)=>{
11
+ try {
12
+ console.log(chalk.cyan(`Creating checkpoint for session: ${sessionId}`));
13
+ const checkpointId = await checkpointManager.createCheckpoint(sessionId, description || `Manual checkpoint at ${new Date().toLocaleString()}`);
14
+ console.log(chalk.green('✓ Checkpoint created'));
15
+ console.log(`${chalk.white('ID:')} ${checkpointId}`);
16
+ console.log(`${chalk.white('Session:')} ${sessionId}`);
17
+ console.log(`${chalk.white("Description:")} ${description || '(auto-generated)'}`);
18
+ console.log(chalk.gray(` Use 'claude-flow checkpoint rollback ${checkpointId}' to restore`));
19
+ } catch (error) {
20
+ console.error(chalk.red('Failed to create checkpoint:'), error.message);
21
+ process.exit(1);
22
+ }
23
+ });
24
+ checkpointCommand.command('list').description('List checkpoints for a session').argument('<session-id>', 'Session ID').option('--format <format>', 'Output format (table, json)', 'table').action(async (sessionId, options)=>{
25
+ try {
26
+ const checkpoints = checkpointManager.listCheckpoints(sessionId);
27
+ if (checkpoints.length === 0) {
28
+ console.log(chalk.gray(`No checkpoints found for session: ${sessionId}`));
29
+ return;
30
+ }
31
+ if (options.format === 'json') {
32
+ console.log(JSON.stringify(checkpoints, null, 2));
33
+ return;
34
+ }
35
+ console.log(chalk.cyan.bold(`Checkpoints for ${sessionId} (${checkpoints.length})`));
36
+ console.log('─'.repeat(80));
37
+ const table = new Table({
38
+ head: [
39
+ 'ID',
40
+ "Description",
41
+ 'Messages',
42
+ 'Tokens',
43
+ 'Files',
44
+ 'Created'
45
+ ]
46
+ });
47
+ for (const cp of checkpoints){
48
+ table.push([
49
+ chalk.gray(cp.id.substring(0, 8) + '...'),
50
+ cp.description.substring(0, 30) + (cp.description.length > 30 ? '...' : ''),
51
+ cp.messageCount.toString(),
52
+ cp.totalTokens.toString(),
53
+ cp.filesModified.length.toString(),
54
+ new Date(cp.timestamp).toLocaleString()
55
+ ]);
56
+ }
57
+ console.log(table.toString());
58
+ } catch (error) {
59
+ console.error(chalk.red('Failed to list checkpoints:'), error.message);
60
+ process.exit(1);
61
+ }
62
+ });
63
+ checkpointCommand.command('info').description('Show detailed checkpoint information').argument('<checkpoint-id>', 'Checkpoint ID').action(async (checkpointId)=>{
64
+ try {
65
+ const checkpoint = checkpointManager.getCheckpoint(checkpointId);
66
+ if (!checkpoint) {
67
+ console.error(chalk.red(`Checkpoint '${checkpointId}' not found`));
68
+ process.exit(1);
69
+ }
70
+ console.log(chalk.cyan.bold('Checkpoint Information'));
71
+ console.log('─'.repeat(50));
72
+ console.log(`${chalk.white('ID:')} ${checkpoint.id}`);
73
+ console.log(`${chalk.white('Session:')} ${checkpoint.sessionId}`);
74
+ console.log(`${chalk.white("Description:")} ${checkpoint.description}`);
75
+ console.log(`${chalk.white('Created:')} ${new Date(checkpoint.timestamp).toLocaleString()}`);
76
+ console.log();
77
+ console.log(chalk.cyan.bold('Statistics'));
78
+ console.log('─'.repeat(50));
79
+ console.log(`${chalk.white('Messages:')} ${checkpoint.messageCount}`);
80
+ console.log(`${chalk.white('Total Tokens:')} ${checkpoint.totalTokens}`);
81
+ console.log(`${chalk.white('Files Modified:')} ${checkpoint.filesModified.length}`);
82
+ if (checkpoint.filesModified.length > 0) {
83
+ console.log();
84
+ console.log(chalk.cyan.bold('Modified Files'));
85
+ console.log('─'.repeat(50));
86
+ for (const file of checkpoint.filesModified){
87
+ console.log(` • ${file}`);
88
+ }
89
+ }
90
+ } catch (error) {
91
+ console.error(chalk.red('Failed to show checkpoint info:'), error.message);
92
+ process.exit(1);
93
+ }
94
+ });
95
+ checkpointCommand.command('rollback').description('Rollback session to a checkpoint (Git-like time travel)').argument('<checkpoint-id>', 'Checkpoint ID to restore').option('-p, --prompt <prompt>', 'Continue prompt after rollback').option('-f, --force', 'Skip confirmation').action(async (checkpointId, options)=>{
96
+ try {
97
+ const checkpoint = checkpointManager.getCheckpoint(checkpointId);
98
+ if (!checkpoint) {
99
+ console.error(chalk.red(`Checkpoint '${checkpointId}' not found`));
100
+ process.exit(1);
101
+ }
102
+ console.log(chalk.cyan.bold('Checkpoint to restore:'));
103
+ console.log(`${chalk.white("Description:")} ${checkpoint.description}`);
104
+ console.log(`${chalk.white('Created:')} ${new Date(checkpoint.timestamp).toLocaleString()}`);
105
+ console.log(`${chalk.white('Messages:')} ${checkpoint.messageCount}`);
106
+ console.log(`${chalk.white('Files:')} ${checkpoint.filesModified.length}`);
107
+ if (!options.force) {
108
+ const { confirmed } = await inquirer.prompt({
109
+ type: 'confirm',
110
+ name: 'confirmed',
111
+ message: 'Rollback to this checkpoint? (Current progress will be lost)',
112
+ default: false
113
+ });
114
+ if (!confirmed) {
115
+ console.log(chalk.gray('Rollback cancelled'));
116
+ return;
117
+ }
118
+ }
119
+ console.log(chalk.yellow('Rolling back...'));
120
+ console.log(chalk.blue(' • Using SDK resumeSessionAt to rewind'));
121
+ await checkpointManager.rollbackToCheckpoint(checkpointId, options.prompt || 'Continue from checkpoint');
122
+ console.log(chalk.green('✓ Rolled back to checkpoint successfully'));
123
+ console.log(chalk.gray(' Session rewound to exact point using SDK'));
124
+ } catch (error) {
125
+ console.error(chalk.red('Failed to rollback:'), error.message);
126
+ process.exit(1);
127
+ }
128
+ });
129
+ checkpointCommand.command('delete').description('Delete a checkpoint').argument('<checkpoint-id>', 'Checkpoint ID').option('-f, --force', 'Skip confirmation').action(async (checkpointId, options)=>{
130
+ try {
131
+ const checkpoint = checkpointManager.getCheckpoint(checkpointId);
132
+ if (!checkpoint) {
133
+ console.error(chalk.red(`Checkpoint '${checkpointId}' not found`));
134
+ process.exit(1);
135
+ }
136
+ if (!options.force) {
137
+ const { confirmed } = await inquirer.prompt({
138
+ type: 'confirm',
139
+ name: 'confirmed',
140
+ message: `Delete checkpoint '${checkpoint.description}'?`,
141
+ default: false
142
+ });
143
+ if (!confirmed) {
144
+ console.log(chalk.gray('Delete cancelled'));
145
+ return;
146
+ }
147
+ }
148
+ await checkpointManager.deleteCheckpoint(checkpointId);
149
+ console.log(chalk.green('✓ Checkpoint deleted'));
150
+ } catch (error) {
151
+ console.error(chalk.red('Failed to delete checkpoint:'), error.message);
152
+ process.exit(1);
153
+ }
154
+ });
155
+
156
+ //# sourceMappingURL=checkpoint.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../src/cli/commands/checkpoint.ts"],"sourcesContent":["#!/usr/bin/env node\n/**\n * Checkpoint Management Commands\n * Uses SDK checkpoint manager for Git-like checkpointing\n */\n\nimport { Command } from './commander-fix.js';\nimport chalk from 'chalk';\nimport { checkpointManager } from '../../sdk/checkpoint-manager.js';\nimport Table from 'cli-table3';\nimport inquirer from 'inquirer';\n\nexport const checkpointCommand = new Command()\n .name('checkpoint')\n .description('Manage session checkpoints (Git-like time travel for AI sessions)')\n .action(() => {\n checkpointCommand.help();\n });\n\n// Create checkpoint\ncheckpointCommand\n .command('create')\n .description('Create a checkpoint for a session')\n .argument('<session-id>', 'Session ID to checkpoint')\n .argument('[description]', 'Checkpoint description')\n .action(async (sessionId: string, description?: string) => {\n try {\n console.log(chalk.cyan(`Creating checkpoint for session: ${sessionId}`));\n\n const checkpointId = await checkpointManager.createCheckpoint(\n sessionId,\n description || `Manual checkpoint at ${new Date().toLocaleString()}`\n );\n\n console.log(chalk.green('✓ Checkpoint created'));\n console.log(`${chalk.white('ID:')} ${checkpointId}`);\n console.log(`${chalk.white('Session:')} ${sessionId}`);\n console.log(`${chalk.white('Description:')} ${description || '(auto-generated)'}`);\n console.log(chalk.gray(` Use 'claude-flow checkpoint rollback ${checkpointId}' to restore`));\n } catch (error) {\n console.error(chalk.red('Failed to create checkpoint:'), (error as Error).message);\n process.exit(1);\n }\n });\n\n// List checkpoints\ncheckpointCommand\n .command('list')\n .description('List checkpoints for a session')\n .argument('<session-id>', 'Session ID')\n .option('--format <format>', 'Output format (table, json)', 'table')\n .action(async (sessionId: string, options: any) => {\n try {\n const checkpoints = checkpointManager.listCheckpoints(sessionId);\n\n if (checkpoints.length === 0) {\n console.log(chalk.gray(`No checkpoints found for session: ${sessionId}`));\n return;\n }\n\n if (options.format === 'json') {\n console.log(JSON.stringify(checkpoints, null, 2));\n return;\n }\n\n console.log(chalk.cyan.bold(`Checkpoints for ${sessionId} (${checkpoints.length})`));\n console.log('─'.repeat(80));\n\n const table = new Table({\n head: ['ID', 'Description', 'Messages', 'Tokens', 'Files', 'Created'],\n });\n\n for (const cp of checkpoints) {\n table.push([\n chalk.gray(cp.id.substring(0, 8) + '...'),\n cp.description.substring(0, 30) + (cp.description.length > 30 ? '...' : ''),\n cp.messageCount.toString(),\n cp.totalTokens.toString(),\n cp.filesModified.length.toString(),\n new Date(cp.timestamp).toLocaleString(),\n ]);\n }\n\n console.log(table.toString());\n } catch (error) {\n console.error(chalk.red('Failed to list checkpoints:'), (error as Error).message);\n process.exit(1);\n }\n });\n\n// Get checkpoint info\ncheckpointCommand\n .command('info')\n .description('Show detailed checkpoint information')\n .argument('<checkpoint-id>', 'Checkpoint ID')\n .action(async (checkpointId: string) => {\n try {\n const checkpoint = checkpointManager.getCheckpoint(checkpointId);\n\n if (!checkpoint) {\n console.error(chalk.red(`Checkpoint '${checkpointId}' not found`));\n process.exit(1);\n }\n\n console.log(chalk.cyan.bold('Checkpoint Information'));\n console.log('─'.repeat(50));\n console.log(`${chalk.white('ID:')} ${checkpoint.id}`);\n console.log(`${chalk.white('Session:')} ${checkpoint.sessionId}`);\n console.log(`${chalk.white('Description:')} ${checkpoint.description}`);\n console.log(`${chalk.white('Created:')} ${new Date(checkpoint.timestamp).toLocaleString()}`);\n console.log();\n\n console.log(chalk.cyan.bold('Statistics'));\n console.log('─'.repeat(50));\n console.log(`${chalk.white('Messages:')} ${checkpoint.messageCount}`);\n console.log(`${chalk.white('Total Tokens:')} ${checkpoint.totalTokens}`);\n console.log(`${chalk.white('Files Modified:')} ${checkpoint.filesModified.length}`);\n\n if (checkpoint.filesModified.length > 0) {\n console.log();\n console.log(chalk.cyan.bold('Modified Files'));\n console.log('─'.repeat(50));\n for (const file of checkpoint.filesModified) {\n console.log(` • ${file}`);\n }\n }\n } catch (error) {\n console.error(chalk.red('Failed to show checkpoint info:'), (error as Error).message);\n process.exit(1);\n }\n });\n\n// Rollback to checkpoint\ncheckpointCommand\n .command('rollback')\n .description('Rollback session to a checkpoint (Git-like time travel)')\n .argument('<checkpoint-id>', 'Checkpoint ID to restore')\n .option('-p, --prompt <prompt>', 'Continue prompt after rollback')\n .option('-f, --force', 'Skip confirmation')\n .action(async (checkpointId: string, options: any) => {\n try {\n const checkpoint = checkpointManager.getCheckpoint(checkpointId);\n\n if (!checkpoint) {\n console.error(chalk.red(`Checkpoint '${checkpointId}' not found`));\n process.exit(1);\n }\n\n console.log(chalk.cyan.bold('Checkpoint to restore:'));\n console.log(`${chalk.white('Description:')} ${checkpoint.description}`);\n console.log(`${chalk.white('Created:')} ${new Date(checkpoint.timestamp).toLocaleString()}`);\n console.log(`${chalk.white('Messages:')} ${checkpoint.messageCount}`);\n console.log(`${chalk.white('Files:')} ${checkpoint.filesModified.length}`);\n\n if (!options.force) {\n const { confirmed } = await inquirer.prompt({\n type: 'confirm',\n name: 'confirmed',\n message: 'Rollback to this checkpoint? (Current progress will be lost)',\n default: false,\n });\n\n if (!confirmed) {\n console.log(chalk.gray('Rollback cancelled'));\n return;\n }\n }\n\n console.log(chalk.yellow('Rolling back...'));\n console.log(chalk.blue(' • Using SDK resumeSessionAt to rewind'));\n\n await checkpointManager.rollbackToCheckpoint(\n checkpointId,\n options.prompt || 'Continue from checkpoint'\n );\n\n console.log(chalk.green('✓ Rolled back to checkpoint successfully'));\n console.log(chalk.gray(' Session rewound to exact point using SDK'));\n } catch (error) {\n console.error(chalk.red('Failed to rollback:'), (error as Error).message);\n process.exit(1);\n }\n });\n\n// Delete checkpoint\ncheckpointCommand\n .command('delete')\n .description('Delete a checkpoint')\n .argument('<checkpoint-id>', 'Checkpoint ID')\n .option('-f, --force', 'Skip confirmation')\n .action(async (checkpointId: string, options: any) => {\n try {\n const checkpoint = checkpointManager.getCheckpoint(checkpointId);\n\n if (!checkpoint) {\n console.error(chalk.red(`Checkpoint '${checkpointId}' not found`));\n process.exit(1);\n }\n\n if (!options.force) {\n const { confirmed } = await inquirer.prompt({\n type: 'confirm',\n name: 'confirmed',\n message: `Delete checkpoint '${checkpoint.description}'?`,\n default: false,\n });\n\n if (!confirmed) {\n console.log(chalk.gray('Delete cancelled'));\n return;\n }\n }\n\n await checkpointManager.deleteCheckpoint(checkpointId);\n console.log(chalk.green('✓ Checkpoint deleted'));\n } catch (error) {\n console.error(chalk.red('Failed to delete checkpoint:'), (error as Error).message);\n process.exit(1);\n }\n });\n"],"names":["Command","chalk","checkpointManager","Table","inquirer","checkpointCommand","name","description","action","help","command","argument","sessionId","console","log","cyan","checkpointId","createCheckpoint","Date","toLocaleString","green","white","gray","error","red","message","process","exit","option","options","checkpoints","listCheckpoints","length","format","JSON","stringify","bold","repeat","table","head","cp","push","id","substring","messageCount","toString","totalTokens","filesModified","timestamp","checkpoint","getCheckpoint","file","force","confirmed","prompt","type","default","yellow","blue","rollbackToCheckpoint","deleteCheckpoint"],"mappings":"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"}
@@ -3,6 +3,7 @@ import { Command } from '../commander-fix.js';
3
3
  import chalk from 'chalk';
4
4
  import { HiveMindSessionManager } from '../../simple-commands/hive-mind/session-manager.js';
5
5
  import inquirer from 'inquirer';
6
+ import { queryController } from '../../../sdk/query-control.js';
6
7
  export const pauseCommand = new Command('pause').description('Pause active hive mind sessions').option('-s, --session <id>', 'Pause specific session by ID').action(async (options)=>{
7
8
  const sessionManager = new HiveMindSessionManager();
8
9
  try {
@@ -22,10 +23,13 @@ export const pauseCommand = new Command('pause').description('Pause active hive
22
23
  return;
23
24
  }
24
25
  console.log(chalk.cyan(`Pausing session ${sessionId}...`));
26
+ queryController.requestPause(sessionId);
27
+ console.log(chalk.blue(' • SDK pause requested'));
25
28
  const result = await sessionManager.pauseSession(sessionId);
26
29
  if (result) {
27
30
  console.log(chalk.green(`✓ Session ${sessionId} paused successfully`));
28
- console.log(chalk.gray(`Use 'claude-flow hive-mind resume -s ${sessionId}' to resume`));
31
+ console.log(chalk.gray(` Pause state saved to disk (can resume across restarts)`));
32
+ console.log(chalk.gray(` Use 'claude-flow hive-mind resume -s ${sessionId}' to resume`));
29
33
  } else {
30
34
  console.log(chalk.red(`Failed to pause session ${sessionId}`));
31
35
  }
@@ -48,10 +52,13 @@ export const pauseCommand = new Command('pause').description('Pause active hive
48
52
  }
49
53
  ]);
50
54
  console.log(chalk.cyan(`Pausing session ${sessionId}...`));
55
+ queryController.requestPause(sessionId);
56
+ console.log(chalk.blue(' • SDK pause requested'));
51
57
  const result = await sessionManager.pauseSession(sessionId);
52
58
  if (result) {
53
59
  console.log(chalk.green(`✓ Session paused successfully`));
54
- console.log(chalk.gray(`Use 'claude-flow hive-mind resume -s ${sessionId}' to resume`));
60
+ console.log(chalk.gray(` Pause state saved to disk (can resume across restarts)`));
61
+ console.log(chalk.gray(` Use 'claude-flow hive-mind resume -s ${sessionId}' to resume`));
55
62
  } else {
56
63
  console.log(chalk.red(`Failed to pause session`));
57
64
  }
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../src/cli/commands/hive-mind/pause.ts"],"sourcesContent":["#!/usr/bin/env node\n/**\n * Hive Mind Pause Command\n *\n * Pause active swarm sessions\n */\n\nimport { Command } from '../commander-fix.js';\nimport chalk from 'chalk';\nimport { HiveMindSessionManager } from '../../simple-commands/hive-mind/session-manager.js';\nimport inquirer from 'inquirer';\n\nexport const pauseCommand = new Command('pause')\n .description('Pause active hive mind sessions')\n .option('-s, --session <id>', 'Pause specific session by ID')\n .action(async (options) => {\n const sessionManager = new HiveMindSessionManager();\n\n try {\n if (options.session) {\n // Pause specific session\n const sessionId = options.session;\n const session = await sessionManager.getSession(sessionId);\n\n if (!session) {\n console.log(chalk.red(`Session ${sessionId} not found`));\n return;\n }\n\n if ((session as any).status === 'paused') {\n console.log(chalk.yellow(`Session ${sessionId} is already paused`));\n return;\n }\n\n if ((session as any).status !== 'active') {\n console.log(\n chalk.yellow(`Session ${sessionId} is not active (status: ${(session as any).status})`),\n );\n return;\n }\n\n console.log(chalk.cyan(`Pausing session ${sessionId}...`));\n const result = await sessionManager.pauseSession(sessionId);\n\n if (result) {\n console.log(chalk.green(`✓ Session ${sessionId} paused successfully`));\n console.log(chalk.gray(`Use 'claude-flow hive-mind resume -s ${sessionId}' to resume`));\n } else {\n console.log(chalk.red(`Failed to pause session ${sessionId}`));\n }\n } else {\n // Interactive selection\n const sessions = await sessionManager.getActiveSessions();\n const activeSessions = sessions.filter((s: any) => s.status === 'active');\n\n if (activeSessions.length === 0) {\n console.log(chalk.yellow('No active sessions found to pause'));\n return;\n }\n\n const { sessionId } = await inquirer.prompt([\n {\n type: 'list',\n name: 'sessionId',\n message: 'Select session to pause:',\n choices: activeSessions.map((s: any) => ({\n name: `${s.swarm_name} (${s.id}) - ${s.completion_percentage}% complete`,\n value: s.id,\n })),\n },\n ]);\n\n console.log(chalk.cyan(`Pausing session ${sessionId}...`));\n const result = await sessionManager.pauseSession(sessionId);\n\n if (result) {\n console.log(chalk.green(`✓ Session paused successfully`));\n console.log(chalk.gray(`Use 'claude-flow hive-mind resume -s ${sessionId}' to resume`));\n } else {\n console.log(chalk.red(`Failed to pause session`));\n }\n }\n } catch (error) {\n console.error(chalk.red('Error pausing session:'), (error as Error).message);\n process.exit(1);\n } finally {\n sessionManager.close();\n }\n });\n"],"names":["Command","chalk","HiveMindSessionManager","inquirer","pauseCommand","description","option","action","options","sessionManager","session","sessionId","getSession","console","log","red","status","yellow","cyan","result","pauseSession","green","gray","sessions","getActiveSessions","activeSessions","filter","s","length","prompt","type","name","message","choices","map","swarm_name","id","completion_percentage","value","error","process","exit","close"],"mappings":"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"}
1
+ {"version":3,"sources":["../../../../../src/cli/commands/hive-mind/pause.ts"],"sourcesContent":["#!/usr/bin/env node\n/**\n * Hive Mind Pause Command\n *\n * Pause active swarm sessions\n */\n\nimport { Command } from '../commander-fix.js';\nimport chalk from 'chalk';\nimport { HiveMindSessionManager } from '../../simple-commands/hive-mind/session-manager.js';\nimport inquirer from 'inquirer';\nimport { queryController } from '../../../sdk/query-control.js';\n\nexport const pauseCommand = new Command('pause')\n .description('Pause active hive mind sessions')\n .option('-s, --session <id>', 'Pause specific session by ID')\n .action(async (options) => {\n const sessionManager = new HiveMindSessionManager();\n\n try {\n if (options.session) {\n // Pause specific session\n const sessionId = options.session;\n const session = await sessionManager.getSession(sessionId);\n\n if (!session) {\n console.log(chalk.red(`Session ${sessionId} not found`));\n return;\n }\n\n if ((session as any).status === 'paused') {\n console.log(chalk.yellow(`Session ${sessionId} is already paused`));\n return;\n }\n\n if ((session as any).status !== 'active') {\n console.log(\n chalk.yellow(`Session ${sessionId} is not active (status: ${(session as any).status})`),\n );\n return;\n }\n\n console.log(chalk.cyan(`Pausing session ${sessionId}...`));\n\n // Use SDK query controller for REAL pause\n queryController.requestPause(sessionId);\n console.log(chalk.blue(' • SDK pause requested'));\n\n const result = await sessionManager.pauseSession(sessionId);\n\n if (result) {\n console.log(chalk.green(`✓ Session ${sessionId} paused successfully`));\n console.log(chalk.gray(` Pause state saved to disk (can resume across restarts)`));\n console.log(chalk.gray(` Use 'claude-flow hive-mind resume -s ${sessionId}' to resume`));\n } else {\n console.log(chalk.red(`Failed to pause session ${sessionId}`));\n }\n } else {\n // Interactive selection\n const sessions = await sessionManager.getActiveSessions();\n const activeSessions = sessions.filter((s: any) => s.status === 'active');\n\n if (activeSessions.length === 0) {\n console.log(chalk.yellow('No active sessions found to pause'));\n return;\n }\n\n const { sessionId } = await inquirer.prompt([\n {\n type: 'list',\n name: 'sessionId',\n message: 'Select session to pause:',\n choices: activeSessions.map((s: any) => ({\n name: `${s.swarm_name} (${s.id}) - ${s.completion_percentage}% complete`,\n value: s.id,\n })),\n },\n ]);\n\n console.log(chalk.cyan(`Pausing session ${sessionId}...`));\n\n // Use SDK query controller for REAL pause\n queryController.requestPause(sessionId);\n console.log(chalk.blue(' • SDK pause requested'));\n\n const result = await sessionManager.pauseSession(sessionId);\n\n if (result) {\n console.log(chalk.green(`✓ Session paused successfully`));\n console.log(chalk.gray(` Pause state saved to disk (can resume across restarts)`));\n console.log(chalk.gray(` Use 'claude-flow hive-mind resume -s ${sessionId}' to resume`));\n } else {\n console.log(chalk.red(`Failed to pause session`));\n }\n }\n } catch (error) {\n console.error(chalk.red('Error pausing session:'), (error as Error).message);\n process.exit(1);\n } finally {\n sessionManager.close();\n }\n });\n"],"names":["Command","chalk","HiveMindSessionManager","inquirer","queryController","pauseCommand","description","option","action","options","sessionManager","session","sessionId","getSession","console","log","red","status","yellow","cyan","requestPause","blue","result","pauseSession","green","gray","sessions","getActiveSessions","activeSessions","filter","s","length","prompt","type","name","message","choices","map","swarm_name","id","completion_percentage","value","error","process","exit","close"],"mappings":"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"}
@@ -1945,7 +1945,33 @@ Now, please proceed with the task: ${task}`;
1945
1945
  description: 'Show help information',
1946
1946
  action: (ctx)=>{
1947
1947
  const command = ctx.args[0];
1948
- if (command === 'claude') {
1948
+ if (command === 'checkpoint') {
1949
+ console.log(bold(blue('Checkpoint Management (SDK Integration)')));
1950
+ console.log();
1951
+ console.log('Manage session checkpoints with Git-like time travel for AI sessions.');
1952
+ console.log();
1953
+ console.log(bold('Subcommands:'));
1954
+ console.log(" create <session-id> [description] Create checkpoint for session");
1955
+ console.log(' list <session-id> List checkpoints for session');
1956
+ console.log(' info <checkpoint-id> Get checkpoint details');
1957
+ console.log(' rollback <checkpoint-id> Rollback to checkpoint');
1958
+ console.log(' delete <checkpoint-id> Delete checkpoint');
1959
+ console.log();
1960
+ console.log(bold('Examples:'));
1961
+ console.log(` ${blue('claude-flow checkpoint create')} my-session "Before deployment"`);
1962
+ console.log(` ${blue('claude-flow checkpoint list')} my-session`);
1963
+ console.log(` ${blue('claude-flow checkpoint rollback')} cp-abc123`);
1964
+ console.log();
1965
+ console.log(bold('MCP Tools (Available through claude-flow MCP server):'));
1966
+ console.log(' checkpoint/create Create checkpoint via MCP');
1967
+ console.log(' checkpoint/list List checkpoints via MCP');
1968
+ console.log(' checkpoint/rollback Rollback via MCP');
1969
+ console.log(' session/fork Fork session for parallel exploration');
1970
+ console.log(' session/info Get session info');
1971
+ console.log(' query/pause Pause query with SDK');
1972
+ console.log(' query/resume Resume paused query');
1973
+ console.log();
1974
+ } else if (command === 'claude') {
1949
1975
  console.log(bold(blue('Claude Instance Management')));
1950
1976
  console.log();
1951
1977
  console.log('Spawn and manage Claude Code instances with specific configurations.');
@@ -2304,6 +2330,93 @@ Now, please proceed with the task: ${task}`;
2304
2330
  }
2305
2331
  }
2306
2332
  });
2333
+ cli.command({
2334
+ name: 'checkpoint',
2335
+ description: 'Manage session checkpoints (Git-like time travel for AI sessions)',
2336
+ subcommands: [
2337
+ {
2338
+ name: 'create',
2339
+ description: 'Create a checkpoint for a session',
2340
+ action: async (ctx)=>{
2341
+ const { checkpointCommand } = await import('./checkpoint.js');
2342
+ await checkpointCommand.parseAsync([
2343
+ 'node',
2344
+ 'checkpoint',
2345
+ 'create',
2346
+ ...ctx.args
2347
+ ], {
2348
+ from: 'user'
2349
+ });
2350
+ }
2351
+ },
2352
+ {
2353
+ name: 'list',
2354
+ description: 'List checkpoints for a session',
2355
+ action: async (ctx)=>{
2356
+ const { checkpointCommand } = await import('./checkpoint.js');
2357
+ await checkpointCommand.parseAsync([
2358
+ 'node',
2359
+ 'checkpoint',
2360
+ 'list',
2361
+ ...ctx.args
2362
+ ], {
2363
+ from: 'user'
2364
+ });
2365
+ }
2366
+ },
2367
+ {
2368
+ name: 'info',
2369
+ description: 'Get checkpoint information',
2370
+ action: async (ctx)=>{
2371
+ const { checkpointCommand } = await import('./checkpoint.js');
2372
+ await checkpointCommand.parseAsync([
2373
+ 'node',
2374
+ 'checkpoint',
2375
+ 'info',
2376
+ ...ctx.args
2377
+ ], {
2378
+ from: 'user'
2379
+ });
2380
+ }
2381
+ },
2382
+ {
2383
+ name: 'rollback',
2384
+ description: 'Rollback session to a checkpoint',
2385
+ action: async (ctx)=>{
2386
+ const { checkpointCommand } = await import('./checkpoint.js');
2387
+ await checkpointCommand.parseAsync([
2388
+ 'node',
2389
+ 'checkpoint',
2390
+ 'rollback',
2391
+ ...ctx.args
2392
+ ], {
2393
+ from: 'user'
2394
+ });
2395
+ }
2396
+ },
2397
+ {
2398
+ name: 'delete',
2399
+ description: 'Delete a checkpoint',
2400
+ action: async (ctx)=>{
2401
+ const { checkpointCommand } = await import('./checkpoint.js');
2402
+ await checkpointCommand.parseAsync([
2403
+ 'node',
2404
+ 'checkpoint',
2405
+ 'delete',
2406
+ ...ctx.args
2407
+ ], {
2408
+ from: 'user'
2409
+ });
2410
+ }
2411
+ }
2412
+ ],
2413
+ action: async (ctx)=>{
2414
+ if (ctx.args.length === 0) {
2415
+ const { checkpointCommand } = await import('./checkpoint.js');
2416
+ checkpointCommand.help();
2417
+ }
2418
+ }
2419
+ });
2307
2420
  for (const command of enterpriseCommands){
2308
2421
  cli.command(command);
2309
2422
  }